Ctrlでエスケープできないプログラムをターミナルで実行しています – C そして私が殺したいこと。どうすればそのPIDを見つけることができますか?
ベストアンサー
別のターミナルを開き、ps ax | grep foo
ここで、fooは応答しないプログラムの名前です。これにより、次のような出力行が返されます。
$ ps ax | grep firefox
2222 ? S 0:00 /bin/sh /usr/lib/firefox-3.6.9/firefox
2231 ? Sl 514:36 /usr/lib/firefox-3.6.9/firefox-bin
30290 pts/2 S+ 0:00 grep --color=auto firefox
出力の各行の最初のフィールドは、grep
と一致するプログラムのプロセスIDを表す数値です。 (grep
を表す最後のものは無視してかまいません。
問題のあるプロセスを停止するには、次の手順を実行します:kill pid
ここで、pidはプログラムのプロセスIDです。どのマッチがkill
である必要があるかについてあなたの判断を使わなければならないかもしれません ed、またはtop
を使用できます 代わりは。 kill
を使用する それ自体がSIGTERMを送信します。これにより、プログラムがそれ自体の後で適切にクリーンアップできるため、最初に試す必要があります。 SIGTERMが失敗した場合は、ストーガー医学であるSIGHUPを試してください:kill -HUP pid
。他のすべてが失敗した場合は、SIGKILLを送信します。ただし、これは最後の手段としてのみ行う必要があります。SIGKILLを使用すると、カーネルはプロセスをすぐに終了し、クリーンアップの可能性はありません。これにより、データの破損やその他の問題が発生する場合があります。繰り返しになりますが、最後の手段としてSIGKILLのみを送信してください。これを行うには、kill -KILL pid
を実行します またはkill -9 pid
。
もちろん、グラフィカルインターフェイスを実行している場合は、このクレイジーなコマンドラインを使って仕事をこなす必要はありません。 「システムモニター」を開き、「プロセス」タブに移動し、停止するプロセスを選択して(うーん、90%のCPUを使用しているプロセスでしょうか?)、右クリックします。プロセスはすでに停止しているので(それが問題ですよね?)、表示されるメニューから[プロセスの終了]または[プロセスの強制終了]を選択します。
koanheadへのクレジット