知っておくとちょっと便利!プロセスの情報を表示する ps コマンド

★★★ Live配信告知 ★★★ぜひお申込みください!
◆◇世界一わかりみの深いクラウドネイティブ on Azure 第21回◆◇
〜 AppServiceでコンテナ〜 App Serviceでコンテナを動かすことができる「Web App for Containers」をご紹介します。10/11(火) 19:00~

今号では、ps コマンドの使い方やオプションについてご紹介します!

ps コマンドとは

ps コマンドは、現在 OS 上で動作している各プロセスを表示するコマンドです。
プロセス (1つ1つの処理の単位) の稼働時間や、実行されているコマンド等の情報を確認する事ができます。
Windows で言うところの、タスクマネージャーのようなものですね。

基本の書式

特に何も操作を行っていない状態から ps コマンドを実行した際に表示される結果は以下の通りです。
bash は現在 ps コマンドを実行しているシェル、ps は ps コマンドを表しています。

$ ps
  PID TTY          TIME CMD
18650 pts/1    00:00:00 bash
18699 pts/1    00:00:00 ps

ここで、他のコマンドを実行してみると ps コマンドの実行結果にも変化があります。
以下の例では、sleep コマンドを 10秒間バックグラウンドで実行しています。

$ sleep 10 &
[1] 30875
$ ps
  PID TTY          TIME CMD
18650 pts/1    00:00:00 bash
30875 pts/1    00:00:00 sleep
30906 pts/1    00:00:00 ps

現在実行中の、sleep コマンドのプロセスが新たに表示されました。
10秒経過すると sleep コマンドのプロセスはなくなります。

ps コマンドのオプション

次に、ps コマンドで使用可能なオプションをご紹介します。
オプションには多くの種類がありますが、よく使用されると考えられるものを抜粋してご紹介します。

  • すべてのプロセスを表示する
    通常、ps コマンドでは自分が所有するプロセスのみが表示されますが、
    -e オプションを指定すると、自分以外のすべてのユーザを含めた全プロセスの情報が表示されます。

    $ ps -e
      PID TTY          TIME CMD
        1 ?        00:02:36 systemd
        2 ?        00:00:00 kthreadd
        3 ?        00:00:29 ksoftirqd/0
        5 ?        00:00:00 kworker/0:0H
        7 ?        00:00:00 migration/0
    
    (長いため省略)
    
    15150 ?        00:00:00 kworker/0:2
    15185 pts/2    00:00:00 ps
    16786 ?        00:00:00 dhclient
    19794 ?        00:00:00 kworker/u2:2
    26248 ?        00:00:00 systemd-tty-ask
    
  • プロセスを階層で表示する
    プロセスは階層 (親プロセス、子プロセスと呼ぶこともあります) になっているものがあり、
    その階層構造も含めて表示したい場合は f オプションを指定します。

    以下の例では、bash を複数起動した場合の階層を表示します。
    f オプションがない場合とある場合とでは、実行結果が異なります。

    f オプションがない場合

    $ ps
      PID TTY          TIME CMD
    17112 pts/1    00:00:00 bash
    17271 pts/1    00:00:00 bash
    17335 pts/1    00:00:00 bash
    17577 pts/1    00:00:00 ps
    

    f オプションがある場合

    $ ps f
      PID TTY      STAT   TIME COMMAND
    17112 pts/1    Ss     0:00 -bash
    17271 pts/1    S      0:00  \_ bash
    17335 pts/1    S      0:00      \_ bash
    17614 pts/1    R+     0:00          \_ ps f
    
  • 他の端末を含めたプロセスを表示する
    a オプションを指定すると、他の端末のプロセスも含めて表示されます。

    a オプションがない場合

    $ ps
      PID TTY          TIME CMD
    17112 pts/1    00:00:00 bash
    20734 pts/1    00:00:00 ps
    

    a オプションがある場合

    $ ps a
      PID TTY      STAT   TIME COMMAND
     6004 tty1     Ssl+   0:28 /usr/bin/X :0 -background none -noreset -audit 4 -ver
    11678 pts/0    Ss+    0:00 bash
    17112 pts/1    Ss     0:00 -bash
    20757 pts/1    R+     0:00 ps a
    30328 pts/2    Ss+    0:00 -bash
    
  • 端末を持たないプロセスも含めて表示する
    x オプションを指定すると、端末を持たないプロセス (デーモンプロセスなど) も含めて表示します。

    # ps 
      PID TTY      STAT   TIME COMMAND
        1 ?        Ss     2:42 /usr/lib/systemd/systemd --switched-root --system --d
        2 ?        S      0:00 [kthreadd]
        3 ?        S      0:33 [ksoftirqd/0]
        5 ?        S<     0:00 [kworker/0:0H]
        7 ?        S      0:00 [migration/0]
    
    (長いため省略)
    
    22005 pts/2    R+     0:00 ps x
    26248 ?        Ss     0:00 /usr/bin/systemd-tty-ask-password-agent --wall
    28687 ?        S      0:00 [kworker/0:2]
    30260 ?        Ss     0:00 sshd: root@pts/2
    30328 pts/2    Ss     0:00 -bash
    
  • より詳細な情報を表示する
    u オプションを指定すると、プロセスに関してより詳細な情報 (CPU 使用率やメモリ使用率等) を表示します。

    $ ps u
    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    test01   21202  5.0  0.1 116364  2880 pts/2    Ss   14:19   0:00 -bash
    test01   21275  0.0  0.1 155360  1888 pts/2    R+   14:19   0:00 ps u
    

