バックグラウンドプロセスを終了する必要があるときはいつでも ps -e | grep <process_name>
それはこのような何かを印刷し1766 ? 00:00:13 conky
にそれから私は、プロセスIDを使用して、kill
それがとても好きですkill 1766
。
これを簡単にする方法はありますか?早くする?入力の量を減らしますか?
バックグラウンドプロセスを終了する必要があるときはいつでも 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の(あなたが頻繁にありません組み込みLinuxシステム上でそれを見つけることができますのでpgrep
)。他のUNIXバリアントにもポートがあります。pidof
ユーティリティが少ないオプションがあり、それは主に全体のみ実行可能ファイル名と一致します。コンパニオンユーティリティkillall
は、一致したプログラムに信号を送信します¹。
¹Solaris および他のUNIXバリアントでは意味が異なる
ことに注意しkillall
てください。killall
Solarisでルートとして入力しないでください。
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の履歴から再利用するか、エイリアスを作成してください。pidof
はもう少し簡単に見えますが、それでも2つのステップがかかります
これはどう -
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