プロセスIDを見つけて終了します。

プロセスIDを見つけて終了します。

バックグラウンドプロセスを終了する必要があるたびにこれを行います。ps -e | grep <process_name>

このような内容を印刷してから、1766 ? 00:00:13 conkyこのようなプロセスIDを使用します。killkill 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として入力しない でください。 killallkillall

答え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

関連情報