実際の運用では、-e と f、a と x と u をそれぞれ組み合わせて使用する場合がほとんどです。
-ef オプションと axu オプションでは表示される内容が少し異なりますが、
どちらもシステム上のすべてのプロセスに関する情報を表示します。

  • -e と f を組み合わせる
    # ps -ef
    UID        PID  PPID  C STIME TTY          TIME CMD
    root         1     0  0  7月20 ?      00:03:26 /usr/lib/systemd/systemd --switc
    root         2     0  0  7月20 ?      00:00:00 [kthreadd]
    root         3     2  0  7月20 ?      00:00:56 [ksoftirqd/0]
    root         5     2  0  7月20 ?      00:00:00 [kworker/0:0H]
    root         7     2  0  7月20 ?      00:00:00 [migration/0]
    
    (長いため省略)
    
    root     23697     2  0 14:22 ?        00:00:00 [kworker/0:0]
    root     26248     1  0  7月21 ?      00:00:00 /usr/bin/systemd-tty-ask-passwor
    root     29441     2  0 14:27 ?        00:00:00 [kworker/0:1]
    test01   30562 21202  0 14:28 pts/2    00:00:00 bash
    test01   30617 30562  0 14:28 pts/2    00:00:00 bash
    
  • a と x と u を組み合わせる (各オプションの順番は任意)
    # ps axu
    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    root         1  0.0  0.2 128388  5520 ?        Ss    7月20   3:26 /usr/lib/syst
    root         2  0.0  0.0      0     0 ?        S     7月20   0:00 [kthreadd]
    root         3  0.0  0.0      0     0 ?        S     7月20   0:56 [ksoftirqd/0]
    root         5  0.0  0.0      0     0 ?        S<    7月20   0:00 [kworker/0:0H
    root         7  0.0  0.0      0     0 ?        S     7月20   0:00 [migration/0]
    
    (長いため省略)
    
    root     23697  0.0  0.0      0     0 ?        S    14:22   0:00 [kworker/0:0]
    root     26248  0.0  0.0  15424   864 ?        Ss    7月21   0:00 /usr/bin/syst
    root     29441  0.0  0.0      0     0 ?        S    14:27   0:00 [kworker/0:1]
    test01   30562  0.0  0.1 116364  2940 pts/2    S    14:28   0:00 bash
    test01   30617  0.0  0.1 116364  2912 pts/2    S+   14:28   0:00 bash
    




ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!


ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。

Be the first to comment

Leave a Reply

Your email address will not be published.


*