ps auxの見方がよく判らない・・・

psコマンドをなんとなく実行していたけど見方はちゃんと知らなかったりしてます

psコマンドはプロセスの動作状況を確認するためのコマンドです。プロセスはコマンドを実行したり、アプリケーションを実行した際に実行するプログラムです。GUI上で1つのアプリケーションを実行しても複数のプログラムが実行されていたりするので、psコマンドで実行しているプロセスで動作状況を確認することができます。
psコマンドにはたくさんのオプションがあり、組み合わせることでリストする項目や対象とするユーザなどを指定することができます。とは言っても、すべてのオプションを理解して使い分ける能力は私にはありません。すべての種類のプロセスをリストするオプションを付けて使用することが多いのではないでしょうか?

ps auxオプション

auxオプションは、aとuとxというオプションを組み合わせたものです。

  • a:端末操作のプロセスを表示する
  • u:CPUやメモリの使用率などを表示する
  • x:端末操作以外のプロセスを表示する

ps aux

同じ環境でauxオプションで表示する内容と各オプションのみで表示した場合の違いは次のようになります。

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.8  0.1 128168  6836 ?        Ss   10:22   0:01 /usr/lib/systemd/systemd --switched
root         2  0.0  0.0      0     0 ?        S    10:22   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    10:22   0:00 [ksoftirqd/0]
root         4  0.0  0.0      0     0 ?        S    10:22   0:00 [kworker/0:0]
root         5  0.0  0.0      0     0 ?        S<   10:22   0:00 [kworker/0:0H]
root         6  0.0  0.0      0     0 ?        S    10:22   0:00 [kworker/u2:0]
root         7  0.0  0.0      0     0 ?        S    10:22   0:00 [migration/0]
root         8  0.0  0.0      0     0 ?        S    10:22   0:00 [rcu_bh]
root         9  0.2  0.0      0     0 ?        R    10:22   0:00 [rcu_sched]
root        10  0.0  0.0      0     0 ?        S    10:22   0:00 [watchdog/0]
root        12  0.0  0.0      0     0 ?        S    10:22   0:00 

****長いので略****

root      1228  0.2  0.1 145780  5500 ?        Ss   10:23   0:00 sshd: root@pts/0
root      1232  0.0  0.0 115888  2532 pts/0    Ss   10:23   0:00 -bash
root      1268  1.0  0.1 226240  5168 ?        Ss   10:24   0:00 /usr/sbin/httpd -DFOREGROUND
apache    1269  0.0  0.0 226240  3016 ?        S    10:24   0:00 /usr/sbin/httpd -DFOREGROUND
apache    1270  0.0  0.0 226240  3016 ?        S    10:24   0:00 /usr/sbin/httpd -DFOREGROUND
apache    1271  0.0  0.0 226240  3016 ?        S    10:24   0:00 /usr/sbin/httpd -DFOREGROUND
apache    1272  0.0  0.0 226240  3016 ?        S    10:24   0:00 /usr/sbin/httpd -DFOREGROUND
apache    1273  0.0  0.0 226240  3016 ?        S    10:24   0:00 /usr/sbin/httpd -DFOREGROUND
root      1275  0.0  0.0 151064  1812 pts/0    R+   10:24   0:00 ps aux

各オプション

ps a

  PID TTY      STAT   TIME COMMAND
  515 tty1     Ss+    0:00 /sbin/agetty --noclear tty1 
 1232 pts/0    Ss     0:00 -bash
 1317 pts/0    R+     0:00 ps a

ps u

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root       515  0.0  0.0 110044   828 tty1     Ss+  10:22   0:00 /sbin/agetty --noclear tty1 linux
root      1232  0.0  0.0 115888  2536 pts/0    Ss   10:23   0:00 -bash
root      1318  0.0  0.0 151064  1812 pts/0    R+   10:48   0:00 ps u

ps x

  PID TTY      STAT   TIME COMMAND
    1 ?        Ss     0:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
    2 ?        S      0:00 [kthreadd]
    3 ?        S      0:00 [ksoftirqd/0]
    5 ?        S<     0:00 [kworker/0:0H]
    6 ?        S      0:00 [kworker/u2:0]
    7 ?        S      0:00 [migration/0]
    8 ?        S      0:00 [rcu_bh]
    9 ?        R      0:00 [rcu_sched]
   10 ?        S      0:00 [watchdog/0]

