UNIXにおけるプロセス, とはOSが管理する実行単位です. それに対して, ジョブは複数のプロセスから成る, シェルが管理するプログラムの実行単位になります.
動作中のジョブは
$ jobs
[1]+ Stopped gnuplot
のように確認できます. とはいえ, Stoppedでgnuplotは停止中ですね.
Running : 実行中, Killed: 強制終了, Done: 正常終了, Exit: 異常終了などがあります.
フォアグランドジョブというのが, 現在表で実行中のジョブのことですが, 裏で動作する
バックグランドジョブに切り替えることができます.
$ bg %1
[1]+ gnuplot &
[1]+ Stopped gnuplot
とこのようにbg %ジョブ番号でバックグラウンドになります. (%注意)
逆にしたければ
$ fg %1
gnuplot
gnuplot>
でフォアグラウンドにできます. ちなみに引数をいれなければデフォルトでStoppedのジョブが選ばれます.
また, プロセス一覧も見ることができます.
$ ps
PID TTY TIME CMD
478 ttys000 0:00.04 -bash
995 ttys000 0:00.01 gnuplot
895 ttys001 0:00.01 -bash
ターミナルを2つ立ち上げていたので, bashが二つプロセスとしてあります.
PIDというのはプロセスを管理するプロセス番号です. 試しに消してみましょう.
$ kill 995
$ ps
PID TTY TIME CMD
478 ttys000 0:00.05 -bash
895 ttys001 0:00.01 -bash
[1]+ Terminated gnuplot
とまぁgnuplotが終了されました. これはTERMシグナルというものを送っています.
本気で殺したければkill -KILLとKILLシグナルを送ります.
$ kill -KILL 1041
$ ps
PID TTY TIME CMD
478 ttys000 0:00.07 -bash
895 ttys001 0:00.01 -bash
[1]+ Killed gnuplot
これで無事強制終了されました. なお, Kill PID番号でプロセスを, Kill %ジョブ番号でジョブを殺せます.
シグナルは色々あるらしいので, よくわからんのですが, (kill -lコマンドで確認可能)
とりあえず有名なのはHUPシグナルらしいです.
これはネットワークサービスとして動くデーモンに設定ファイルを再読み込みさせるために使います.
ようするに, 何か設定ファイル変えたときに反映させるためですね.
$ ps -axw
で全ユーザプロセスを省略せずに見ることができます. これでプロセス探して,
$ kill -HUP PID
とすることで, 更新させることができます.
なお, 他にkillallコマンドってのがあって, そっちはコマンド名でシグナルを送るそうです.
$ killall gnuplot
$ ps
PID TTY TIME CMD
478 ttys000 0:00.10 -bash
895 ttys001 0:00.03 -bash
[1]+ Terminated gnuplot
ps -axwがでてきたのでついでに書くと, topコマンドを使うと, 色んなシステム状態をリアルタイムで見れます.
アクティビティモニタと同じですね. これも全然知らんかった...
ちなみに, 一緒に書くのがいいかわからんが,
$ df -i -h
Filesystem Size Used Avail Capacity iused ifree %iused Mounted on
/dev/disk0s2 298Gi 100Gi 197Gi 34% 26399483 51659343 34% /
devfs 107Ki 107Ki 0Bi 100% 610 0 100% /dev
map -hosts 0Bi 0Bi 0Bi 100% 0 0 100% /net
map auto_home 0Bi 0Bi 0Bi 100% 0 0 100% /home
でディスク使用状況を見れます. -iってのはi-nodeの使用状況も表示, -hってのは
勝手に人が見やすい単位を表示してくれてます.
まぁしかしコマンドってのは死ぬほどあるな. 必要になれば, あるいは人が使ってみるのを見て覚えるしかない.
正直こういったことは覚えたから偉いって訳でもなく, ただ便利だよね, てだけなので必要に応じることが大事だと思います. (初心者が学ぶ姿勢ではないか…)