はじめに
LinuxのCGIでフォアグラウンドジョブとバックグランドジョブと、ジョブを切り替えて作業をする方法についてまとめてみました。
環境
Ubuntu 16.04.6 LTS
内容
まずは、Rubyで作成してプログラム(ジョブ)を普通にフォアグランドで実行します。
./test.rb
実行中のプログラム(ジョブ)を停止する場合は、Ctrl + z
ジョブが停止している事の確認を行います。
jobs
[1]+ 停止 ./test.rb
ジョブ番号と一緒にプロセス番号も表示したい場合は、オプションを指定します。21407がプロセスIDになります。
jobs -l
[1]+ 21407 停止 ./test.rb
ちなみにだが、プロセスIDのみを表示する場合。
ps -a
PID TTY TIME CMD
22625 pts/8 00:00:28 ruby
22858 pts/8 00:00:00 ps
停止中のジョブをフォアグランドで再開する場合は、ジョブ番号を指定して再開します。[1]がジョブ番号になります。ちなみに、fg 1
だけでも動きます。
fg %1
実行中のジョブを強制的に終了する場合はCtrl + c
。ただし、余程の事情がない限り、あまりしない方がいいと思われる。
停止中のジョブをバックグラウンドで再開する場合。
bg %1
バックグラウンドでジョブが動いている状態で、jobs
を打つと、確かに実行中である事が確認できます。ジョブの後ろに**&**がついている事が、バックグラウンドで動いている事の印になります。
jobs
[1]+ 実行中 ./test.rb &
**&**をつけて、最初からバックグラウンドで動かす事もできます。
./test.rb &
バックグラウンドで動いているジョブを一時停止したい場合は、fg %1
でフォアグランドにもってきた後に、Ctrl + z
する事になります。
バックグラウンドで動いていようと、フォアグランドで動いていようと関係なく、実行中のジョブを強制終了する場合、Ctrl + c
以外に、ジョブ番号を指定して終了する事もできます。
kill %1
この後、jobs
を打つと、終了した事が表示されます。
jobs
[1]+ Terminated ./test.rb
kill
で強制終了する場合は、ジョブ番号を指定する以外に、プロセスIDを指定して強制終了させる事もできます。ジョブ番号の時は**%**を指定したが、プロセスIDの場合は付けない事になります。21407はプロセスIDです。
kill 21407
ちなみにですが、バックグランドで動いているジョブに対し、フォアグランドでコマンドを打ちたい場合は、Enter
を押すと、コマンドプロンプトが表示されます。
最後にだが、今、画面で動いているジョブが、フォアグランドなのか、バックグランドなのか確認したい場合は、Enter
を押す事になる(と思われます)。Enter
を押して、コマンドプロンプトが表示されたら、バックだし、何も反応がなければ、フォアという判断しかしようがないと(思われる)。