****長いので略****

 1228 ?        Ss     0:00 sshd: root@pts/0
 1232 pts/0    Ss     0:00 -bash
 1268 ?        Ss     0:00 /usr/sbin/httpd -DFOREGROUND
 1296 ?        S      0:00 [kworker/0:1]
 1316 ?        S      0:00 [kworker/0:0]
 1319 pts/0    R+     0:00 ps x

項目の意味合い

auxオプションを付けてpsコマンドを実行すると、各プロセス毎に、USER、PID、%CPU、%MEM、VSZ、RSS、TTY、STAT、START、TIME、COMMANDという項目が表示されます。
psコマンドでトラブルシューティングが完了するわけではなく、トラブルシューティングの1stepとして、なんとなく意味を理解しているだけでもいいと思います。

項目

  • USER:
  • PID: プロセスID
  • %CPU: プロセスのCPU使用率
  • %MEM: プロセスが確保している物理メモリ
  • VSZ: 仮想メモリの全サイズ
  • RSS: 使用中の物理メモリー量
  • TTY: 制御端末の種類および番号
  • STAT: プロセスのステータス
    STATにリストされる内容にはいくつかのステータスがあります(CentOS7の場合)
    • R: 実行可能な状態のプロセス
    • S: 割り込み可能な待ち状態
    • D: ディスクIO待ちの状態
    • T: 停止またはトレース中
    • W: スワップ・アウトしたプロセス
    • Z: ゾンビ・プロセス

    2文字目以降の意味

    • s: 複数プロセスが起動している場合のセッションリーダー
    • l: マルチスレッドのプロセスでセッションリーダー
    • <: 優先度が高いプロセス
    • +: フォアグラウンドのプロセスグループ
  • START:
  • TIME: プロセスが開始した時刻
  • COMMAND: プロセスのコマンド名

pstree

プロセスをツリー構造で表示するためのコマンドでpstreeというものがあります。CentOS7ではpstreeは追加でインストールが必要でした。

# yum install psmisc
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * epel: epel.scopesky.iq
 * extras: ftp.iij.ad.jp
 * updates: ftp.iij.ad.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ psmisc.x86_64 0:22.20-15.el7 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

====================================================================================================
 Package               アーキテクチャー      バージョン                   リポジトリー         容量
====================================================================================================
インストール中:
 psmisc                x86_64                22.20-15.el7                 base                141 k

トランザクションの要約
====================================================================================================
インストール  1 パッケージ

総ダウンロード容量: 141 k
インストール容量: 475 k
Is this ok [y/d/N]: y
Downloading packages:
psmisc-22.20-15.el7.x86_64.rpm                                               | 141 kB  00:00:02
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  インストール中          : psmisc-22.20-15.el7.x86_64                                          1/1
  検証中                  : psmisc-22.20-15.el7.x86_64                                          1/1

インストール:
  psmisc.x86_64 0:22.20-15.el7

完了しました!

実際に動かしてみると次のような感じです。

# pstree -p
systemd(1)qwqNetworkManager(529)---dhclient(652)
       |                         |-{NetworkManager}(538)
       |                         --{NetworkManager}(540)
       |-agetty(515)
       |-auditd(472)---{auditd}(473)
       |-chronyd(512)
       |-crond(509)
       |-dbus-daemon(492)---{dbus-daemon}(493)
       |-firewalld(528)---{firewalld}(648)
       |-httpd(1268)---httpd(1269)
       |             |-httpd(1270)
       |             |-httpd(1271)
       |             |-httpd(1272)
       |             --httpd(1273)
       |-master(1154)---pickup(12917)
       |              |-qmgr(1161)
       |-polkitd(497)---{polkitd}(516)
       |              |-{polkitd}(517)
       |              |-{polkitd}(518)
       |              |-{polkitd}(519)
       |              --{polkitd}(520)
       |-rsyslogd(491)---{rsyslogd}(501)
       |               |-{rsyslogd}(502)
       |-sshd(926)---sshd(1228)---bash(1232)---pstree(12941)
       |-systemd-journal(346)
       |-systemd-logind(494)
       |-systemd-udevd(1542)
       --tuned(927)---{tuned}(981)
                    |-{tuned}(986)
                    |-{tuned}(990)
                    --{tuned}(993)

私の場合は、動いているかの確認くらいしかできない知識なので、動いているハズのプロセスが動いていなければ、messagesやプロセスに関わるエラーログなどを確認しています。記事を作ってみたけどもコマンドの認識度は変わっていないというオチになったような・・・

スポンサーリンク
spdsk-side
spdsk-side