2013-02-08 107 views

回答

3

據它說,使用docs

ps -e -o pid,command | grep [r]esque-[0-9] | cut -d ' ' -f 1 | xargs -L1 kill -s QUIT 

注意:由名查找起來,而不是使用.pid文件。

此外,QUIT信號將優雅地殺死它們。如果您想強行殺死它們,請改用TERM

+0

我最終使用god gem(http://godrb.com/)來控制我的流程,就像我應該放在第一位一樣。 –

4
cat folder/*.pid | xargs kill 

應該這樣做嗎?

如果需要指定一個信號,例如KILL,然後

cat folder/*.pid | xargs kill -KILL 

如果PID文件沒有換行符,這可能會更好地工作:

(cd folder && 
for pidfile in *.pid; do echo kill -QUIT `cat $pidfile`; done 
) 
+0

你可能想使用'QUIT'信號。根據[文檔](https://github.com/defunkt/resque#signals):「退出 - 等待孩子完成處理,然後退出」 – cyfur01

+0

該命令運行,但似乎沒有做任何事情。 –

+0

@SamBaumgarten如果你使用'TERM'信號,它應該強制停止所有的線程。 – cyfur01

2

運行命令:

kill `cat folder/*.pid` 

如果PID文件沒有換行符,那麼應該如下工作:

for f in folder/*.pid; do kill `cat "$f"`; done 
+0

我遇到同樣的問題,因爲我使用@ mtndesign的答案。 「當我運行這個時,我得到一個包含所有pid的字符串;但是沒有空格,例如,如果pid是5220和5395。它試圖殺死一個ID爲52205395的進程「 –

2

運行這一點 - 與反引號:

kill -9 `cat /path/*.pid` 
+0

當我運行這個時,我得到一個包含所有pid的字符串;但是沒有空格。例如,如果pid是5220和5395。這個ID是52205395 –

+1

全部,所以PID文件沒有換行... – hrunting

+0

可能不是,我只是通過它進入Resque –

0

雖然問題是答案,但認爲有一些很多真棒方式,您可以

做Linux的什麼,答案是參展的Linux

的力量如何生根粉這個

pgrep ruby | xargs ps | grep [r]esque | awk '{print $1}' | xargs kill -9 
一些任務

注:pgrep不在MAC-OS支持只是想將一些一個

0

領導填充有用的會引起錯誤。使用sed 's/^ *//g'刪除前導間距/填充:

ps -e -o pid,command | grep '[r]esque-[0-9]' | sed 's/^ *//g' | cut -d ' ' -f 1 | xargs -L1 kill -s QUIT 
+0

這是真的。如果您的PID循環並且您有不同長度的PID(3位數字與4或5),則接受的答案將會失敗,併爲您提供所有空白PID。當它確實發生時,這很難被發現,因此絕對把sed替換掉了! –

相關問題