Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

psコマンド(ピーエスコマンド)とは | 意味や読み方など丁寧でわかりやすい用語解説

psコマンド(ピーエスコマンド)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

psコマンド (ピーエス コマンド)

英語表記

ps command (ピーエス コマンド)

用語解説

コンピュータを動かすソフトウェアの最小単位を「プロセス」と呼ぶ。OSが起動している間、ユーザーが意識しない数多くのプロセスが裏側で動作し、システムを支えている。例えば、Webサーバーのプログラムやデータベースのプログラム、あるいは単なるターミナル(コマンドを実行する画面)自体もプロセスとして存在している。このプロセスが正常に動作しているか、あるいは予期せぬプロセスが起動していないかなどを確認するために、LinuxやUNIX系のOSで非常に頻繁に利用されるコマンドが「psコマンド」である。psは「process status」の略で、実行中のプロセスに関する情報を「スナップショット」として表示する役割を持つ。つまり、ある瞬間のプロセスの状態を切り取って見せてくれるコマンドであり、システムの状態把握や問題解決の第一歩として欠かせないツールだ。

psコマンドを単独で実行すると、通常は現在のターミナルで実行されているプロセス、具体的にはbashなどのシェルと、そのシェルから実行されたpsコマンド自身が表示される。これだけではシステム全体の状況は把握できないため、通常はオプションと組み合わせて利用する。代表的なオプションには、システム上のすべてのプロセスを表示する-e-a、より詳細な情報を表示する-f(full format)、ユーザー名を含めて表示する-u、端末を持たないプロセスも表示するxなどがある。これらのオプションは単独で使うだけでなく、組み合わせて使うことで、目的に応じた様々な情報を引き出すことができる。

例えば、ps auxという組み合わせは非常によく使われる。これはUNIX系のシステムで伝統的に使われてきた形式で、「a」は端末を持つ全てのプロセス、「u」はユーザー名とCPU使用率、メモリ使用率などの詳細情報、「x」は端末を持たないプロセスも表示する、という意味を持つ。これにより、現在システム上で動作しているほぼ全てのプロセスについて、誰が(USER)、どれくらいのCPUを使っているか(%CPU)、どれくらいのメモリを使っているか(%MEM)、プロセスIDは何か(PID)、どの端末に関連付けられているか(TTY)、そのプロセスが起動してからどれくらいの時間が経過したか(START)、どれくらいのCPU時間を消費しているか(TIME)、そして何のコマンドが実行されているか(COMMAND)といった情報を一覧で確認できる。

もう一つの代表的な組み合わせとして、ps -efがある。これはBSD系のシステムでよく使われる形式で、「-e」は全てのプロセス、「-f」はフルフォーマット表示を意味する。ps auxと同様にシステム上の全プロセスを表示するが、出力される情報が若干異なる。具体的には、プロセスID(PID)、親プロセスID(PPID)、CPU使用率(C)、開始時刻(STIME)、端末(TTY)、CPU時間(TIME)、実行コマンド(CMD)などが表示される。ps -efでは特にPPIDが表示されるため、プロセスの親子関係を把握する際に非常に有用である。例えば、Webサーバーが複数の子プロセスを生成してリクエストを処理している場合など、どの親プロセスがどのプロセスを生成したのかを一目で確認できる。

psコマンドの出力で表示される各項目は、システムの状況を理解するために重要だ。 「PID」はプロセスIDの略で、各プロセスに割り当てられる一意の識別番号だ。この番号を使って、プロセスを停止させたり(killコマンド)、優先度を変更したりする。 「USER」は、そのプロセスを実行しているユーザー名を示す。これにより、rootユーザーで実行されているプロセスや、特定のアプリケーションユーザーで実行されているプロセスを識別できる。 「%CPU」は、プロセスが使用しているCPU時間の割合をパーセンテージで表す。これはpsコマンドが情報を取得した瞬間のCPU使用率ではなく、通常はプロセス起動時からの平均値を示す。 「%MEM」は、プロセスが使用している物理メモリの割合をパーセンテージで表す。 「VSZ」(Virtual Size)は、プロセスが使用している仮想メモリの総量を示す。これにはプログラムコード、データ、共有ライブラリなどが含まれる。 「RSS」(Resident Set Size)は、プロセスが物理メモリ上に実際に保持しているメモリ量を示す。VSZが仮想的なメモリ空間の総量であるのに対し、RSSは実際に物理メモリをどれだけ消費しているかを示しており、より直接的にメモリ使用量を判断する指標となる。 「TTY」は、そのプロセスが関連付けられている端末(ターミナル)の名前を示す。?と表示されている場合は、デーモンプロセスなど、特定の端末に関連付けられていないプロセスであることを意味する。 「STAT」は、プロセスの現在の状態を示すコードだ。例えば、「R」はRunning(実行中または実行可能状態)、「S」はSleeping(待機中)、「Z」はZombie(ゾンビプロセス、親プロセスに終了が通知されず、リソースを消費し続ける状態)、「T」はStopped(停止中)などを表す。特に「Z」状態のプロセスは問題を示す可能性があるため注意が必要だ。 「START」はプロセスが起動した時刻、「TIME」はプロセスがCPUを占有した合計時間、「COMMAND」は実行されているコマンド名とその引数を示す。

これらの情報を活用することで、例えば特定のアプリケーションのプロセスが正しく起動しているか、CPUやメモリを過剰に消費しているプロセスがないか、あるいは予期しないプロセスが動作していないかなどを確認できる。もし特定のプロセスを探したい場合は、ps aux | grep [キーワード]のように、grepコマンドと組み合わせて出力結果を絞り込むことが一般的だ。パイプ「|」は、左側のコマンドの出力を右側のコマンドの入力として渡す機能を持つ。例えば、ps aux | grep httpdと実行すれば、WebサーバーであるApacheのプロセス(httpd)だけを抽出して表示することができる。この組み合わせは、システム管理において非常に強力なテクニックだ。

psコマンドはあくまで実行した瞬間のプロセスの状態を「静的なスナップショット」として表示する。プロセスの状態が刻々と変化する様子をリアルタイムで監視したい場合には、topコマンドやhtopコマンドのようなツールが適している。これらは一定間隔でプロセスの情報を更新し続け、CPU使用率やメモリ使用率の変動を動的に確認できる。しかし、特定の時点での詳細な情報をピンポイントで取得し、それを他のコマンドと組み合わせて解析する用途では、psコマンドがその真価を発揮する。

システムエンジニアを目指す初心者にとって、psコマンドはLinux/UNIX系システムを操作する上で最も基本的ながら、最も強力なツールの一つだ。システムの健全性を確認し、問題発生時には原因を特定するための第一歩となる。表示される情報の意味を理解し、オプションを適切に使いこなすことで、システムの内部で何が起きているのかを「見える化」できるようになる。これにより、日々の運用監視やトラブルシューティングのスキルが格段に向上するだろう。多くのオプションや出力形式が存在するため、最初は戸惑うかもしれないが、よく使うパターンをいくつか覚え、実際にコマンドを打ちながらその出力を観察することで、徐々に慣れていくことが重要だ。

関連コンテンツ