4

.pidファイルでいっぱいのフォルダがあります。それぞれにresqueワーカーのPIDがあります。コマンドラインからそのフォルダー内のすべてのPIDを強制終了するにはどうすればよいですか?

4

6 に答える 6

4
cat folder/*.pid | xargs kill

やるべきですか?

たとえばKILL、信号を指定する必要がある場合は、

cat folder/*.pid | xargs kill -KILL

pidfile に改行がない場合は、次のようにするとうまくいく可能性があります。

( cd folder &&
for pidfile in *.pid; do echo kill -QUIT `cat $pidfile`; done
)
于 2013-02-08T05:34:13.207 に答える
3

ドキュメントによると、使用するように言われています:

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

:ファイルを使用する代わりに、名前で検索し.pidます。

また、QUITシグナルはそれらを優雅に殺します。それらを強制的に殺したい場合は、TERM代わりに使用してください。

于 2013-02-08T06:48:40.577 に答える
2

次のコマンドを実行します。

kill `cat folder/*.pid`

PID ファイルに改行がない場合は、次のように動作するはずです。

for f in folder/*.pid; do kill `cat "$f"`; done
于 2013-02-08T05:34:30.420 に答える
2

これを実行します-バッククォートを使用:

kill -9 `cat /path/*.pid`
于 2013-02-08T05:35:12.467 に答える
0

質問は答えですが、あなたができる素晴らしい方法がたくさんあると思いました

Linux で何らかのタスクを実行して、Linux のパワーを発揮するための答えを見つけてください。

これがなんとも

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

注: pgrepMAC-OS ではサポートされていません。

于 2013-02-23T17:52:25.923 に答える
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
于 2013-11-06T02:46:57.913 に答える