Linux でプロセスを管理することは、最初は新しいシステム管理者 (sysadmin) にとって困難に見えるかもしれません。しかし、少し説明とデモンストレーションを行うことで、Linux の kill プロセスを見つけて実行する方法を学ぶことができます。ps
などのコマンドライン ツールを使用するだけです。 と kill
.
この記事では、任意の Linux オペレーティング システムで、実行中のプロセスや異常なプロセスを見つけたり、実行中のプロセスを強制終了 (終了) したり、バックグラウンド プロセスを見つけたりするためのコマンドを学習します。
この記事の終わりまでに、Linux プロのようにコマンド ラインからプロセス ID 番号 (PID) に基づいてプロセスを管理できるようになります。 Linux のプロセス管理コマンドの詳細については、このまま読み進めてください!
前提条件
この記事では、Linux でプロセスを管理する方法について説明します。ハンズオンを希望する場合は、次のものが必要です。
- 仮想マシンまたは物理マシンの Linux ホスト
- PowerShell の例を試すには、PowerShell 7.1.1 をインストールしてください Linux ホスト上。
- root 以外のユーザー アカウント。 root アクセスは必須ではありませんが、root ユーザーが別のユーザーの実行中のプロセスを強制終了できる例があります。
どの Linux ディストリビューションを使用するかは、あなた次第です。この記事は、Ubuntu 20.04 LTS に基づいています。ただし、コマンドは Linux オペレーティング システムの標準です。
始める準備はできましたか?よし、飛び込もう。
Linux でのプロセスの管理
場合によっては、Linux システムで実行中のプロセスを停止する必要があるシナリオに遭遇することがあります。例として、スケジュールに従って実行される bash スクリプトがあるとします。その bash スクリプトは、cron を介して別のユーザーとして実行するように構成されています ジョブ (Linux プロセス スケジューラ)。
このスクリプトは、スクリプトを失敗させる可能性のある誤ったプロセスを生成することがあります。システムを再起動したり、スクリプトを停止したりせずに、これらの誤ったプロセスを強制終了するにはどうすればよいでしょうか?
次のセクションでは、検索と終了または kill に使用されるコマンドについて説明します Linux システム上のプロセス。各セクションは、最後のセクションに基づいて作成されます。 ps
について学びます 、 top
、 pgrep
、 kill
、および pkill
コマンドはすべて Linux にネイティブです。
おまけとして、PowerShell の同等のコマンド Get-Process
と Stop-Process
Linux ネイティブ コマンドが好みでない場合は、含まれています。
プロセスを特定するためのツール
プロセスを強制終了する前に、ターゲットにする正しいプロセスを見つける必要があります。固有の PID により、正確なターゲティングが可能になります。終了のための正しいプロセスを見つける方法を学ぶために読んでください.
ps
の使用 プロセス情報を表示するコマンド
プロセス ステータス または ps
コマンドは、Linux システム上のアクティブなプロセスに関連する情報を表示します。実行中のプロセスだけでなく、バックグラウンド プロセスも見つけることができます ps
で .
コマンド ps
デフォルトでは、効果的なユーザー識別のすべてのプロセスが表示されます 現在のユーザーの (EUID)。 ps
の実行 コマンドは、以下に示すように、ユーザーが終了できるすべての実行中のプロセスを返します。
ps

top
を使用した拡張プロセス情報の検索 コマンド
実行中のプロセスやシステム メトリックに関する常に最新の情報を見つけたい場合は、top
を使用できます。 指図。 ps
とは異なります 、top
コマンドは、設定された間隔で画面上のプロセス情報を更新します。
top
を実行すると コマンドを実行すると、PID 以外の情報も表示されます。プロセスの詳細には、CPU とメモリのパーセンテージ、Nice 値 (CPU スケジューリング プロセスの優先度) が含まれます 、および Linux カーネルによって設定されたプロセス優先度 (PR)。
新しいまたは経験豊富なシステム管理者の場合、top
コマンドは、多くの場合、重要なシステム リソースとプロセスを管理するための主要なツールです。以下に示すように、top
コマンド出力は ps
よりも多くのプロセス情報を表示します 全体的なシステム メトリックを含むコマンド。

