Linuxとコマンドラインの基礎
端末で時間のかかる ./sim.sh を実行している途中で、同じ端末でほかのコマンドを使いたくなった。Ctrl+Z を押した後に bg を実行したときの動作として、正しいものはどれか。
- ACtrl+Z で sim.sh は終了し、bg を実行すると同じコマンドが最初からバックグラウンドで実行し直される
- BCtrl+Z で sim.sh は一時停止し、bg でその続きからバックグラウンドで再開する
- CCtrl+Z で sim.sh はバックグラウンドに移って実行を続け、bg を実行すると一時停止する
答えと解説を見る
正解:B. Ctrl+Z で sim.sh は一時停止し、bg でその続きからバックグラウンドで再開する
Ctrl+Z を押すと、前面(フォアグラウンド)で動いているジョブに SIGTSTP が送られ、ジョブは一時停止します。bg はそのジョブに実行の再開を指示してバックグラウンドで続けさせ、fg は前面に戻します。動かしているジョブとその状態は jobs で確かめられ、最初からバックグラウンドで動かすときは「./sim.sh &」のように & を付けて起動します。ただし、端末の接続が切れるとバックグラウンドのジョブも止まることがあるので、長い処理には別の対策が必要です。
- A. Ctrl+Z はジョブを終わらせるのではなく、一時停止させます。bg では最初からではなく続きから再開します。
- B. 正しい。一時停止したジョブを、bg でバックグラウンドで再開させます。
- C. Ctrl+Z と bg の働きが逆です。Ctrl+Z が一時停止、bg がバックグラウンドでの再開です。