Linux ターミナルからプロセスを強制終了する方法
重要なポイント
- プロセスの強制終了は単にプロセスを強制的に終了することを意味し、プロセスが応答しなくなったり、誤動作したりする場合に必要になることがあります。
- Linux と macOS には、PID または名前でプロセスを終了できる kill、pkill、killall などのコマンドがあります。
- プロセスを強制終了するときは注意し、意図しない結果を避けるために正しいプロセスを終了していることを確認することが重要です。
プロセスを削除する唯一の方法がプロセスを強制終了する場合があります。厳しい名前にもかかわらず、プロセスを「強制終了」することは単に「強制的に終了する」ことを意味します。Linux または macOS のコマンド ラインからこれを行う方法は次のとおりです。
プロセスとは何ですか?
Web ブラウザなどの実行中のプログラム、デスクトップ環境に関連付けられたバックグラウンド プロセス、Linux システム サービスはすべてプロセスです。
プロセスを 2 つのグループに分類できます。
- フォアグラウンド プロセスは、ユーザーによって開始または起動されたプロセスです。これらは端末ウィンドウ内にある場合もあれば、グラフィカル アプリケーションである場合もあります。
- バックグラウンド プロセスは、自動的に開始され、ユーザーとの対話を行わないすべてのプロセスです。ユーザーからの入力を期待したり、結果や出力をユーザーに提示したりすることはありません。バックグラウンドプロセスはサービスやデーモンのようなものです。
前景プロセスが劇場のスタッフと俳優の表舞台である場合、背景プロセスは舞台裏の「舞台裏」チームです。
プロセスが誤動作したり誤動作したりすると、CPU 時間を過剰に消費したり、RAM を消費したり、緊密な計算ループに入って応答しなくなる可能性があります。グラフィカル アプリケーションは、マウスのクリックに応答しない場合があります。ターミナル アプリケーションがコマンド プロンプトに戻らない場合があります。
プロセスを強制終了すると何が行われるのでしょうか?
プロセスを「強制終了」することは、単に「プロセスを強制的に終了する」ことを意味します。これは、プロセスが応答を拒否している場合に必要になる場合があります。
Linux には、これを実行できるコマンドkill
、pkill
、およびコマンドが用意されています。killall
これらのコマンドは、グラフィカルまたはコマンド ライン、フォアグラウンドまたはバックグラウンドなど、あらゆる種類のプロセスで使用できます。
キルコマンド
を使用するにはkill
、終了するプロセスのプロセス ID (PID) を知っている必要があります。このps
コマンドを使用して、プロセスの PID を見つけることができます。
ps
すべてのプロセスを検索するには、-e
(すべてのプロセス) オプションを使用します。less
かなりの量になるので、出力をパイプで接続することをお勧めします。、ps
スペース、-e
、スペース|
(パイプ文字)、別のスペースを入力してから、 を入力しますless
。Enter を押してコマンドを実行します。
ps -e | less
これにより、以下のスクリーンショットのようなプロセスのリストが表示されます。less
キーを使用して前方検索/
、 キーを使用して後方検索ができます?
。
関心のあるプロセスを特定するには、出力を からパイプしてps
、grep
プロセスの名前 (または名前の一部) を指定します。
ps -e | grep shutter
終了するプロセスの PID を見つけたら、それをkill
パラメーターとしてコマンドに渡します。shutter
前のコマンドで特定されたプロセスを終了するには、次のコマンドを使用します。
kill 2099
このkill
コマンドは沈黙の暗殺者です。成功してもフィードバックはありません。
macOS 上のプロセスを強制終了する場合も同様に機能します。
pkill コマンド
このpkill
コマンドを使用すると、名前を指定してプロセス (複数可) を強制終了できます。PID でプロセスを識別する必要はありません。使用するには、実行中のプロセスのリストと照合するために使用するpkill
検索語を指定します。pkill
マッチング処理が終了します。したがって、検索語のスペルが正しいことを確信する必要があります。
セーフティ ネットとして、pgrep
コマンドを使用する前にコマンドを使用できますpkill
。このpgrep
コマンドは検索語も受け入れます。検索用語に一致する各プロセスの PID がリストされます。pgrep
これは、プロセスに強制終了シグナルを発行しないため安全であり、検索語を間違って入力した場合でも、誤って別のプロセスを強制終了することはありません。検索語を に渡す前に、検索語が正しく考えられていることを確認できますpkill
。pkill
と はどちらもpgrep
検索語を同じように扱います。これらの処理は非常に似ているため、同じマニュアル ページを共有します。
名前に「subq」が含まれるプロセスがあるとします。コマンドを使用して、ps -u dave | grep
カーテンの後ろを覗いてみましょう。「subq」がそのプロセスとそのプロセスのみに一致することがわかります。これは、プロセスの完全な名前を確認できるようにするためだけです。
ps -u dave | grep subq
ユーザーがそれを行っていないと仮定しましょう。彼らが知っているのは、プロセス名に部分文字列「subq」が含まれていることだけです。彼らは、pgrep
検索語に一致するものが 1 つだけであることを確認するために使用します。次に、その検索語を と組み合わせて使用しますpkill
。
pgrep subq
pkill subq
pkill
を使用して、複数のプロセスを一度に強制終了できます。ここでユーザーは実行して、pgrep
Chrome が起動したプロセスの数を確認します。彼らはpkill
皆を殺すために使っています。次に、pgrep
すべてが削除されたことを確認します。
pgrep chrome
pkill chrome
pgrep chrome
同じ名前の複数のプロセスが実行されているが、それらをすべて強制終了したくない場合は、(コマンド ライン) オプションを使用して、pgrep
どの-f
プロセスがどれであるかを識別できます。簡単な例としては、2 つのping
プロセスが考えられます。どちらかを殺したいが、もう一方は殺したくない。コマンド ラインを使用してそれらを区別できます。コマンドラインパラメータを囲むために引用符を使用していることに注意してください。
pgrep -f "ping 192.168.4.22"
pkill -f "ping 192.168.4.22"
killall コマンド
警告: Solaris および OpenIndiana オペレーティング システムでは、このkillall
コマンドは自分に属するすべてのプロセスを強制終了します。root である場合、または発行済みの場合は、sudo killall
コンピュータを再起動します。この記事の調査中に、この動作は OpenIndiana Hipster 2018.10 の最新バージョンで確認されました。
このkillall
コマンドは、と同様の方法で動作しますpkill
が、特定の違いがあります。検索語をコマンドに渡す代わりに、正確なプロセス名を指定する必要があります。
プロセス名に部分一致を指定することはできません。次に示すように、プロセス名全体を指定する必要があります。
killall shutt
killall shutter
(より若い)オプション-y
を使用すると、指定した期間未満実行されているプロセスを強制終了できます。期間は数値で指定され、その後に次のいずれかの単位が続きます。
- s(秒)
- m(分)
- h(時間)
- d (日)
- w(週)
- M(月、音符、大文字の「M」)
- y (年)
起動されたばかりのというプロセスを強制終了し、ana
古いインスタンスを実行したままにするには、 2 分以内に反応した場合は、ana
で次のパラメータを使用できます。killall
killall -y 2m ana
-o
(古い) オプションを使用すると、指定した期間を超えて実行されているプロセスを強制終了できます。このコマンドは、ssh
1 日を超えて実行されているすべての接続を強制終了します。
killall -o 1d sshd
任意のプロセスを強制終了できますか?
これらのコマンドを使用すると、誤ったプロセスを正確かつ安全に特定し、正しく終了できます。ただし、トリガー ハッピーになりすぎて、終了すべきではないプロセスを終了してしまう可能性は十分にあります。
常に注意してください。まず、強制終了しようとしているプロセスが本当に必要なものであることを確認してください。次に、再確認します。注意深く、対象のプロセスが終了したいプロセスであることを確認してください。満足したら、プロセスの終了に進みます。
プロセスを誤って終了してしまったら、それで終わりではありません。最も可能性の高い結果は、何かバグが発生して PC を再起動しなければならないことです。そうしないと、終了したプロセスに関連付けられたプログラムで行った作業が失われる可能性があります。
Linuxコマンド |
|
ファイル |
tar 、 pv 、 cat 、 tac 、 chmod 、 grep 、 diff 、 sed 、 ar 、 man 、 pushd 、 popd 、 fsck 、 testdisk 、 seq 、 fd 、 pandoc 、 cd 、 $PATH 、 awk 、 join 、 jq 、 fold 、 uniq 、 journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · パッチ · 変換 · rclone · シュレッド · srm · scp · gzip · chattr · カット · 検索 · umask · wc · tr |
プロセス |
エイリアス · スクリーン · トップ · ナイス · renice · 進行状況 · strace · systemd · tmux · chsh · 履歴 · at · バッチ · フリー · what · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · タイムアウト · ウォール · はい · キル · スリープ · sudo · su · タイム · groupadd · usermod · グループ · lshw · シャットダウン · 再起動 · 停止 · パワーオフ · パスワード · lscpu · crontab · 日付 · bg · fg · pidof · nohup · pmap |
ネットワーキング |
netstat 、 ping 、 traceroute 、 ip 、 ss 、 whois 、 fail2ban 、 bmon 、 dig 、 finger 、 nmap 、 ftp 、 curl 、 wget 、 who 、 whoami 、 w 、 iptables 、 ssh-keygen 、 ufw 、 arping 、 firewalld |
コメントを残す