バックグラウンドプロセスを終了する必要があるたびにこれを行います。ps -e | grep <process_name>
このような内容を印刷してから、1766 ? 00:00:13 conky
このようなプロセスIDを使用します。kill
kill 1766
これを単純化する方法はありますか?もっと早くしますか?タイピングは少ないですか?
答え1
(TL、DR pgrep
:、pkill
)
多くのUNIXバリアントが以下に付属しています。pgrep
そしてその同僚pkill
:ソラリス、Linux(の一部標準プロセスユーティリティ、組み込みLinuxシステムにはない可能性があります)、FreeBSD、オープンBSD、ネットワークBSD、…しかし、OS XのMacPortsでのみ利用可能、AIXではないと最近のHP-UXでのみ。このpgrep
ユーティリティは、名前、ユーザー、およびその他の基準に一致するプロセスのプロセスIDを表示します。引数は、pgrep
プロセス実行可能ファイル名の一部と一致する必要がある正規表現として解釈されます(変更オプションを渡さない限り)。pkill
代わりに呼び出すと、pgrep
ユーティリティはプロセスIDを表示する代わりにシグナルを送信します。
他の同様のユーティリティはフィドフ。存在するLinux、これは次のように構成されています。システム初期化または忙しい箱(したがって、この機能がない組み込みLinuxシステムではしばしばこれを見つけることができますpgrep
。)他のUNIXバリアントにもポートがあります。このpidof
ユーティリティはオプションが少なく、ほとんどの完全な実行可能ファイル名と一致します。コンパニオンユーティリティはkillall
一致するプログラムにシグナルを送信します。
¹Solarisと他のUNIXのバリエーションでは異なる意味を持ちます。 Solarisではrootとして入力しない
でください。
killall
killall
答え2
killall ProcessName
(このコマンドの1つの欠点は、プログラムのプロセス名が常にわからないことです。)pidof ProccessName
そしてkill the result form pidof
ps xu | grep <process name> | grep -v grep | awk '{ print $2 }' | xargs kill -9
この行を試してみて、bash レコードで再利用するか、別名を作成する方が良いでしょう。
答え3
Hananはいくつかの良い提案をしましたが、私はpgrep
/を追加しますpkill
。これにより、どのプロセスを見つけるかをよりよく制御でき、終了する必要がある正確なプロセスがわからない場合は正規表現を使用できます。
PS Hananはバックティックを使用して直接入力pidof
できます。kill
kill `pidof processname`
答え4
これはどうですか -
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