【完全マスター】PSコマンドの基本からオプションまで実例付きで解説

※本サイトにはプロモーション・広告が含まれています。

(最終更新月:2023年4月)

✔このような方へ向けて書かれた記事となります

「PSコマンドの基本が知りたい」

「PSコマンドってどうやって使うのだろうか?」

「PSコマンドを使った実例が見てみたい」

✔当記事を通じてお伝えすること

  • PSコマンドの基本
  • PSコマンドのオプション一覧
  • PSコマンドの実例

当記事では、PSコマンドの基本的な書き方はもちろん、オプション一覧を実例付きで紹介しています。

ぜひ最後までご覧ください。

筆者プロフィール

筆者プロフィールアイコン

【現職】プロダクトマネージャー

【副業】ブログ(月間20万PV)/YouTube/Web・アプリ制作

「プログラミング × ライティング × 営業」の経験を活かし、30後半からのIT系職へシフト。現在はプロダクトマネージャーとして、さまざまな関係者の間に入り奮闘してます。当サイトでは、実際に手を動かせるWebアプリの開発を通じて、プログラミングはもちろん、IT職に必要な情報を提供していきます。

【当ブログで紹介しているサイト】

当サイトチュートリアルで作成したデモ版日報アプリ

Django × Reactで開発したツール系Webアプリ

✔人に見せても恥ずかしくないコードを書こう

「リーダブルコード」は、わかりやすく良いコードの定義を教えてくれる本です。

  • 見るからにきれいなコードの書き方
  • コードの分割方法
  • 変数や関数の命名規則

エンジニアのスタンダートとすべき基準を一から解説しています。

何回も読むのに値する本なので、ぜひ手にとって読んでみてください。

psコマンドの基本

まずはPSコマンドの基本に目を通しましょう。

基本構文まであるので、ここだけでもPSコマンドが書けるようになります。

  • psコマンドの概要
  • コマンドの構文
  • 実行方法
  • 出力結果の見方

psコマンドの概要

psコマンドは、LinuxやUNIXシステム上で動作しているプロセスを確認・管理するためのコマンドラインツールです。

psは「process status」の略であり、システム上のプロセスの情報を取得できます。

現在実行中のプロセスのリソース使用量や状態を把握し、必要に応じてプロセスを制御することができます。

コマンドの構文

psコマンドの基本構文は以下の通りです。

ps [オプション]

psコマンドにはさまざまなオプションを組み合わせることで、異なる情報を取得できます。

例えばすべてのプロセスを表示する場合は「ps -e」、指定したユーザーのプロセスを表示する場合は「ps -u [ユーザー名]」といった形で使用します。

$ ps -e
    PID TTY          TIME CMD
      1 ?        00:00:01 systemd
      2 ?        00:00:00 kthreadd
      3 ?        00:00:00 rcu_gp
      4 ?        00:00:00 rcu_par_gp
      5 ?        00:00:00 slub_flushwq
      6 ?        00:00:00 netns
      8 ?        00:00:00 kworker/0:0H-events_highpri
     10 ?        00:00:00 mm_percpu_wq
     11 ?        00:00:00 rcu_tasks_rude_
#まだまだ続きます...

実行方法

単に実行したいだけなら、ターミナル上で “ps” と入力し、Enterキーを押せば実行されます。

$ ps
    PID TTY          TIME CMD
   8768 pts/0    00:00:00 bash
   9236 pts/0    00:00:00 ps

オプションをつけて実行する場合は、”ps” の後にスペースを開けてオプションを入力しましょう。

出力結果の見方

psコマンドの出力結果には、以下が表示されます。

  • PID (プロセスID)
  • TTY (端末タイプ)
  • TIME (CPU使用時間)
  • CMD (コマンド名)

プロセスIDは、システムがプロセスを一意に識別するために割り当てる番号です。

主要なオプション一覧

主要なオプションを一覧にしました。

実例もあるので、ぜひご覧ください。

オプション名概要実例
-Aすべてのプロセスを表示するps -A
-eすべてのプロセスを表示する (-A と同じ)ps -e
-u指定したユーザー名のプロセスを表示するps -u username
-x端末に関連しないプロセスも表示するps -x
-f詳細な情報を表示するps -f
-l長い形式で表示するps -l
-jジョブ形式で表示するps -j
-C指定したコマンド名のプロセスを表示するps -C sshd
-p指定したプロセスIDのプロセスを表示するps -p 1234
-oカスタム出力フォーマットを指定して表示するps -o pid,cmd,%cpu
–sort指定した項目でソートして表示するps –sort=-%mem

よく使うpsコマンドの組み合わせ

PSコマンドでよく使われるものは以下のとおり。

コマンドだけでなく、全体を丸ごと暗記してしまえば、すぐに使いこなせます

  • プロセス名から特定のプロセス情報を取得
  • プロセスIDから情報を取得
  • メモリ使用量順にソート
  • CPU使用率順にソート
  • ユーザーごとのプロセス一覧
  • プロセスツリー表示

特定のプロセスの情報を取得

特定のプロセスの情報を取得するためには、psコマンドとgrepコマンドを組み合わせて使用します。

以下の構文を用いて、特定のプロセス名を含むプロセスの情報を取得できます。

ps -ef | grep [プロセス名]

例えば、SSH関連のプロセスを調べたい場合は、以下のように入力します。

