Linux で実行中のプロセスのプロセス ID を見つける方法

LinuxLinuxBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

このチュートリアルでは、Linux オペレーティングシステムにおけるプロセス識別の基本について説明します。実行中のプロセスを一覧表示し、監視する方法を学び、プロセス ID (PID) の概念を理解し、PID を活用してプロセスを制御する方法を学びます。これらのスキルを習得することは、Linux システム管理者や開発者がシステムを効果的に管理し、トラブルシューティングするために不可欠です。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/ProcessManagementandControlGroup(["Process Management and Control"]) linux(("Linux")) -.-> linux/SystemInformationandMonitoringGroup(["System Information and Monitoring"]) linux/ProcessManagementandControlGroup -.-> linux/kill("Process Terminating") linux/ProcessManagementandControlGroup -.-> linux/killall("Multi-Process Killing") linux/ProcessManagementandControlGroup -.-> linux/pkill("Pattern-Based Killing") linux/ProcessManagementandControlGroup -.-> linux/wait("Process Waiting") linux/ProcessManagementandControlGroup -.-> linux/bg_process("Background Management") linux/SystemInformationandMonitoringGroup -.-> linux/ps("Process Displaying") linux/SystemInformationandMonitoringGroup -.-> linux/top("Task Displaying") subgraph Lab Skills linux/kill -.-> lab-409851{{"Linux で実行中のプロセスのプロセス ID を見つける方法"}} linux/killall -.-> lab-409851{{"Linux で実行中のプロセスのプロセス ID を見つける方法"}} linux/pkill -.-> lab-409851{{"Linux で実行中のプロセスのプロセス ID を見つける方法"}} linux/wait -.-> lab-409851{{"Linux で実行中のプロセスのプロセス ID を見つける方法"}} linux/bg_process -.-> lab-409851{{"Linux で実行中のプロセスのプロセス ID を見つける方法"}} linux/ps -.-> lab-409851{{"Linux で実行中のプロセスのプロセス ID を見つける方法"}} linux/top -.-> lab-409851{{"Linux で実行中のプロセスのプロセス ID を見つける方法"}} end

Linux のプロセス識別の理解

Linux オペレーティングシステムでは、実行中のすべてのプロセスには、プロセス ID (PID) と呼ばれる一意の識別子が割り当てられます。プロセスを識別し、管理する方法を理解することは、Linux システム管理者や開発者にとって基本的なスキルです。このセクションでは、Linux のプロセス識別の基本について説明します。具体的には、プロセス情報を取得する方法と、PID を活用してプロセスを制御する方法について解説します。

プロセス識別の概念

Linux では、プロセスは実行中のプログラムのインスタンスです。各プロセスには一意の PID が割り当てられます。これは整数値で、プロセスの識別子として機能します。PID は、プロセスを参照し、シグナルを送信したり、その状態を監視したり、終了させたりするなど、プロセスとやり取りするために使用されます。

Linux の PID 範囲は通常、1(init プロセス)から始まり、最大値まで拡張されます。この最大値は、通常 32 ビットシステムでは 32767、64 ビットシステムでは 4194303 です。新しいプロセスが作成されると、オペレーティングシステムは次に利用可能な PID をそのプロセスに割り当てます。

プロセス情報の取得

実行中のプロセスを一覧表示し、監視するために、さまざまな Linux コマンドを使用できます。例えば以下のようなコマンドです。

## List all running processes
$ ps -ef

## List processes owned by the current user
$ ps -u

## List processes in a tree-like hierarchy
$ pstree

これらのコマンドは、各プロセスに関する詳細情報を提供します。具体的には、PID、プロセスを起動したユーザー、プロセスを起動するために使用されたコマンド、およびプロセスの親子関係が含まれます。

graph TD init(init process) init --> sshd sshd --> bash bash --> ps

上記の例では、ps コマンドは bash シェルの子プロセスであり、bash シェルは sshd デーモンの子プロセスであり、最終的に init プロセス(Linux カーネルによって起動される最初のプロセス)の子プロセスです。

プロセス ID を活用したプロセス制御

PID は、特定のプロセスとやり取りするために使用できます。例えば、シグナルを送信することができます。たとえば、kill コマンドを使用してプロセスを終了させることができます。

## Terminate a process by its PID
$ kill 12345

また、tophtop、または strace などのコマンドを使用して、PID を使ってプロセスの状態、リソース使用状況、およびその他の特性を監視することもできます。

Linux のプロセス識別を理解することで、システム上で実行されているプロセスを効果的に管理および制御することができます。これは、システム管理、トラブルシューティング、およびアプリケーション開発タスクに不可欠です。

実行中のプロセスの一覧表示と監視

実行中のプロセスを効果的に一覧表示し、監視することは、Linux システム管理者や開発者にとって重要なタスクです。このセクションでは、Linux で利用可能なさまざまなコマンドと手法を使って、実行中のプロセスを一覧表示、フィルタリング、および監視する方法を説明します。

