我目前有一个Makefile规则:
start:
./start.sh
启动一个非常简单的服务器,作为构建过程的一部分。我有另一个停止服务器的规则:
stop:
kill `cat bin/server.PID`
这是start.sh脚本:
#!/bin/bash
cd bin
python server.py &
echo $! > server.PID
NB server.py必须从bin目录
中运行我想在启动规则中实现start.sh的功能,我尝试了很多东西,但似乎无法获得PID。
答案 0 :(得分:24)
我不明白你被困在哪里。
有什么问题start:
cd bin && { python server.py & echo $$! > server.PID; }
您还可以将pidfile设为目标和依赖项:
start: server.PID
server.PID:
cd bin && { python server.py & echo $$! > $@; }
stop: server.PID
kill `cat $<` && rm $<
.PHONY: start stop
答案 1 :(得分:0)
@reinierpost的答案对我来说看起来很棒,并且在OSX上也可以正常工作(在我正确地遵循了步骤之后),但是当我尝试(在osx和make上)时,它返回“语法错误,出现在意外标记'&&'附近“