プロセスのIDを見つけて強制終了する


16

バックグラウンドプロセスを終了する必要があるときはいつでも ps -e | grep <process_name>

それはこのような何かを印刷し1766 ? 00:00:13 conkyにそれから私は、プロセスIDを使用して、killそれがとても好きですkill 1766

これを簡単にする方法はありますか?早くする?入力の量を減らしますか?


1
私は欲しい答えを手に入れましたが、受け入れる前にしばらく待って、コミュニティが利用可能なさまざまなオプションから利益を得ることができるようにします。
ゴータム

より多くの人が答えの恩恵を受けることができるようにすることを可能ならば、この問題は、より一般的な無料のメイクを感じてください
ゴータム

回答:


18

(TL、DR: 、)pgreppkill

多くのUNIXが付属してバリアントpgrepとその仲間pkillSolarisのLinuxの(の一部標準プロセスユーティリティは、組み込みLinuxシステムから存在しなくてもよい)、FreeBSDではOpenBSDのNetBSDの、...しかし、唯一のOS X上でMacPortsのからではないAIX、およびのみ最近HP-UXで。このpgrepユーティリティは、名前、ユーザー、およびその他のいくつかの基準で一致したプロセスのプロセスIDを表示します。への引数pgrepは、プロセスの実行可能ファイル名の一部と一致する必要がある正規表現として解釈されます(これを変更するオプションを渡さない限り)。のpkill代わりに呼び出す場合pgrep、ユーティリティはプロセスIDを表示する代わりにシグナルを送信します。

別の同様のユーティリティはpidofです。上のLinux、それはによって提供されますはsysvinitBusyBoxの(あなたが頻繁にありません組み込みLinuxシステム上でそれを見つけることができますのでpgrep)。他のUNIXバリアントにもポートがあります。pidofユーティリティが少ないオプションがあり、それは主に全体のみ実行可能ファイル名と一致します。コンパニオンユーティリティkillallは、一致したプログラムに信号を送信します¹。

¹Solaris および他のUNIXバリアントでは意味が異なる ことに注意しkillallてください。killallSolarisでルートとして入力しないでください。


うわー、あなたの答えは非常に詳細で、もっと深く、ありがとう。可能な場合は、回答と一致するように質問を編集してください。
ゴータム

@GautamK質問を拡大する必要はないと思います。その場合は、自分で編集してください。
ジル「SO-停止されて悪」

私はそれを受け入れていますので、得票数が最も多いとの回答のあなたの答えは、より多くの詳細を説明します
ゴータム

8
  • 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の履歴から再利用するか、エイリアスを作成してください。

2つ目pidofはもう少し簡単に見えますが、それでも2つのステップがかかります
ゴータム

私は1ステップでそれを行う(大まかなプロセス名で)1行のコマンドを検索/作成できますが、長い行を入力する必要があります(上記の2つのステップよりも難しい)、または1回入力することができます履歴として再利用します。
ハナンN.

@GautamK私は単一のコマンドオプションで答えを更新しました。
ハナンN.

6

Hananにはいくつかの良い提案がありますが、pgrep/を追加しますpkill。どのプロセスを見つけるかをよりきめ細かく制御でき、強制終了する必要のある正確なプロセスがわからない場合は正規表現を使用できます。

PSハナンは、バッククティックpidofを使用してkill直接フィードできます。

kill `pidof processname`

pkillまさに私が探していたものでした、私はほとんどの場合、プロセス名、ほとんどそのconkyまたはfirefoxまたはそのchromeようなものを知っています。ありがとう
ゴータム

1

これはどう -

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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.