私は、私は逃げることができないターミナルでプログラムを実行しているCtrl- Cと私は殺したいということ。PIDを見つけるにはどうすればよいですか?
私は、私は逃げることができないターミナルでプログラムを実行している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
出力の各行の最初のフィールドは、一致したプログラムのプロセスIDを表す数値grep
です(最後の1つはそれgrep
自体を安全に無視できます)。
問題のあるプロセスを停止するには、次のようにします。
kill pid
ここで、pidはプログラムのプロセスIDです。どのマッチをkill
編集する必要があるかについて、判断を下さなければならない場合がありますtop
。kill
単独で使用するとSIGTERMが送信されます。SIGTERMは、プログラムが適切にクリーンアップできるようにするため、最初に試す必要があります。SIGTERMが失敗した場合、ストンガー薬であるSIGHUPを試してくださいkill -HUP pid
。他のすべてが失敗した場合、SIGKILLを送信します。ただし、SIGKILLを使用するとカーネルはクリーンアップの可能性なしにプロセスを即座に終了するため、最後の手段としてのみ行う必要があります。これにより、データ破損やその他の問題が発生する場合があります。繰り返しになりますが、最後の手段としてのみSIGKILLを送信してください。そうするには、kill -KILL pid
またはを実行しますkill -9 pid
。
もちろん、グラフィカルインターフェイスを実行している場合は、このクレイジーなコマンドラインをだます必要はありません。[システムモニタ]を開き、[プロセス]タブに移動して、停止するプロセスを選択し(Hm、90%のCPUを使用している可能性がありますか)、右クリックします。プロセスは既に停止しているので(問題ですか?)、表示されるメニューから[プロセスの終了]または[プロセスの強制終了]を選択します。
功績koanhead
kill -9
が悪いアドバイスです。答えを編集して修正しました。
ping
コマンドとでループを含む関数がありsleep
ます。unix.stackexchange.com/a/275826/72988によると、Ubuntuでを使用することはできませんmultiplexer
。
pgrep、pkill、pidofなどを使用して同じコマンドを実行できる場合、このような長いコマンドは必要ないと思います。
pgrep:
pgrep [options] pattern
説明: 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
flag:process_nameを検索します(man pkillを参照)。flag
-o
:一致する最も古いプロセスのみを選択します。
-n
flag:一致する最新のプロセスのみを選択します。
-l
flag:プロセスIDとプロセス名をリストします。
実行中のプログラムのPIDを知る最も簡単な方法は、次を使用することです。
pidof <application name>
たとえば、vimを起動し、そのpidを知りたい場合:
pidof vim
開始された正確なプログラム名を提供する必要があることに注意してください。
たとえば、viを実行して実行pidof vim
すると、正しい結果が得られません。
詳細については、pidof
のマニュアルページを参照してください。
pidof mysqld
PIDを返します。ただし、入力してpidof Mariadb
も何も返されません。MariaDBとMySQLの両方で同じPIDですか?
「-i」を追加し、「ax」の代わりに「aux」を使用して大文字と小文字を区別しない検索を使用すると、よりわかりやすい出力が得られることがわかりました。
ps aux | grep -i firefox
使用できるすべてのプロセスを強制終了する場合:
ps aux | grep -i firefox | awk {'print $2'} | xargs kill -9
それは強制的な殺害です。ソフトキルが必要な場合は、「-9」をドロップします。
ps aux | grep -i firefox...
テキストが含まれているため、プロセスも強制終了されますfirefox
!
grep -i firefo[x]
firefoxのみに一致させるために使用できる@Eric
別の端末を開いて(または別のttyに切り替えて)実行することもできますtop
。これは基本的にシステムモニターのテキストバージョンです。最初の列には、実行中の各プロセスのPIDが一覧表示されます。PIDをK入力してから送信する数値信号を入力すると、プロセスを強制終了できます。