コース目次 / 第1章
ps と /proc で、動いているプロセスを見る
sleepするだけのプログラムをバックグラウンドで起動し、psとProc/PID/statusで基本情報(PID・PPID・状態・メモリ使用量)を確認します。
観察対象を、起動する
sleepy.c として保存します。30秒間眠るだけの、観察用の単純なプログラムです。
#include <stdio.h>
#include <unistd.h>
int main(void) {
printf("PID: %d\n", getpid());
fflush(stdout);
sleep(30);
return 0;
}
gcc -O0 -o sleepy sleepy.c
./sleepy &
PID: 14341
&でバックグラウンド起動しました。表示されたPID(プロセスID)を、以降のコマンドで使います(あなたの環境では別の数字になります)。
psで、見る
ps -p 14341 -o pid,ppid,stat,cmd
PID PPID STAT CMD
14341 13978 S ./sleepy
PID — このプロセスの番号。
PPID — 親プロセスのPID(このシェルのPID)。sleepyは、あなたのシェルからforkされて生まれました。
STAT — 状態。Sは「割り込み可能なスリープ」——sleep(30)の中で待っている状態です。
/procで、同じ情報をファイルとして読む
Linuxは、動いているすべてのプロセスの情報を、/proc/<PID>/という擬似ファイルシステムとして公開しています。psのようなコマンドも、実は内部でこのファイルを読んでいます。
grep -E "^(Name|State|Pid|PPid|VmSize|VmRSS|Threads):" /proc/14341/status
Name: sleepy
State: S (sleeping)
Pid: 14341
PPid: 13978
VmSize: 2692 kB
VmRSS: 1744 kB
Threads: 1
psで見たのと同じ情報(名前・状態・PID・PPID)に加えて、VmSize(割り当てた仮想メモリの総量)とVmRSS(実際に物理メモリに載っている量)まで見えました。/procは、psやtopより詳しい情報を、直接テキストとして読めます。
こうなっていればOK
卒業まであと3章です。
この章はまだ完了していません。
保存できませんでした(プライベートブラウズ中かもしれません)。この端末に進捗は残りませんが、先へは進めます。