Linux ターミナルからプロセスを強制終了する方法

Linux ターミナルからプロセスを強制終了する方法

重要なポイント

  • プロセスの強制終了は単にプロセスを強制的に終了することを意味し、プロセスが応答しなくなったり、誤動作したりする場合に必要になることがあります。
  • Linux と macOS には、PID または名前でプロセスを終了できる kill、pkill、killall などのコマンドがあります。
  • プロセスを強制終了するときは注意し、意図しない結果を避けるために正しいプロセスを終了していることを確認することが重要です。

プロセスを削除する唯一の方法がプロセスを強制終了する場合があります。厳しい名前にもかかわらず、プロセスを「強制終了」することは単に「強制的に終了する」ことを意味します。Linux または macOS のコマンド ラインからこれを行う方法は次のとおりです。

プロセスとは何ですか?

Web ブラウザなどの実行中のプログラム、デスクトップ環境に関連付けられたバックグラウンド プロセス、Linux システム サービスはすべてプロセスです。

プロセスを 2 つのグループに分類できます。

  • フォアグラウンド プロセスは、ユーザーによって開始または起動されたプロセスです。これらは端末ウィンドウ内にある場合もあれば、グラフィカル アプリケーションである場合もあります。
  • バックグラウンド プロセスは、自動的に開始され、ユーザーとの対話を行わないすべてのプロセスです。ユーザーからの入力を期待したり、結果や出力をユーザーに提示したりすることはありません。バックグラウンドプロセスはサービスやデーモンのようなものです。

前景プロセスが劇場のスタッフと俳優の表舞台である場合、背景プロセスは舞台裏の「舞台裏」チームです。

プロセスが誤動作したり誤動作したりすると、CPU 時間を過剰に消費したり、RAM を消費したり、緊密な計算ループに入って応答しなくなる可能性があります。グラフィカル アプリケーションは、マウスのクリックに応答しない場合があります。ターミナル アプリケーションがコマンド プロンプトに戻らない場合があります。

プロセスを強制終了すると何が行われるのでしょうか?

プロセスを「強制終了」することは、単に「プロセスを強制的に終了する」ことを意味します。これは、プロセスが応答を拒否している場合に必要になる場合があります。

Linux には、これを実行できるコマンドkillpkill、およびコマンドが用意されています。killallこれらのコマンドは、グラフィカルまたはコマンド ライン、フォアグラウンドまたはバックグラウンドなど、あらゆる種類のプロセスで使用できます。

キルコマンド

を使用するにはkill、終了するプロセスのプロセス ID (PID) を知っている必要があります。このpsコマンドを使用して、プロセスの PID を見つけることができます。

psすべてのプロセスを検索するには、-e(すべてのプロセス) オプションを使用します。lessかなりの量になるので、出力をパイプで接続することをお勧めします。、psスペース、-e、スペース|(パイプ文字)、別のスペースを入力してから、 を入力しますless。Enter を押してコマンドを実行します。

ps -e | less

ターミナルウィンドウでの ps コマンド

これにより、以下のスクリーンショットのようなプロセスのリストが表示されます。lessキーを使用して前方検索/、 キーを使用して後方検索ができます?

少ないウィンドウでの ps の出力

関心のあるプロセスを特定するには、出力を からパイプしてpsgrepプロセスの名前 (または名前の一部) を指定します。

ps -e | grep shutter

シャッタープロセスを見つけるために grep を介してパイプされた ps コマンド

終了するプロセスの PID を見つけたら、それをkillパラメーターとしてコマンドに渡します。shutter前のコマンドで特定されたプロセスを終了するには、次のコマンドを使用します。

kill 2099

ターミナルウィンドウのkillコマンド

このkillコマンドは沈黙の暗殺者です。成功してもフィードバックはありません。

macOS 上のプロセスを強制終了する場合も同様に機能します。

pkill コマンド

このpkillコマンドを使用すると、名前を指定してプロセス (複数可) を強制終了できます。PID でプロセスを識別する必要はありません。使用するには、実行中のプロセスのリストと照合するために使用するpkill検索語を指定します。pkillマッチング処理が終了します。したがって、検索語のスペルが正しいことを確信する必要があります。

