2012-04-20 20 views
1

在我的Makefile中,我有以下殺死所有我跑步nginx的過程:殺空的進程ID

killNginx: 
    sudo kill -9 $(ps -ef | grep [n]ginx | awk '{print $2}') 

的問題是,它給了我一個錯誤,當沒有運行nginx的過程。只有在nginx運行的情況下,我可以運行kill命令嗎?

編輯:

其實我認爲問題是$ 2沒有得到執行。我試過$$ 2但仍然無法工作。任何人有任何其他想法逃避$ 2?

回答

1

找到了一種方法,使得它爲我工作:

killNginx: 
    ps -ef | grep [n]ginx | awk '{print $$2}' | xargs sudo kill -9 
0

給這一個鏡頭:

for PID in $(ps -ef | grep [n]ginx | awk '{ print $2 }'); do 
    sudo kill -9 $PID 
done 
1

你需要逃避你的食譜每一個$不引入make變量。所以,你需要逃脫$$(ps ...print $$2。你似乎暗示這不是你的問題:但是如果沒有這個方法,甚至沒有辦法做到這一點。

你也可以看看killall。像killall -I nginx || true可能會這樣做。