Linuxのpsコマンドを真面目に使おうとしたので独自目線で纏めた

# はじめに
どうも、久方振りに私です。
今度はLinuxでpsコマンドを深掘りしたかったので纏めてみました。

## 参考
https://eng-entrance.com/linux-command-ps
https://qiita.com/toshihirock/items/565fe71d778d3ee36b96

## 注意点
筆者はにわか（8年目）Linux経験者です。
間違っている情報等あれば容赦なくコメントで指摘してください。

# Linuxとは
OSの一種です。以下略。

# psコマンドとは
Linux上で現在動作しているプロセスを表示するコマンド。

## 実際に使ってみた

### とりあえず普通に実行する

```shell-session:ps
$ ps
  PID TTY          TIME CMD
 5091 pts/1    00:00:00 bash
13524 pts/1    00:00:00 ps
```

こんな感じで実行結果が出ました。順に説明します。

- PID
プロセスIDです。
- TTY
仮想端末ファイルです。[こちら](https://qiita.com/toshihirock/items/22de12f99b5c40365369)のページに詳しい情報が載っています。
- TIME
プロセスが実際にCPUを使った時間です。時分秒で表示されます。
- CMD
プロセスの実行コマンドです。

上記の場合は、「PID13524を、ターミナル1からSSHログインして、psコマンドを実行した。CPU使用時間は0時間0分0秒」という読み方です。
今回は独自目線で纏めた＝必要個所を取り上げるので、一旦一つ一つの細かい掘り下げは割愛します。

### 「ps -hoge」について

psコマンドのオプションを説明する前に、オプションによくつける「‐」（ハイフン）について説明します。
普段のLinuxコマンドだと「ls -lha」などハイフンを活用する場面が多いと思いますが、
psコマンドに関してはハイフンを使うと以下のような警告文が出ます。

```shell-sessionl:
$ ps -ax
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ
  PID TTY      STAT   TIME COMMAND
    1 ?        Ss     0:00 /sbin/init
```

この「Warning: bad syntax, perhaps a bogus '-'?」ですが、「不正な構文」という警告文になっています。
psコマンドでは、一部のオプションを除きハイフンは不要なようです。

### オプション「-A」
ということで早速ハイフンを使用する例外のオプションです。
ハイフン＋大文字のA。
全プロセスを表示します。

```shell-session:ps-A
$ ps -A
  PID TTY          TIME CMD
    1 ?        00:00:00 init
```
いっぱい出てくるので省略。

### オプション「a」

ハイフン不要のオプションです。
端末操作のプロセスを表示します。

```shell-session:ps_a
$ ps a
  PID TTY      STAT   TIME COMMAND
 1750 tty1     Ss+    0:00 /sbin/mingetty /dev/tty1
 1752 tty2     Ss+    0:00 /sbin/mingetty /dev/tty2
 1754 tty3     Ss+    0:00 /sbin/mingetty /dev/tty3
 1756 tty4     Ss+    0:00 /sbin/mingetty /dev/tty4
 1758 tty5     Ss+    0:00 /sbin/mingetty /dev/tty5
 1760 tty6     Ss+    0:00 /sbin/mingetty /dev/tty6
 4716 pts/0    Ss+    0:00 -bash
 5091 pts/1    Ss     0:00 -bash
 5455 pts/2    Ss+    0:00 -bash
 5665 pts/3    Ss+    0:00 -bash
13597 pts/1    R+     0:00 ps a
```

### オプション「x」

端末操作以外のプロセスを表示します。

```shell-session:ps_x
$ ps x
  PID TTY      STAT   TIME COMMAND
 4715 ?        S      0:00 sshd: ac_ope@pts/0
 4716 pts/0    Ss+    0:00 -bash
 5090 ?        S      0:00 sshd: ac_ope@pts/1
 5091 pts/1    Ss     0:00 -bash
 5454 ?        S      0:00 sshd: ac_ope@pts/2
 5455 pts/2    Ss+    0:00 -bash
 5664 ?        S      0:00 sshd: ac_ope@pts/3
 5665 pts/3    Ss+    0:00 -bash
 8749 ?        S     10:04 smbd -D
13602 pts/1    R+     0:00 ps x
```

### オプション「r」

現在実行しているプロセスを表示します。

```shell-session:ps_r
$ ps r
  PID TTY      STAT   TIME COMMAND
13603 pts/1    R+     0:00 ps r
```

### オプション「u」

CPUやメモリの使用率を合わせて表示します。

```shell-session:ps_u
$ ps u
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
ac_ope    4716  0.0  0.2 114820  1336 pts/0    Ss+  Sep25   0:00 -bash
ac_ope    5091  0.0  0.2 110496  1308 pts/1    Ss   Sep25   0:00 -bash
ac_ope    5455  0.0  0.2 110496  1048 pts/2    Ss+  Sep25   0:00 -bash
ac_ope    5665  0.0  0.2 110496  1068 pts/3    Ss+  Sep25   0:00 -bash
ac_ope   13604  0.0  0.2 110248  1164 pts/1    R+   15:48   0:00 ps u
```

## 応用

### ps aux

「端末操作のプロセス」「端末操作以外のプロセス」を「CPUやメモリの使用率も合わせて」表示する。
無知識ながらよく使っているコマンドです。

```shell-session:ps_aux
$ ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.1  19224   564 ?        Ss   Sep20   0:00 /sbin/init
root         2  0.0  0.0      0     0 ?        S    Sep20   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    Sep20   0:00 [migration/0]
root         4  0.0  0.0      0     0 ?        S    Sep20   0:00 [ksoftirqd/0]
root         5  0.0  0.0      0     0 ?        S    Sep20   0:00 [migration/0]
root         6  0.0  0.0      0     0 ?        S    Sep20   0:00 [watchdog/0]
root         7  0.0  0.0      0     0 ?        S    Sep20   0:01 [events/0]
```
なんかいっぱい出てくるなー、ってときは「ps au」だけで実行します。

```shell-session:ps_au
$ ps au
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root      1750  0.0  0.0   4064   248 tty1     Ss+  Sep20   0:00 /sbin/mingetty /dev/tty1
root      1752  0.0  0.0   4064   248 tty2     Ss+  Sep20   0:00 /sbin/mingetty /dev/tty2
root      1754  0.0  0.0   4064   248 tty3     Ss+  Sep20   0:00 /sbin/mingetty /dev/tty3
root      1756  0.0  0.0   4064   248 tty4     Ss+  Sep20   0:00 /sbin/mingetty /dev/tty4
root      1758  0.0  0.0   4064   248 tty5     Ss+  Sep20   0:00 /sbin/mingetty /dev/tty5
root      1760  0.0  0.0   4064   248 tty6     Ss+  Sep20   0:00 /sbin/mingetty /dev/tty6
ac_ope    4716  0.0  0.2 114820  1336 pts/0    Ss+  Sep25   0:00 -bash
ac_ope    5091  0.0  0.2 110496  1308 pts/1    Ss   Sep25   0:00 -bash
ac_ope    5455  0.0  0.2 110496  1048 pts/2    Ss+  Sep25   0:00 -bash
ac_ope    5665  0.0  0.2 110496  1068 pts/3    Ss+  Sep25   0:00 -bash
ac_ope   13608  0.0  0.2 110240  1164 pts/1    R+   15:51   0:00 ps au
```

# おわりに
まだまだpsコマンドは奥が深いので、随時更新していきます。
そしてQiitaに書くヒントを下さった上司に感謝を。
あとは何かあればコメントでどうぞ。