在Makefile中保存生成进程的PID

时间:2014-04-29 13:29:50

标签: makefile pid

我目前有一个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。

2 个答案:

答案 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上)时,它返回“语法错误,出现在意外标记'&&'附近“