はじめに
こんにちは。私はアメリカ在住で、独学を通してエンジニアを目指している者です。
本日は現在学習中のLinuxコマンドの1つであるpsコマンドについてみていきたいと思います
ps
コマンドは UNIX 系システムや Linux 環境で、現在動作しているプロセスを一覧表示するための基本的なツールです。
プロセスとは、コンピュータ上で実行されているプログラムを指します。
このドキュメントでは、ps
コマンドの概要や主要なオプション、利用シーンなどについて紹介します。
psコマンドの概要
-
プロセスの状態を表示する:
ps
は “Process Status” の略で、プロセスの情報を確認するために用いられるコマンドです。 -
スナップショット表示:
ps
はリアルタイムの情報ではなく、コマンドを実行した時点のプロセス状態を表示します。プロセスの動きを追いかける場合は、必要に応じてコマンドを再度実行するか、top
やhtop
などの動的監視コマンドを使用するとよいでしょう。
主なオプションと使い方
多くの UNIX 系システムでは、ps
コマンドに BSD 系オプション と System V 系オプション が存在します。また、Linux ではこれらが混在していることも珍しくありません。いくつか有名なオプションを紹介します。
BSD 系オプション
-
-a
: すべてのユーザーの端末に紐づいたプロセスを表示 -
-x
: 端末に紐づいていないプロセス(デーモンなど)も表示 -
-u
: ユーザーを指定してプロセスを表示(例:ps -u root
など)
例: 全プロセスの一覧を表示
ps ax
上記コマンドは、端末がないプロセスも含め、全てのプロセスを表示します。
System V 系オプション
-
-e
: システム上のすべてのプロセスを表示 -
-f
: 詳細情報(親プロセス ID や開始時刻など)を含む「フルフォーマット」で表示 -
-l
: ロングフォーマットで表示
例: 全プロセスをフルフォーマットで一覧表示
ps -ef
Linux 環境でよく利用されるオプションの組み合わせです。ユーザーや開始時刻、親プロセスなど詳細な情報が表示されます。
出力形式の見方
多くの環境で、ps
コマンドを実行すると以下のような項目が表示されます(オプションによって表示内容は異なる場合があります)。
- PID : プロセスID
- TTY : プロセスが関連付けられている端末(ターミナル)
- TIME : プロセスが動作していた時間(CPU 時間)
- CMD : 実行コマンド名
- PPID : 親プロセスの PID
- USER : プロセスを実行しているユーザー
- START : プロセスが開始された時刻
実行例
ps の基本使用
ps
現在のシェルに紐づくプロセスのみが表示されるため、少数のプロセスが表示されます。
全プロセスの表示
ps ax
端末に紐づいていないバックグラウンドのプロセス(デーモンなど)も含めて表示されます。すべてのプロセスを確認したい場合に有用です。
詳細情報の表示
ps -ef
System V 系のオプションを使用して、プロセスの親子関係や実行開始時刻などを含めた詳細な情報を一覧で表示します。
よくある用途
- プロセスの調査: 異常に CPU 使用率やメモリ使用量が高いプロセスがないかをチェックするために利用
- デーモンの確認: バックグラウンドで動作しているサービスやデーモンが正しく起動しているかの確認
- トラブルシューティング: 不要なプロセスや停止すべきプロセスを特定したり、どのユーザーがどのプロセスを起動しているかを調べたりする
注意点
-
ps
のオプションはシステムによって挙動が異なる場合があります。Linux、BSD、macOS、Unix などで微妙にオプションの意味が変わることがあるため、man ps
コマンドを使って自分の環境のマニュアルを確認してください。 - シェルによっては、エイリアスが設定されている場合があります。思わぬ結果になることがあるため、念のためにフルパス(例:
/bin/ps
)を使って実行することも検討してください。
まとめ
ps
コマンドは、プロセスの状況を迅速に把握するための基本かつ強力なツールです。トラブルシューティングやシステム管理の場面で頻繁に使用されるため、使い方やオプションの意味を把握しておくと大変便利です。特に、-a
、-x
、-e
、-f
などを組み合わせることで、必要に応じた情報を得ることができます。今後、システム管理やプログラムのデバッグをする際には、ぜひ活用してください。