このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

【Linux】プロセスの確認:psコマンド

psコマンドの概要

 Linuxシステム管理において、プロセスの監視と管理は極めて重要な役割を果たします。プロセスはシステム上で実行されるプログラムのインスタンスであり、各プロセスはシステムリソースの消費、実行状態の管理、セキュリティコンテキストなど、多岐にわたる特性を持っています。このような環境でシステムのパフォーマンスを最適化し、問題を効果的に診断するためには、実行中のプロセスを適切に監視する必要があります。

 ps コマンド(Process Statusの略)は、現在のシステム上で実行中のプロセスの状態を一覧表示する基本的なツールです。このコマンドはプロセスID(PID)、実行中のコマンド、プロセスが使用するCPU時間など、プロセスに関する詳細な情報を提供します。さらに、多くのオプションを使用することで、出力をカスタマイズし、特定の情報をフィルタリングすることが可能です。

  • プロセス
     実行中のプログラムのインスタンス。システム上でプログラムが実行されると、それに対応するプロセスが作成され、独自のメモリ空間、環境設定、優先順位などが割り当てられます。
  • プロセスID(PID)
     プロセスを一意に識別するためにオペレーティングシステムによって割り当てられる数値。PIDは通常、小さい数から始まり、新しいプロセスが作成されるたびに増加します。

 ps コマンドは、現在実行中のプロセスに関する情報を表示するためのツールです。このコマンドはシステムのプロセスを監視するために広く使われています。

【構文】
ps [オプション]

主なオプションと説明

オプション説明
a他のユーザーのプロセスも含めて、全てのプロセスを表示します。
fプロセス間の親子関係を表示します。
uプロセスの起動・所有しているユーザー名も表示します。
xターミナルを持たないデーモンなどのプロセスを含む全プロセスを表示します。
-eシステム上の全プロセスを表示します。
-fプロセスのUID、PIDなど詳細情報を含むフルフォーマットで表示します。
lロングフォーマットでプロセス情報を表示します。
-p PID指定したPIDのプロセス情報のみを表示します。
-C プロセス名指定したプロセス名を持つプロセスのみを表示します。
主なオプションと説明

ps コマンドの出力内容

ps コマンドの出力は以下のカラムで構成されることが一般的です。

カラム説明
PIDプロセスID
TTYプロセスが実行されている端末。ローカルマシンの場合はtty、リモート接続の場合はptsが表示されます。
TIMEプロセスが消費したCPU時間
CMD実行中のコマンド名
ps コマンドの出力内容

コマンドの使用例と解説

1.基本的な使用法

・「ps」コマンドを実行します。

現在のシェルセッションに関連するプロセスを表示します。

user01@ubuntu-vm:~$ ps
    PID TTY          TIME CMD
   4003 pts/0    00:00:00 bash
   4012 pts/0    00:00:00 ps

ps コマンドによって出力された情報を詳しく解説します。

PIDTTYTIMECMD説明
4003pts/000:00:00bashこのPIDはbashシェルプロセスを表します。ユーザーがログインセッション中に使用しているシェルです。
4012pts/000:00:00psこのPIDはpsコマンド自体のプロセスを表します。このコマンドが実行された瞬間のプロセス状況を表示しています。
ps コマンドによって出力された情報

各カラムの詳細説明

  • PID (Process ID)
     プロセスIDは、各プロセスを一意に識別するための数値です。OSがプロセスを管理する際に使用します。
  • TTY (Teletype)
     TTYはプロセスが接続されている端末を指します。ここではpts/0が表示されており、これはユーザーがネットワーク経由(リモートアクセスなど)で接続している端末セッションを意味します。
  • TIME
     プロセスが実際にCPUを使用した時間です。この例ではどちらのプロセスもCPU時間が00:00:00となっており、ほとんどCPUリソースを消費していないことを示しています。
  • CMD (Command)
    実行中のコマンド名またはプロセス名です。この場合はbashpsが該当します。

2.システム上の全プロセスを表示

・「ps -ef」コマンドを実行します。

 -e は全プロセスを、-f はフルフォーマットで表示することを意味します。ユーザー名、PID、親プロセスID、開始時間、コマンドなどが含まれます。

user01@ubuntu-vm:~$ ps -ef
UID          PID    PPID  C STIME TTY          TIME CMD
root           1       0  0  7月03 ?      00:00:01 /sbin/init splash
root           2       0  0  7月03 ?      00:00:00 [kthreadd]
root           3       2  0  7月03 ?      00:00:00 [rcu_gp]
(省略)

各カラムの詳細説明

  • UID: プロセスを実行しているユーザーのIDです。ここではすべてのプロセスがrootユーザーによって実行されています。
  • PID: プロセスIDは、各プロセスを一意に識別するためにシステムによって割り当てられる数値です。
  • PPID: 親プロセスIDは、現在のプロセスを生成した親のプロセスIDです。
  • C: プロセスのCPU使用率を示すスケジューラ情報ですが、このコマンドの出力では0と表示されています。
  • STIME: プロセスが開始された時刻または日付です。この例では「7月03」と表示されています。
  • TTY: プロセスが接続されている端末。ここではすべてのプロセスが端末に依存しないため、「?」と表示されています。
  • TIME: プロセスがCPUを消費した累計時間です。
  • CMD: 実行中のコマンドまたはプロセス名です。カーネルスレッドやデーモンなどは角括弧[]で囲まれて表示されます。

3.詳細なユーザー情報とともに全プロセスを表示

・「ps aux」コマンドを実行します。

a は他のユーザーのプロセスも含めることを、u はユーザー指向の情報を、x はターミナルを持たないプロセスも含めることを意味します。このオプションで、CPUやメモリの使用状況も確認できます。

user01@ubuntu-vm:~$ ps aux
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.0  0.6 168044 13292 ?        Ss    7月03   0:01 /sbin/i
root           2  0.0  0.0      0     0 ?        S     7月03   0:00 [kthrea
root           3  0.0  0.0      0     0 ?        I<    7月03   0:00 [rcu_gp  
(省略)

各カラムの詳細説明

  • USER: プロセスを実行しているユーザー名。
  • PID: プロセスID。プロセスを一意に識別するための番号。
  • %CPU: プロセスが使用しているCPUの割合。
  • %MEM: プロセスが使用しているメモリの割合。
  • VSZ (Virtual Memory Size): プロセスが使用している仮想メモリの量(キロバイト単位)。
  • RSS (Resident Set Size): プロセスが物理メモリ上で実際に使用しているメモリの量(キロバイト単位)。
  • TTY: プロセスが接続されている端末デバイス。ここでは全て「?」と表示され、特定の端末には紐づいていません。
  • STAT: プロセスの状態を示すコード(例: S = sleeping, I = idle, < = high-priority)。
  • START: プロセスが開始された日付。
  • TIME: プロセスがこれまでにCPUを使用した総時間。
  • COMMAND: プロセスを起動したコマンド。

まとめ

 ps コマンドは、Linuxシステムにおいてプロセスの状態を監視し、管理するのに不可欠なツールです。様々なオプションを使用して、必要に応じたプロセス情報を取得することが可能です。