Linuxコマンドpsの使い方と5つのオプション

Linuxコマンドpsは、現在実行中のプロセスを表示するコマンドで、システムの状態を把握するために不可欠なツールです。Linuxでシステムのプロセスを管理し、監視することは非常に重要です。今回の投稿では、psコマンドの基本的な使い方と主要なオプションについて説明し、実際に役立つ方法を解説します。

Linuxコマンドpsとは?

psは”process status”の略で、Linuxシステムで実行中のプロセスの状態を確認するためのコマンドです。プロセスとは、プログラムが実行される際にシステムで1つの作業単位として処理されるものを指します。Linuxシステムでは複数のプロセスが同時に実行されており、その中から特定のプロセスがどのように実行されているかをpsコマンドで確認することができます。

基本的な使い方

psコマンドをオプションなしで入力すると、現在のターミナル(セッション)で実行中のプロセスのみが表示されます。基本的に提供される情報は以下の通りです。

ps
ShellScript
図1. Linuxコマンドps: 現在のセッションで実行中のプロセスを表示
図1. Linuxコマンドps: 現在のセッションで実行中のプロセスを表示

各列の意味は以下の通りです。

  • PID: プロセスID。各プロセスを一意に識別する番号です。
  • TTY: プロセスが接続されている端末を示します。
  • TIME: プロセスが使用したCPU時間を示します。
  • CMD: 該当するプロセスを実行したコマンドです。

ユーザフルなオプション

psコマンドは、さまざまなオプションを使用して、より多くの情報を出力したり、特定のプロセスのみをフィルタリングして表示することができます。よく使用されるオプションをいくつか紹介します。

全プロセスの簡略表示: ps -e

デフォルトではpsコマンドは現在のターミナルで実行中のプロセスのみを表示するため、システム全体のプロセスを確認するには-eオプションを追加する必要があります。

ps -e
ShellScript

ps -eオプションを使用した際に表示される列は、オプションなしで実行した場合と同じです。CMD列には基本的なコマンドのみが表示され、どのオプションやパラメータが一緒に実行されたのかはわかりません。

図2. Linuxコマンドps: -eオプションを使用して全プロセスを簡略表示
図2. Linuxコマンドps: -eオプションを使用して全プロセスを簡略表示

全プロセスを詳細表示: ps aux

ps auxコマンドは、実行中のコマンドのオプションや引数をすべて表示します。-eオプションを使用した場合よりも多くの情報と共に全プロセスを出力します。

ps aux
ShellScript

ps auxを実行すると、USER、PID、%CPU、%MEM、VSZ、RSS、TTY、STAT、START、TIME、COMMANDの順に、-eオプションを使用した場合よりも詳細な情報が表示され、システムのモニタリングに役立ちます。

図3. Linuxコマンドps: auxオプションを使用して全プロセスを詳細表示
図3. Linuxコマンドps: auxオプションを使用して全プロセスを詳細表示

auxを引数として使用した場合、追加で確認できる列情報は以下の通りです。

  • USER: プロセスを実行したユーザーの名前です。
  • %CPU: CPU使用率をパーセンテージで表示します。このプロセスが全体のCPU時間の中でどれだけ使用しているかを示します。
  • %MEM: メモリ使用率をパーセンテージで表示します。このプロセスが全メモリのうちどれだけを使用しているかを示します。
  • VSZ: Virtual Set Sizeの略で、プロセスが使用している仮想メモリのサイズを示します。
  • RSS: Resident Set Sizeの略で、プロセスが実際にメモリに載せられている部分のサイズを示します。
  • STAT: プロセスの状態を示します。例えば、「S」はスリープ状態、「R」は実行中の状態を意味します。
  • START: プロセスが開始された時間を示します。

特定ユーザーのプロセス表示: ps -u ユーザー名

特定のユーザーのプロセスを確認したい場合、-uオプションを使用します。

ps -u username
ShellScript

例えば、ps -u itoを入力すると、itoユーザーによって実行されたプロセスのリストを表示できます。rootと入力すれば、rootユーザーで実行されているプロセスリストを確認できます。

