检查makefile中的进程

时间:2017-10-10 05:00:29

标签: makefile

所有

我目前正在使用一些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以避免执行此手动操作

1 个答案:

答案 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