はじめに
どうも、久方振りに私です。
今度はLinuxでpsコマンドを深掘りしたかったので纏めてみました。
参考
https://eng-entrance.com/linux-command-ps
https://qiita.com/toshihirock/items/565fe71d778d3ee36b96
注意点
筆者はにわか(8年目)Linux経験者です。
間違っている情報等あれば容赦なくコメントで指摘してください。
Linuxとは
OSの一種です。以下略。
psコマンドとは
Linux上で現在動作しているプロセスを表示するコマンド。
実際に使ってみた
とりあえず普通に実行する
$ ps
PID TTY TIME CMD
5091 pts/1 00:00:00 bash
13524 pts/1 00:00:00 ps
こんな感じで実行結果が出ました。順に説明します。
- PID
プロセスIDです。 - TTY
仮想端末ファイルです。こちらのページに詳しい情報が載っています。 - TIME
プロセスが実際にCPUを使った時間です。時分秒で表示されます。 - CMD
プロセスの実行コマンドです。
上記の場合は、「PID13524を、ターミナル1からSSHログインして、psコマンドを実行した。CPU使用時間は0時間0分0秒」という読み方です。
今回は独自目線で纏めた=必要個所を取り上げるので、一旦一つ一つの細かい掘り下げは割愛します。
「ps -hoge」について
psコマンドのオプションを説明する前に、オプションによくつける「‐」(ハイフン)について説明します。
普段のLinuxコマンドだと「ls -lha」などハイフンを活用する場面が多いと思いますが、
psコマンドに関してはハイフンを使うと以下のような警告文が出ます。
$ 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。
全プロセスを表示します。
$ ps -A
PID TTY TIME CMD
1 ? 00:00:00 init
いっぱい出てくるので省略。
オプション「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」
端末操作以外のプロセスを表示します。
$ 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」
現在実行しているプロセスを表示します。
$ ps r
PID TTY STAT TIME COMMAND
13603 pts/1 R+ 0:00 ps r
オプション「u」
CPUやメモリの使用率を合わせて表示します。
$ 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やメモリの使用率も合わせて」表示する。
無知識ながらよく使っているコマンドです。
$ 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」だけで実行します。
$ 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に書くヒントを下さった上司に感謝を。
あとは何かあればコメントでどうぞ。