$ ps -ef | grep sshd
yulikep+    9379    8768  0 07:44 pts/0    00:00:00 grep --color=auto sshd

これにより、”sshd”という文字列を含むプロセスの情報が表示されます。

プロセスIDから情報を取得

PSプロセスにを指定して、情報を取得します。

例は「2479」のプロセスIDを持つものを取得した例です。

~$ ps -p 2479
    PID TTY          TIME CMD
   2479 ?        00:00:00 gnome-shell-cal

メモリ使用量順にソート

psコマンドを使用して、メモリ使用量順にプロセスを表示するには、以下の構文を用います。

ps -eo pid,cmd,%mem –sort=-%mem

以下が表示され、メモリ使用量が多い順にソートされるのです。

  • プロセスID(pid)
  • コマンド名(cmd)
  • メモリ使用率(%mem)
$ ps -eo pid,cmd,%mem --sort=-%mem
    PID CMD                         %MEM
   3017 qemu-system-x86_64 -accel k 24.1
   5910 /opt/google/chrome/chrome -  5.2
   6073 /opt/google/chrome/chrome -  4.7
   6087 /opt/google/chrome/chrome -  4.5
   8591 /opt/google/chrome/chrome -  4.1
   6016 /opt/google/chrome/chrome -  4.0
   2900 /opt/google/chrome/chrome    3.9

CPU使用率順にソート

psコマンドを使用して、CPU使用率順にプロセスを表示するには、以下の構文を用います。

$ ps -eo pid,cmd,%cpu --sort=-%cpu
    PID CMD                         %CPU
   5910 /opt/google/chrome/chrome - 13.4
   2900 /opt/google/chrome/chrome    5.7
   3184 /opt/google/chrome/chrome -  4.2

PC・サーバーが遅いなと思うときなどに使えます。

ユーザーごとのプロセス一覧

特定のユーザーが実行中のプロセスを表示するには、以下の構文を用います。

ps -u [ユーザー名]

例えば、rootユーザーが実行中のプロセスを表示する場合は、以下のように入力します。

$ ps -u root
    PID TTY          TIME CMD
      1 ?        00:00:01 systemd
      2 ?        00:00:00 kthreadd
      3 ?        00:00:00 rcu_gp
      4 ?        00:00:00 rcu_par_gp
      5 ?        00:00:00 slub_flushwq

これにより、rootユーザーが実行中のプロセス一覧が表示されます。

プロセスツリー表示

プロセスツリー表示を使用して、プロセスの親子関係をわかりやすく表示するには以下の構文を使用します。

$ ps --forest
    PID TTY          TIME CMD
   8768 pts/0    00:00:00 bash
  10043 pts/0    00:00:00  \_ ps

もしくは以下のようにもできます。

$ ps -eH
1 ?        00:00:01 systemd
    372 ?        00:00:03   systemd-journal
    464 ?        00:00:01   systemd-udevd
    942 ?        00:00:00   systemd-resolve
    945 ?        00:00:00   systemd-timesyn
    998 ?        00:00:00   accounts-daemon

psコマンドと他のコマンドとの連携

ほかのコマンドの連携も見ていきましょう。

組み合わせることでより作業効率が上がります。

  • grepコマンドとの連携
  • killコマンドとの連携
  • topコマンドとの違い

grepコマンドとの連携

前述のとおり、psコマンドとgrepコマンドを連携させれば、特定のプロセス名を含むプロセスの情報を取得できます。

Pythonプログラムが実行されているプロセスを検索する例を見てみましょう。

ps -ef | grep python
avahi       1002       1  0 07:08 ?        00:00:00 avahi-daemon: running [yulikepython-HP-Desktop.local]
root        1024       1  0 07:08 ?        00:00:00 /usr/bin/python3 /usr/bin/networkd-dispatcher --run-startup-triggers

これにより、”python” という文字列を含むプロセスの情報が表示されます。

grepコマンドについて詳しくはこちら。

killコマンドとの連携

psコマンドで特定のプロセスIDを取得した後、killコマンドを使ってそのプロセスを終了させることができます。

プロセスID。が取得できたら以下のようにして、該当するプロセスを終了させます。

例】出力結果からプロセスID(例: 12345)を確認し、終了させる場合。

kill 12345

topコマンドとの違い

topコマンドは、リアルタイムでプロセス情報を表示するコマンド。

psコマンドと違い、更新された情報を常に表示してくれるため、リソース状況の監視に適しています。

例えば、以下のように入力してtopコマンドを実行すると、CPU使用率やメモリ使用量などのリアルタイム情報が表示されます。

top

topコマンドの出力画面では、CPU使用率やメモリ使用量の高いプロセスが上位に表示されるため、リソースを消費しているプロセスをすぐに特定できます。

出力画面内でキー操作を行うことで、ソート順の変更やプロセスの終了が可能です。

まとめ:PSコマンドで適切なサーバ管理を実施しよう

当記事の内容をまとめます。

  • PSコマンドを使えば実行中のプロセスを一覧で取得できる
  • PSコマンドのオプションを使えば異なるデータが取得できる
  • PSコマンドとほかのコマンドを組み合わせると作業効率が上がる

PSコマンドを使うとLinuxシステム上で動作するプロセスの確認・管理がしやすくなります。

よく使う構文は丸ごとコピペで使えるように、当記事をブックマークにしとくなど、上手く活用してください。

タイトルとURLをコピーしました