psコマンドまとめ

#できること
プロセス単位でのCPU,メモリ,状態などの確認

#実行結果
使い方： `ps [オプション]`

オプション|説明
---|---
a|端末を持つ全てのプロセスを表示（ターミナルから実行したものなど）
e|環境変数名を表示
x|端末のないプロセスも表示
u|実行ユーザ名の表示
r|実行中のプロセスのみ表示
-e,-A|全てのプロセスを表示
-f|完全なフォーマットで表示
-L|スレッドの表示（LWPとNLWPカラムをつけてスレッドを表示する。）

LWP(light weight process)：軽量プロセス（＝スレッド）
NLWP（Number of LWP）：プロセスの持つスレッド数

####端末を持つプロセスの表示
↓のように、TTY（制御端末名）の項目に値を持つプロセスのみ表示される

```
# ps a
  PID TTY      STAT   TIME COMMAND
 2149 tty1     Ss+    0:00 /sbin/agetty --noclear tty1 linux
 3254 pts/0    Ss     0:00 -bash
 3634 pts/0    S      0:00 sudo su -
 3635 pts/0    S      0:00 su -
```

####環境変数の表示
↓のようにCOMMANDの項目に環境変数が追加される

```
# ps e
  PID TTY      STAT   TIME COMMAND
 2149 tty1     Ss+    0:00 /sbin/agetty --noclear tty1 linux LANG= PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin TERM=linux LANGUAGE= LC_CTYPE= LC_NUMERIC= LC_TIME= LC
 3634 pts/0    S      0:00 sudo su - XDG_SESSION_ID=1 HOSTNAME=webapp1 TERM=xterm-256color SHELL=/bin/bash HISTSIZE=1000 SSH_CLIENT=10.0.2.2 55579 22 SSH_TTY=/dev/pts/0 USER=va
 3635 pts/0    S      0:00 su - HOSTNAME=webapp1 TERM=xterm-256color HISTSIZE=1000 LS_COLORS=rs=0:di=38;5;27:ln=38;5;51:mh=44;38;5;15:pi=40;38;5;11:so=38;5;13:do=38;5;5:bd=48;5
 3636 pts/0    S      0:00 -bash TERM=xterm-256color HOME=/root SHELL=/bin/bash USER=root LOGNAME=root PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin XDG_SES
```

####全プロセスの確認

```
# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.4 125460  2252 ?        Ss   09:57   0:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
root         2  0.0  0.0      0     0 ?        S    09:57   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    09:57   0:03 [ksoftirqd/0]
root         5  0.0  0.0      0     0 ?        S<   09:57   0:00 [kworker/0:0H]
root         7  0.0  0.0      0     0 ?        S    09:57   0:00 [migration/0]
```

項目|説明
---|---
USER       |実行ユーザ名
PID |プロセスID
%CPU |プロセスのCPU使用率
%MEM    |プロセスのメモリ使用率
VSZ   |プロセスが確保する仮想メモリサイズ
RSS |プロセスが確保する物理メモリサイズ
TTY      |制御端末名
STAT |プロセスの状態
START   |実行開始時刻
TIME |消費したCPU時間
COMMAND|実行コマンド

（補足）プロセスの状態「S」について

状態|説明|備考
----|----|----
S|スリープ（割り込み可,イベント完了待ち）|Interruptible sleep (waiting for an event to complete)
T|停止中|Stopped, either by a job control signal or because it is being traced.
D|スリープ（割り込み不可,IO完了待ち）|Uninterruptible sleep (usually IO)
R| 実行中or実行可能 |Running or runnable (on run queue)
Z | ゾンビ状態 |Zombie state: Process terminated and parent not waiting
W | スワップアウト状態 |paging (not valid since the 2.6.xx kernel)

####スレッドの確認
↓の例ではmysqlの1プロセス（プロセスID：3113）が29個のスレッドを持つのがわかる

```
# ps -efL
UID        PID  PPID   LWP  C NLWP STIME TTY          TIME CMD
(一部省略)
mysql     3113  2811  3113  0   29 09:58 ?        00:00:00 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log
mysql     3113  2811  3149  0   29 09:58 ?        00:00:00 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log
mysql     3113  2811  3168  0   29 09:58 ?        00:00:00 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log
mysql     3113  2811  3169  0   29 09:58 ?        00:00:00 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log
mysql     3113  2811  3170  0   29 09:58 ?        00:00:00 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log
m
(以下省略)
```

項目|説明
---|---
PPID|親プロセスのプロセスID
LWP|スレッドのID
C|プロセッサ使用率
NLWP|プロセスにおけるスレッド数