セーフティ ネットとして、pgrepコマンドを使用する前にコマンドを使用できますpkill。このpgrepコマンドは検索語も受け入れます。検索用語に一致する各プロセスの PID がリストされます。pgrepこれは、プロセスに強制終了シグナルを発行しないため安全であり、検索語を間違って入力した場合でも、誤って別のプロセスを強制終了することはありません。検索語を に渡す前に、検索語が正しく考えられていることを確認できますpkillpkillと はどちらもpgrep検索語を同じように扱います。これらの処理は非常に似ているため、同じマニュアル ページを共有します

名前に「subq」が含まれるプロセスがあるとします。コマンドを使用して、ps -u dave | grepカーテンの後ろを覗いてみましょう。「subq」がそのプロセスとそのプロセスのみに一致することがわかります。これは、プロセスの完全な名前を確認できるようにするためだけです。

ps -u dave | grep subq

ターミナルウィンドウでの ps コマンド

ユーザーがそれを行っていないと仮定しましょう。彼らが知っているのは、プロセス名に部分文字列「subq」が含まれていることだけです。彼らは、pgrep検索語に一致するものが 1 つだけであることを確認するために使用します。次に、その検索語を と組み合わせて使用​​しますpkill

pgrep subq pkill subq

ターミナルウィンドウでの pgrep と pkill

pkillを使用して、複数のプロセスを一度に強制終了できます。ここでユーザーは実行して、pgrepChrome が起動したプロセスの数を確認します。彼らはpkill皆を殺すために使っています。次に、pgrepすべてが削除されたことを確認します。

pgrep chrome pkill chrome pgrep chrome

ターミナルウィンドウでの pgrep と pkill

同じ名前の複数のプロセスが実行されているが、それらをすべて強制終了したくない場合は、(コマンド ライン) オプションを使用して、pgrepどの-fプロセスがどれであるかを識別できます。簡単な例としては、2 つのpingプロセスが考えられます。どちらかを殺したいが、もう一方は殺したくない。コマンド ラインを使用してそれらを区別できます。コマンドラインパラメータを囲むために引用符を使用していることに注意してください。

pgrep -f "ping 192.168.4.22" pkill -f "ping 192.168.4.22"

ping コマンドラインを使用した pgrep pkill

killall コマンド

警告: Solaris および OpenIndiana オペレーティング システムでは、このkillallコマンドは自分に属するすべてのプロセスを強制終了します。root である場合、または発行済みの場合は、sudo killallコンピュータを再起動します。この記事の調査中に、この動作は OpenIndiana Hipster 2018.10 の最新バージョンで確認されました。

このkillallコマンドは、と同様の方法で動作しますpkillが、特定の違いがあります。検索語をコマンドに渡す代わりに、正確なプロセス名を指定する必要があります。

プロセス名に部分一致を指定することはできません。次に示すように、プロセス名全体を指定する必要があります。

killall shutt killall shutter

ターミナルウィンドウでの killall コマンド

(より若い)オプション-yを使用すると、指定した期間未満実行されているプロセスを強制終了できます。期間は数値で指定され、その後に次のいずれかの単位が続きます。

  • s(秒)
  • m(分)
  • h(時間)
  • d (日)
  • w(週)
  • M(月、音符、大文字の「M」)
  • y (年)

起動されたばかりのというプロセスを強制終了し、ana古いインスタンスを実行したままにするには、 2 分以内に反応した場合は、anaで次のパラメータを使用できます。killall

killall -y 2m ana

オプションより若いキルオール

-o(古い) オプションを使用すると、指定した期間を超えて実行されているプロセスを強制終了できます。このコマンドは、ssh1 日を超えて実行されているすべての接続を強制終了します。

killall -o 1d sshd

ターミナルウィンドウでの killall コマンド

任意のプロセスを強制終了できますか?

これらのコマンドを使用すると、誤ったプロセスを正確かつ安全に特定し、正しく終了できます。ただし、トリガー ハッピーになりすぎて、終了すべきではないプロセスを終了してしまう可能性は十分にあります。

常に注意してください。まず、強制終了しようとしているプロセスが本当に必要なものであることを確認してください。次に、再確認します。注意深く、対象のプロセスが終了したいプロセスであることを確認してください。満足したら、プロセスの終了に進みます。

プロセスを誤って終了してしまったら、それで終わりではありません。最も可能性の高い結果は、何かバグが発生して 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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です