どんな時に使う?
ざっくりと、、プロセスとはメモリ上で動作しているプログラムの事を指します。
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調べたり、プロセス存在するかの確認で使用する事が殆どでございます。