Linuxはマルチプロセス・システムである。プロセスとはプログラムの実行単位のことだ。誰かがプログラムを実行すると、それはひとつのプロセスとして動作をする。同時に同じプログラムを実行しても、システムはそれぞれを別個のプロセス単位として扱う。
現在実行中のプロセスを調べるには、psコマンドを用いる。何もオプションを 指定せず実行すると、psコマンドを実行した端末で実行中のプロセスだけが表示される。
USER$ ps PID TTY TIME CMD 10085 ttyp0 00:00:00 bash 10092 ttyp0 00:00:04 vi 10276 ttyp0 00:00:00 ps
xオプションを指定すると、バックグラウンドで実行中のプロセスや、別の端末で実行しているプロセスも含め、自分が起動しているプロセスがすべて表示される。さらに、aオプションを付けると、すべてのプロセスが表示される(画面9)。
USER$ ps x PID TTY STAT TIME COMMAND 10051 tty1 S 0:00 -bash 10062 tty1 S 0:00 sh /usr/X11R6/bin/startx 10069 tty1 S 0:00 xinit /home/ken-na/.xinitrc -- :0 -auth /home/ken-na/ 10074 tty1 S 0:02 /usr/bin/enlightenment 10075 tty1 S 0:05 kinput2 -canna -cs localhost 10085 ttyp0 S 0:00 bash 10089 ttyp1 S 0:00 bash 10092 ttyp0 T 0:04 vi genko.txt 10153 ttyp2 S 0:00 bash 10274 ttyp1 T 0:00 fuga > hoge 10277 ttyp0 R 0:00 ps x USER$ ps ax PID TTY STAT TIME COMMAND 1 ? S 0:02 init 2 ? SW 0:00 [kflushd] 3 ? SW 0:00 [kupdate] 4 ? SW 0:00 [kpiod] 5 ? SW 0:00 [kswapd] 286 ? S 0:00 portmap 341 ? S 0:00 syslogd -m 0 352 ? S 0:00 klogd 368 ? S 0:00 /usr/sbin/atd 384 ? S 0:00 crond : :
画面9 psコマンドの実行例
稼働中のプロセスがハングアップしてしまった場合は、killコマンドでプロセスを終了させることができる。
USER$ kill -9 10274
最初の引数はプロセスを終了させるためのシグナルを意味している。2番目の引数は終了させたいプロセス番号だ。psコマンドのPIDの欄に表示されている。
一般ユーザーも自分の実行したプロセスに対してならば有効だ。スーパーユーザー以外は、他のユーザーのプロセスを終了させることはできない。
なお、lpdやhttpdのようなデーモンを停止したい場合は、Red Hat系のディストリビューションならば、
root# /etc/rc.d/init.d/lpd stop
のようにして停止する。