fgコマンドは、バックグラウンド処理しているジョブや停止中のジョブをフォアグラウンド処理にすることができます。
バックグラウンド処理は
1 |
command & |
のようにコマンドの最後に'&'をつけることで処理を行うことができます。
また、実行中の処理を停止したい場合はCtrl+zを入力することでファアグラウンドで実行中の処理が停止されます。
fgコマンドの利用例
jobsコマンドを利用することでシェルで実行中のジョブを確認することができます。
1 2 3 4 |
$jobs [1] Running perl test.pl & [2]- Running python test.py & [3]+ Running bash test.sh & |
jobs - シェルで実行しているジョブを確認する
jobsコマンドはbashの組み込みコマンドで、シェルで実行しているジョブを確認できます。シェルでのジョブは'%'の文字から始まるジョブスペックで指定できます。ジョブスペックはジョブをファアグラウンド実行にするfgコマンドやバックグラウンド...
ジョブをフォアグラウンド処理にしたい場合はfgコマンドでジョブスペック('%1'や'%2'のような指定方法)で指定することでそのジョブをフォアグラウンド処理にできます。
fgコマンドでジョブスペックを指定しない場合はカレントジョブ(jobsコマンドで'+'の記号がついているジョブ)がフォアグラウンド処理になります。
1 2 3 4 5 6 7 8 |
$fg bash test.sh ^Z [3]+ Stopped bash test.sh $fg %1 perl test.pl ^Z [1]+ Stopped perl test.pl |
また、カレントジョブは直近で停止させたジョブになるので、ここでjobsコマンドを用いるとカレントジョブが変更されていることを確認できます。
1 2 3 4 |
$jobs [1]+ Stopped perl test.pl [2] Running python test.py & [3]- Stopped bash test.sh |
停止中のジョブを再開した場合に利用できるシグナル
停止中のジョブを再開したときに利用できるシグナルにSIGCONTシグナルがあります。
trapコマンドでSIGCONTシグナルを指定することでプログラムが再開したときに何か簡単な処理を行うことができます。
test.sh
1 2 3 4 5 6 7 8 9 10 11 12 |
#!/bin/bash trap message SIGCONT message () { echo 'program restart' echo 'process...' } while true ; do : done |
コマンド例と実行結果
1 2 3 4 5 6 7 8 9 10 |
$bash test.sh ^Z [1]+ Stopped bash test.sh $fg bash test.sh program restart process... ^Z [1]+ Stopped bash test.sh $ |