web-dev-qa-db-ja.com

killallの代わりにkill -9の使用を検討

プロセス名を使用してkillallではなくkill -9を使用することを検討しています。

特定のプロセス名のpidをgrepまたはawkしてから強制終了する方法はありますかkill -9killallは私にとって多く失敗します。

これを多数のリモートマシン用にスクリプト化したいと考えています。
プロセス名は3つのうちの1つになります。
次のようなものを使用したい:

sshpass -p 'password' ssh -n $user@$hostname "one liner to use kill -9"

何か案は?

1
Preston Cole

あなたが言及した-9引数は、問題のプロセスにkillが送信するシグナルを指定します。デフォルトはSIGTERM(アプリケーションの終了)です。9はSIGKILL(アプリケーションを即座にそして最も残酷に殺す)と同等です。

killallはシグナル引数も受け入れます(-9または-KILLのように、数字よりもシンボリック名の方を好みます)。

killall -KILL processname

または、pkillがあります。これは、特定のコマンドパターンに一致するプロセスを強制終了し、シグナル引数も同様に受け入れます。 pgrep -aを使用して、何が殺されるかを「プレビュー」できます。これは、シグナルを送信して殺す代わりに、一致する進行状況をリストします。

pgrep -a processname
pkill processname

基本コマンドだけでなく、引数を含むコマンド全体に対してパターンを照合する場合は、-fスイッチを追加します。

pgrep -a -f something
pkill -f something

詳細については、関連するマニュアルページを確認してください。さまざまなkillコマンドについてはman killman killallman pkill、利用可能なシグナルの概要についてはman 7 signalをご覧ください。

6
Byte Commander