ジョブ制御:Ctrl+Z・&・jobs・fg・bg
1つの端末で複数の仕事を切り替えて回す仕組み。末尾に & を付ければ裏で走らせ、Ctrl+Z で今の仕事を一時停止、jobs で一覧、fg で手前に、bg で裏に戻す。長い処理を待たずに次の作業へ移れる。
端末は1つしかないのに、長い処理の完了をただ待つのはもったいない。ダウンロード中に別のファイルを編集したい——そんなときに効くのがジョブ制御だ。1つのシェルで複数の仕事を切り替えて回す仕組みで、シェルから起動した処理のまとまりをジョブと呼ぶ。ジョブは、画面を占有して入力を待つフォアグラウンドと、裏でこっそり動くバックグラウンドの2つの状態を持つ。
🔗
たとえフォアグラウンドは今あなたが向き合っている作業机の上。バックグラウンドは机の下で回りっぱなしの機械。手前の机は1つしか使えないが、机の下では別の仕事を並行して進められる。
⏯️ 裏に回す:& と Ctrl+Z
最初から裏で走らせたいなら、コマンドの末尾に & を付ける。./loop & のようにすると、すぐにプロンプトが戻り、次の作業に移れる。表示される [1] 5466 は、ジョブ番号とプロセス番号だ。
すでにフォアグラウンドで動いている処理を止めたくなったら Ctrl+Z を押す。すると処理は「一時停止」状態で裏に控える。完全に終わらせるわけではなく、あとで再開できるのがポイントだ。
🔀 一覧・手前・裏へ:jobs・fg・bg
いま抱えているジョブは jobs で一覧でき、番号や状態(実行中か停止中か)が並ぶ。fg %番号 でそのジョブを手前(フォアグラウンド)に呼び戻し、bg %番号 で停止中のジョブを裏で再開させる。つまり Ctrl+Z で止めて bg に流せば、フォアグラウンドで始めた処理を後からバックグラウンドに移せる。
💡
ポイントジョブを止めるときは kill %番号 のように % を付けてジョブ番号で指定できる。PID を調べなくても、jobs に出た番号でそのまま操作できるのが便利だ。
✓
コツ& で裏に、Ctrl+Z で一時停止、jobs で確認、fg で手前、bg で裏。この5つの往復ができれば、端末1枚で複数作業を器用に回せるようになる。
この項目に出てくる用語
ジョブじょぶ
シェルから起動した処理のまとまり。ジョブ番号で管理される。
フォアグラウンド/バックグラウンドふぉあぐらうんど
画面を占有して動くのがフォアグラウンド、裏で動くのがバックグラウンド。