htop
top
の拡張版です 色分けされた端末出力など、さまざまな改善が含まれています。
プロセスが消費しているメモリまたは CPU リソースを調べたいとします。その場合、 p
を使用できます top
の切り替え 以下に示すように。
top -p 2113

おそらく、特定のユーザー名で実行中のすべてのプロセスを表示する必要があります。 top
コマンドは u
を提供します 特定のユーザーのプロセスのみを表示するように切り替えます。以下の例に示すように、PID はユーザー ID bkindle
のみに一致します。
top -u bkindle

pgrep
による特定のプロセス PID の検索 コマンド
元々は Solaris コマンド pgrep
Linux で使用するために移植されました。 grep
の検索能力を組み合わせる コマンドと ps
のプロセス管理 、 pgrep
対象とする正確なプロセスを柔軟に見つけることができます。
ps
でも 詳細情報を表示します pgrep
返されたプロセスの PID のみを返すように設計されています。 pgrep
利用可能な多くの検索パラメータを使用してプロセスを見つけるのに役立ちます .次の例では、pgrep
vmtoolsd
に一致するプロセスを検索するように表示されます .
pgrep vmtoolsd

同様に、u
でユーザー ID を指定します。 その特定のユーザーに関連付けられたプロセスのみを取得するように切り替えます。以下に示すように、ユーザー bkindle
に対して単一の PID のみが返されます。 そして vmtoolsd
pgrep -u bkindle vmtoolsd

PowerShell の Get-Process
によるプロセスの検索 Linux で
典型的な Linux コマンドはうまく機能しますが、PowerShell でも Linux プロセスを管理できることをご存知ですか? Get-Process
コマンドレットは Linux ps
と同様に機能します コマンドを実行し、プロセス情報を返します。たとえば、現在のユーザー bkindle
によって実行中のすべてのプロセスを見つける必要があるとします。 .以下に示すように、すべての PID (Get-Process
でラベル付けされた ID) を見つけます。 ) ユーザー bkindle
の .
Get-Process -IncludeUserName |
Where-Object {$_.UserName -eq 'bkindle'} |
Select-Object -Property 'Id','UserName','ProcessName'

関連:PowerShell Where-Object を使用してすべてのものをフィルタリングする方法
さまざまなプロセスを見つける方法を学んだので、Linux でプロセスを終了または強制終了するすべての方法を発見するために読んでください!
Linux で kill コマンドを使用してプロセスを強制終了する
前のセクションでは、ネイティブ Linux および PowerShell コマンドを使用して、kill シグナルを送信するプロセスの PID を見つける方法を学習しました。次のセクションでは、kill
の使用方法について説明します。 そして pkill
プログラム、それに関連するシグナル、およびコマンドライン スイッチ。
Linux シグナルとプロセス管理
シグナルは、Linux がオペレーティング システムで実行されているプロセスと通信するために使用する方法です。 kill
の 3 つの主要なシグナル プロセスを終了するために使用するコマンドは次のとおりです:
- 1 (SIGHUP) – 対話型プログラムを終了し、プロセスが使用する構成ファイルをデーモン (バックグラウンド サービス) に再読み込みさせます。
- 9 (SIGKILL) – 正常なシャットダウン タスクを実行せずにプロセスを強制的に終了します。
- 15 (SIGTERM) – 終了時に開いているファイルを閉じるなど、プロセスが正常に終了できるようにします。これは、kill コマンドの使用時に番号が指定されていない場合に使用されるデフォルトのシグナルです。
この記事では、プロセスを強制終了するために使用される 3 つの主要なシグナルのみに焦点を当てていますが、合計 64 の利用可能なシグナルがあります。
kill -l
を使用 シグナルとそれに対応する番号のリストを取得します。
プロセスの終了に使用される 3 つの主なシグナルを理解したので、次のセクションでプロセスを強制終了する方法を学びます。
kill
の使用 プロセスを終了するコマンド
この次の例では、kill
を使用します。 指図。 pwsh
という名前の PowerShell インスタンスを実行していると仮定します。 、割り当てられた PID は 22687 です。このプロセスを終了する 1 つの方法を以下に示します。
pgrep pwsh
を使用 プロセス pwsh
の PID を決定する 、 kill
で使用 コマンドkill -s TERM 22687
を使用 pwsh
を終了するには 優雅に処理します。 TERM
コマンドは 15 (SIGTERM) シグナルにマップされ、s
を使用して示されます kill
のパラメータ コマンドtop
を使用してください 、 ps
、または pgrep
PID がリストされていないことを確認します。以下に示すのは、Ubuntu 20.04 LTS bash ターミナルからの上記のプロセスの例です。

