脱出できない端末でプログラムを実行しています 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を表す数値です(最後の1つはgrep
自体を表しますが、無視しても問題ありません。
問題のあるプロセスを停止するには、次のようにします。kill pid
ここで、pidはプログラムのプロセスIDです。どの一致をkill
edにする必要があるかを判断する必要がある場合もありますが、代わりにtop
を使用することもできます。 kill
を単独で使用するとSIGTERMが送信されます。SIGTERMは、プログラムが適切にクリーンアップできるようにするため、最初に試す必要があります。 SIGTERMが失敗した場合、ストンガー薬であるSIGHUPを試してください:kill -HUP pid
。他のすべてが失敗した場合、SIGKILLを送信します。ただし、SIGKILLを使用するとカーネルはクリーンアップの可能性なしにプロセスを直ちに終了するため、最後の手段としてのみ行う必要があります。これにより、データ破損やその他の問題が発生する場合があります。繰り返しになりますが、最後の手段としてのみSIGKILLを送信してください。これを行うには、kill -KILL pid
またはkill -9 pid
を実行します。
もちろん、グラフィカルインターフェイスを実行している場合は、このクレイジーなコマンドラインをだます必要はありません。 [システムモニタ]を開き、[プロセス]タブに移動して、停止するプロセス(Hm、90%のCPUを使用している可能性がありますか?)を選択して右クリックします。プロセスはすでに停止しているので(問題ですか?)、表示されるメニューから[プロセスの終了]または[プロセスの強制終了]を選択します。
koanheadへのクレジット
Pgrep、pkill、pidofなどを使用して同じコマンドを実行できる場合、このような長いコマンドは必要ないと思います。
pgrep:
pgrep [options] pattern
DESCRIPTION: pgrepは現在実行中のプロセスを調べ、選択基準に一致するプロセスIDをstdoutにリストします。すべての基準が一致する必要があります。例えば、
ルートが所有するsshdという名前のプロセスを見つける。
$ pgrep -u root sshd
ルートORデーモンが所有するプロセスをリストします。
$ pgrep -u root,daemon
pidof:
説明:
Pidofは、指定されたプログラムのプロセスID(PID)を見つけます。これらのIDを標準出力に出力します。
構文:pidof program_name
Pidでプログラムを強制終了するには、pkillの例を使用します。
pkill pid
pkill -f process_name
pkill -o process_name
pkill -n process_name
pkill -l process_name
-f
フラグ:process_nameを検索します(man pkillを参照)-o
フラグ:最も古い一致プロセスのみを選択します。-n
フラグ:一致する最新のプロセスのみを選択します。-l
フラグ:プロセス名とプロセスIDをリストします。
実行中のプログラムのPIDを知る最も簡単な方法は、次を使用することです。
pidof <application name>
たとえば、vimを起動し、そのpidを知りたい場合:
pidof vim
開始された正確なプログラム名を提供する必要があることに注意してください。
たとえば、viを実行してpidof vim
を実行すると、正しい結果が得られません。
詳細については、pidof
のマニュアルページを参照してください。
「-i」を追加し、「ax」ではなく「aux」を使用して大文字と小文字を区別しない検索を使用すると、よりわかりやすい出力が得られます。
ps aux | grep -i firefox
使用できるすべてのプロセスを強制終了する場合:
ps aux | grep -i firefox | awk {'print $2'} | xargs kill -9
それは強制的な殺害です。ソフトキルが必要な場合は、「-9」をドロップします。
Pidのみが必要な場合(自動キルスクリプトなどに便利)
pgrep -f desired_program_name
Ubuntu 16.04 LTSを実行している場合は、you mustでps
だけでなくps ax
を使用しますそれ以外の場合は、現在の特定のターミナルインスタンスからプロセスが生成されます(通常は、単に「bash」[現在のシェル]および「ps」[今実行したもの])
top
または
screen -list|ls
すべてのpidを対応するプロセスとともにリストします
kill -[pid]
できること:
ps ax | grep firefox | cut -f2 -d" " - | xargs kill -9
最初の2つのパイプはプロセス情報を取得し、次に旧式のカットを使用してPID列を取得し、結果のPIDを強制終了します。
別のターミナルを開いて(または別のttyに切り替えて)top
を実行することもできます。これは基本的にシステムモニターのテキストバージョンです。最初の列には、実行中の各プロセスのPIDが一覧表示されます。 K、PIDを入力してから、送信する数値信号を入力します。