実行中のプロセスの一覧表示

Linux で実行中のプロセスを一覧表示するために主に使用されるコマンドは ps(プロセスの状態)です。ps コマンドは、現在のプロセスとそれに関連する情報(プロセス ID (PID)、ユーザー、CPU およびメモリの使用状況、プロセスを起動するために使用されたコマンドなど)のスナップショットを提供します。

以下は、一般的な ps コマンドのバリエーションです。

## List all running processes
$ ps -ef

## List processes owned by the current user
$ ps -u

## List processes in a tree-like hierarchy
$ ps -ejH

また、top コマンドを使用することもできます。このコマンドは、実行中のプロセスとそのリソース使用率のリアルタイムビューを提供します。

## Monitor running processes in real-time
$ top

プロセスのフィルタリングとソート

実行中のプロセスのリストをフィルタリングするには、ps と組み合わせて grep コマンドを使用できます。

## List processes containing the word "nginx"
$ ps -ef | grep nginx

また、sort コマンドを使用して、CPU やメモリの使用状況などのさまざまな基準でプロセスリストをソートすることもできます。

## Sort processes by CPU usage in descending order
$ ps -eo pid,user,%cpu,cmd --sort=-%cpu | head -n 10

プロセスのアクティビティの監視

特定のプロセスのアクティビティを監視するには、strace コマンドを使用できます。このコマンドは、プロセスが行うすべてのシステムコールをキャプチャして表示します。

## Monitor system calls made by the "nginx" process
$ strace -p $(pgrep nginx)

さらに、htop コマンドは、実行中のプロセスのインタラクティブなリアルタイムビューを提供し、プロセスをソート、フィルタリングし、さまざまなアクションを実行することができます。

実行中のプロセスを一覧表示し、監視する手法を習得することで、問題のトラブルシューティング、システムパフォーマンスの最適化、および Linux システム上で実行されているプロセスの管理を効果的に行うことができます。

プロセス ID を活用したプロセス制御

Linux で各実行中のプロセスに割り当てられる一意のプロセス ID (PID) を活用して、それらのプロセスを制御および管理することができます。このセクションでは、シグナルの送信、プロセスの状態の監視、プロセス間通信など、さまざまなプロセス制御タスクに PID をどのように使用するかを説明します。

プロセスへのシグナルの送信

PID の最も一般的な用途の 1 つは、プロセスにシグナルを送信することです。シグナルは Linux におけるプロセス間通信の形式であり、プロセスを終了させたり、一時停止させたり、特定の動作を要求したりするなど、さまざまなアクションを実行するために使用できます。

kill コマンドは、プロセスにシグナルを送信するために使用されます。たとえば、PID が 12345 のプロセスを終了させるには、次のコマンドを使用できます。

$ kill 12345

また、kill コマンドに異なるシグナル名または番号を指定して、他のアクションを実行することもできます。例えば以下のようになります。

## Send the SIGINT (interrupt) signal to a process
$ kill -SIGINT 12345

## Send the SIGTERM (terminate) signal to a process
$ kill -SIGTERM 12345

## Send the SIGKILL (kill) signal to a process
$ kill -SIGKILL 12345

プロセスの状態の監視

PID は、特定のプロセスの状態とリソース使用状況を監視するためにも使用できます。tophtopps などのコマンドを使用して、プロセスの CPU およびメモリの使用状況、プロセスを実行しているユーザー、プロセスを起動するために使用されたコマンドなど、プロセスに関する詳細情報を取得できます。

たとえば、PID が 12345 のプロセスのリアルタイムのリソース使用状況を表示するには、次のコマンドを使用できます。

$ top -p 12345

プロセス間通信

PID は、Linux におけるプロセス間通信 (IPC) にも使用できます。一般的な IPC メカニズムの 1 つは、前述のようなシグナルの使用です。もう 1 つの IPC メカニズムは、共有メモリの使用です。これは、プロセスが共有メモリ領域に読み書きすることでデータを交換できるものです。

PID を活用してプロセスを制御する方法を理解することで、Linux システム上で実行されているプロセスを効果的に管理およびやり取りすることができます。これは、システム管理、トラブルシューティング、およびアプリケーション開発タスクに不可欠です。

まとめ

このチュートリアルでは、Linux におけるプロセス識別の基本を学びました。これで、PID の概念、pspstree などのコマンドを使用してプロセス情報を取得する方法、および PID を活用して実行中のプロセスとやり取りし、制御する方法を理解できるようになりました。これらのスキルは、システム管理者であろうと開発者であろうと、健全な Linux 環境を管理および維持するために重要です。このチュートリアルで説明した手法を適用することで、Linux システム上のプロセスを効果的に監視、管理、およびトラブルシューティングすることができます。