killall
コマンドは、PID ではなく名前に基づいてすべてのプロセスを終了するため、不注意に使用すると、このコマンドは非常に破壊的になります。ただし、このコマンドを使用する場合は、i
を使用してください。 コマンドに確認を求めるオプション。
pkill
を使用した名前によるプロセスの強制終了
kill
コマンドはプロセス ID でのみ機能します。これにより、プロセスの終了が複雑な複数ステップのプロセスになる可能性があります。 pkill
procps および procps-ng に含まれるコマンド 検索された名前に基づいてプロセスを終了します。
機能的には pkill
コマンドは pgrep
のラッパーとして機能します プログラム。 pkill
コマンドは、端末に PID をリストするだけでなく、見つかった各プロセスに指定されたシグナルを送信します。 pkill
kill
とは異なります その pkill
で PID ではなく、プロセスの名前のみを使用できます。
pkill
コマンドは、デフォルトでは、Ubuntu 20.04 LTS では使用できません。アプリケーションをダウンロードしてインストールする必要があります。これを行うには、sudo apt install mcollective-plugins-process -y
を実行します。 .
pkill
を使用してプロセスを強制終了するには 、次の手順を実行します:
ps
を使用 nano アプリケーション (コマンドライン テキスト エディター) が現在実行されていることを確認します。このステップはオプションですが、プロセスを強制終了する前の安全チェックです。pkill -9 nano
を使用 nano アプリケーションを強制終了します。以下に示すのは、Ubuntu 20.04 LTS bash ターミナルからの上記のプロセスの例です。

Top
によるプロセスの強制終了 コマンド
top
を実行すると 実行中のプロセスを表示するコマンド、k で特定のプロセスを強制終了できます キーストローク。強制終了するプロセスの PID を求める対話型のプロンプトが表示されます。
以下に示すように、top
を実行します。 コマンドを入力して k を押します。 強制終了する PID を入力し、Enter キーを押します キーで PID をすぐに終了します。

次に、PowerShell Stop-Process
を使用して、ネイティブ Linux コマンドに代わるもう 1 つの方法を学習します。 コマンド!
PowerShell Stop-Process
の使用 プロセスを終了するコマンド
Linux ネイティブ コマンドが好みでない場合は、PowerShell で対応できます。 kill
と同じように コマンド、 Stop-Process
を使用してプロセスを終了できます Linux のコマンドレット。もう一度、PowerShell pwsh
を実行しているとします。
Get-Process -ProcessName 'pwsh'
で PID を見つける 終了する PID に注意してください。Stop-Process -Id 29992,30014
を使用 返された複数のプロセスを終了します。Get-Process -ProcessName 'pwsh'
を使用 PID、29992
を確認します。 と 30014
Get-Process
も使用できます そしてkill
1 つまたは複数のプロセスを終了するメソッド:(Get-Process -Id [PID]).Kill()
または(Get-Process -Id [PID1,2,3,4]).Kill()
.
ProcessName
を使用するときは注意してください パラメータ。このパラメータを使用すると、killall
と同様に動作します コマンドを実行し、すべてのプロセスを強制終了します 提供された名前と一致します。
以下は、Ubuntu 20.04 LTS bash ターミナルからの上記のプロセスの例です。

次のステップ
Linux でプロセスを見つけて終了する多くの方法を知っているはずです。次の課題として、SSH 接続を使用してプロセスをリモートで強制終了するか、コンテナーで実行されている可能性のあるプロセスを強制終了してみてください。
関連:Linux 世界の Windows ガイ:Linux での SSH のセットアップ