所有
我目前正在使用一些makefile,其代码如下:
.PHONY: start-server start-checker kill-server
kill-server:
-pkill -f 'python3 start_server_host.py'
start-server:
nohup python3 start_server_host.py >> server.out 2>&1 &
start-checker:
nohup python3 checker.py ${ARGS} test >> checker.out 2>&1 &
start-checker
需要start-server
。我试图找出如何做的事情:
start-checker:
if not process start_server_host.py
then start-server
nohup python3 checker.py ${ARGS} test >> checker.out 2>&1 &
目标是在未完成时启动start-server
以避免执行此手动操作
答案 0 :(得分:0)
我强烈建议您不要将makefile用于系统管理任务。我知道明显的优点(用于参数处理的最小样板代码)很不错。但我向您保证,迟早会咬你。
回答您的问题:修改check-server
以依赖于start-server
。修改start-server
以创建一个名为start-server
的文件。修改kill-server
以删除文件start-server
现在,如果您执行make start-server
,服务器将启动,并将创建一个名为start-server
的文件。如果您执行make check-server
并且文件start-server
存在,它将不会调用start-server
。如果您执行make kill-server
,则文件start-server
将被删除。如果再次执行make check-server
,则文件start-server
将丢失,start-server
将首先被调用。
当服务器崩溃并且文件start-server
没有被删除时会发生什么?那就是这个makefile sysadmin黑客程序会咬你的时候。
我强烈建议不要将makefile用于sysadmin任务。我更详细地写了一个类似问题的答案:https://unix.stackexchange.com/questions/496793/script-or-makefile-to-automate-new-user-creation/497601#497601