2014-04-29 44 views
8

內節省催生進程的PID我現在有這樣一個Makefile規則:一個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。

回答

19

我不明白你卡在哪裏。 有什麼問題

start: 
    cd bin && { python server.py & echo $$! > server.PID; } 

您也可以使一個pidfile進程文件目標和依賴:「我不明白你在哪裏卡住」

start: server.PID 

server.PID: 
    cd bin && { python server.py & echo $$! > [email protected]; } 

stop: server.PID 
    kill `cat $<` && rm $< 

.PHONY: start stop 
+0

- $$!似乎沒有爲我回報,我會再看看! –

+0

典型的工作吧!我看不到我以前做錯了什麼! - 謝謝! –

+2

也許是因爲'$!'是一個shell變量,而不是一個make變量(比如'$ @'或'$ <'),因此你必須加倍$'。 – reinierpost