我有一个启动Django web服务器的Makefile。我希望服务器在后台启动,并将PID保存到文件中。
我的食谱是这样的:
run: venv
@"${PYTHON}" "${APP}/manage.py" runserver 80直观地说,要对进程进行后台处理并捕获PID,我必须这样做:
run: venv
@"${PYTHON}" "${APP}/manage.py" runserver 80 & ; echo "$$!" > "${LOGDIR}/django.pid"不过,这不起作用。'make‘使用的子shell(在我的例子中是/bin/sh)可以在您使用以下命令时工作:
<command> &...to后台进程,并在使用时工作:
<command> ; <command>(或<command> && <command>等)若要链接命令,请执行以下操作。但是,当我尝试将第一个进程设为后台并链接第二个进程时,我得到了以下错误:
/bin/sh: -c: line 0: syntax error near unexpected token `;'
为进程设置后台并在Makefile中捕获PID的最佳方法是什么?
谢谢
发布于 2012-02-06 07:09:24
只需留下一个“与”号,后面不带分号:
run: venv
@"${PYTHON}" "${APP}/manage.py" runserver 80 & echo "$$!" > "${LOGDIR}/django.pid"与符号充当命令分隔符的方式与分号相同:
<command> & <command>发布于 2012-02-06 06:54:53
如果Make给您带来了太多麻烦,您总是可以让目标启动一个sh脚本;在该脚本中,启动进程、后台,然后将pid输出到一个文件。
https://stackoverflow.com/questions/9153653
复制相似问题