バックグラウンドプロセスを強制終了する必要があるときはいつでもps -e | grep <process_name>
これはこのようなものを出力します1766 ? 00:00:13 conky
、次に、プロセスIDを使用してkill
のようにkill 1766
。
これを簡単にする方法はありますか?早くする?タイピングの量を減らしますか?
(TL、DR:pgrep
、pkill
)
多くのUNIXバリアントには pgrep
およびそのコンパニオンpkill
が付属しています: Solaris 、 Linux ( 標準プロセスユーティリティの一部 、組み込みLinuxシステムにはない場合があります)、 FreeBSD 、 OpenBSD 、 NetBSD 、…ですが OS XのMacPortsのみ 、 AIX以外 、および HP-UXでのみ最近 。 pgrep
ユーティリティは、名前、ユーザー、およびその他のいくつかの基準に一致するプロセスのプロセスIDを表示します。 pgrep
の引数は、プロセスの実行可能ファイルの名前の一部と一致する必要がある正規表現として解釈されます(これを変更するオプションを渡さない限り)。 pkill
の代わりにpgrep
を呼び出すと、ユーティリティはプロセスIDを表示する代わりにシグナルを送信します。
他の同様のユーティリティは pidof です。 Linux では、それは SysVinit または BusyBox によって提供されます(したがって、pgrep
を持たない組み込みLinuxシステムでよく見られます) ;他のUNIXバリアントにもポートがあります。 pidof
ユーティリティのオプションは少なく、ほとんどの場合、実行可能ファイル名全体にのみ一致します。その付属ユーティリティkillall
は、一致したプログラムにシグナルを送信しますsends。
¹ killall
の意味はSolarisと他のUNIXバリアントで異なることに注意してください。 Solarisでrootとしてkillall
を入力しないでください。
killall ProcessName
(このコマンドには、プログラムのプロセス名が常にわかるとは限らないという欠点があります)。pidof ProccessName
およびkill the result form pidof
ps xu | grep <process name> | grep -v grep | awk '{ print $2 }' | xargs kill -9
この1行を試して、bashの履歴から再利用するか、エイリアスを作成してください。Hananにはいくつかの良い提案がありますが、私はpgrep
/pkill
を追加します。それらはあなたが見つけるプロセスをより細かく制御することを可能にし、あなたが殺す必要がある正確なプロセスを知らなければ正規表現を可能にします。
追伸Hananのpidof
は、バックティックを使用してkill
に直接フィードできます。
kill `pidof processname`
これはどう -
ps -e | awk '$4~/<process name>/{print $1}' | xargs kill
例:
[jaypal:~/Temp] sleep 100&
[1] 74863
[jaypal:~/Temp] ps -e | awk '$4~/sleep/{print $1}' | xargs kill
[1]+ Terminated: 15 sleep 100
更新:
申し訳ありませんが、これはタイピングを減らすという要件を明らかに満たしていないため、function
を.bashrc
、.profile
または起動スクリプトに追加することをお勧めします。関数はこのようなものにすることができます-
killp() {
awk -v pname="$1" '($4==pname){print $1}' <(ps -e) | xargs kill
}
追加したら、プロセスの名前を渡すだけです。
[jaypal:~] sleep 100&
[1] 77212
[jaypal:~] killp sleep
[1]+ Terminated: 15 sleep 100