どんな時に使う?
ざっくりと、、プロセスとはメモリ上で動作しているプログラムの事を指します。
lsコマンド等を実行した際などに余り意識する事はないのですが、プロセスが生成されています。lsコマンド実行後には、プロセスが解放されます。
現在動作しているプロセスを確認したい時に、psコマンドを利用します。
psコマンドについて
現在のターミナルで動作しているプロセスを確認する際には、psと打つだけで確認する事が出来ます。
オプションを指定せずにpsコマンドを実施した場合は、現在使用しているターミナル上で実行されているプロセスのみが表示されます。
[test_01@localhost /]$ ps
PID TTY TIME CMD
1434 pts/0 00:00:00 bash
3890 pts/0 00:00:00 ps
出力された結果を確認したところ、bashとpsプロセスが動作している事が確認出来ました。
右からPID、TTY、TIME、CMDカラムが出力されています。
PIDは、プロセス毎に割り振られるプロセスID。TTYは、ターミナル名が出力されています。今はsshで繋いでいるので、「pts/0」と表記されています。実行結果は載せないですが、直接接続した場合は「tty1」と表記されました。作業では、気にした事がない項目です。TIMEは、CPUの使用時間です。CMDは実行されているプログラムとなります。
TTYとTIMEに関しては、私は業務であまり気にしていなかった項目です。TIMEはプロセスの起動時間かなと勘違いしていました。
※mas psで調べました。
| 項目 | 内容 |
|---|---|
| PID | プロセスID |
| TTY | ターミナル名 |
| TIME | CPUの使用時間 |
| CMD | 実行しているプログラム |
試しに他のプロセスを生成して、psコマンドを叩くとどうなるのか?を確認してみたいと思います。
sleepコマンドを実行して、その後にpsコマンドを叩いてみます。
[test_01@localhost /]$ sleep 3 &
[1] 4600
[test_01@localhost /]$ ps
PID TTY TIME CMD
1434 pts/0 00:00:00 bash
4600 pts/0 00:00:00 sleep
4601 pts/0 00:00:00 ps
実行したsleepコマンドが表示された事を確認出来ました。3秒後に処理が終了するようにしたので、再度psコマンドを実行します。
[test_01@localhost /]$ ps
PID TTY TIME CMD
1434 pts/0 00:00:00 bash
4602 pts/0 00:00:00 ps
[1]+ 終了 sleep 3
[test_01@localhost /]$ ps
PID TTY TIME CMD
1434 pts/0 00:00:00 bash
4603 pts/0 00:00:00 ps
表示されないことを確認しました。
よく使うオプション
私がよく使用するオプションを下記表にまとめました。
UNIXオプション(-付き)とBSDオプション(-無し)で、効果が違います。
現場によると思いますが、ps -efとps auxのどちらかは使う場面が多いかと思います。
どちらも全てのプロセスが出力されますが、フォーマットが違うので見やすい方を使えばよいと思います。
私は特に指定がなければ、ps auxを使う機会が多かったので、こちらを好んで使用しています。
| オプション | 内容 |
|---|---|
| a | 端末操作のプロセスを表示 |
| x | 端末操作以外のプロセスを表示 |
| u | CPUやメモリ使用率などの詳細情報を表示 |
| f | 階層表示 |
| -e | 全てのプロセスを表示 |
| -f | より詳細なフォーマットで表示 (full-format listing) |
試しに、ps auxコマンド実行時には下記のような結果を得られました
※動作しているプロセスが多かったので、省略。
%CPUと%MEMのCPU/メモリ使用率あたりは、よく確認してます。
grepコマンドを使用して、結果を見やすくする事もよくあります。
[test_01@localhost ~]$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 128024 6656 ? Ss 10月30 0:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0.0 0.0 0 0 ? S 10月30 0:00 [kthreadd]
root 4 0.0 0.0 0 0 ? S< 10月30 0:00 [kworker/0:0H]
..etc
[test_01@localhost ~]$ ps aux | grep sleep
test_01 5799 0.0 0.0 108052 356 pts/0 S 16:00 0:00 sleep 5
test_01 5801 0.0 0.0 112824 968 pts/0 R+ 16:00 0:00 grep --color=auto sleep
終わり
マニュアルを確認すると、思った以上にオプションが多くて驚きました。
私は業務上ではプロセス殺すときにPID調べたり、プロセス存在するかの確認で使用する事が殆どでございます。