図4. Linuxコマンドps: -uオプションを使用して特定ユーザーのプロセスを表示
図4. Linuxコマンドps: -uオプションを使用して特定ユーザーのプロセスを表示

特定のプロセスを探す: ps -p PID

特定のプロセスID(PID)を知っている場合、そのプロセスの情報のみを確認するには、-pオプションを使用します。

ps -p 2484
ShellScript

このコマンドは、PIDが2484のプロセスの情報を出力します。

図5. Linuxコマンドps: 特定のPIDのプロセスを表示
図5. Linuxコマンドps: 特定のPIDのプロセスを表示

プロセスツリーの表示: ps -ef –forest

プロセス間の関係をツリー形式で表示したい場合、–forestオプションを使用すると便利です。このオプションは、どのプロセスが他のプロセスによって開始されたかを階層構造で示します。

ps -ef --forest
ShellScript

このコマンドは、システム全体のプロセスとその親子関係を視覚的に確認するのに非常に役立ちます。-eオプションは前述のように、すべてのプロセスを確認するオプションであり、-fはフルフォーマットリストで、出力される列は以下の図の通りです。図を見ると、PID 3、4、5番はPID 2番を親プロセスとしていることがわかります。

図6. Linuxコマンドps: ツリー形式でプロセスを表示
図6. Linuxコマンドps: ツリー形式でプロセスを表示

-fオプションを使用すると、以下のような列を追加で確認することができます。

  • PPID: Parent Process IDの略で、プロセスの親プロセスのPIDを示します。
  • C: プロセスのCPU時間を示す値です。正確な意味はシステムによって異なる場合がありますが、一般的にプロセスがどれだけ頻繁にCPUを使用しているかを示します。
  • STIME: プロセスが開始された時間を示します。前述のSTARTと同じ意味です。

psコマンドの活用方法

psコマンドは、システム管理者がシステムの状態を監視したり、問題を引き起こすプロセスを見つける際に非常に便利です。特に、サーバーで複数のアプリケーションが実行されている場合、メモリやCPUを多く使用しているプロセスを特定し、リソースを効率的に管理することができます。

  • メモリ使用量の確認: ps auxコマンドを使用してメモリ使用量を確認し、リソースを過剰に使用しているプロセスを終了させることができます。
  • CPU使用量の確認: CPU使用量が高いプロセスをps auxで確認し、システムのパフォーマンス問題を解決することができます。

また、psコマンドは他のコマンドと組み合わせてパイプライン(|)を使うことで、さらに強力に活用できます。例えば、特定のプロセスを見つけて終了する際に、grepやkillコマンドを組み合わせて使用することができます。

ps aux | grep python
kill -9 PID
ShellScript

実行中のPythonプロセスを見つけ、3047番のプロセスをkillコマンドを使用して終了しました。このように終了すると、そのプロセスが実行中の画面には「Killed」と表示され、プロセスが終了したことがわかります。

図7. Linuxコマンドpsを活用してプロセスを確認後終了
図7. Linuxコマンドpsを活用してプロセスを確認後終了

注意事項

psコマンドは強力なツールですが、使用する際には注意が必要です。システム管理者はプロセスを終了する前に、そのプロセスが何をしているのかを正確に確認する必要があります。誤ったプロセスを終了すると、システムが不安定になったり、重要なサービスが停止する可能性があります。

また、ps auxコマンドを実行すると、非常に多くの情報が表示されるため、必要に応じてgrepなどを使用して必要な情報をフィルタリングするのが良いでしょう。

まとめ

psコマンドは、Linuxシステムで現在実行中のプロセスを確認し、問題解決やシステムの監視に重要な役割を果たします。基本的な使い方から、さまざまなオプションを使用してより便利に活用することができ、特にps aux、ps -e、ps -uなどのオプションはよく使用される必須コマンドです。このコマンドを理解し、活用すればシステム管理に大いに役立ちます。

リファレンス

関連ポスト

コメントする