ジョブコントロール

ジョブコントロールとは

ジョブコントロールとは、コマンドの実行を一時的に休止させたり、 バックグラウンド・フォアグラウンド間で切り替えて実行する機能である。
ここで、 「フォアグランドでコマンドを実行する」とは、 実行が終了するまでプロンプトが帰ってこない状態でコマンドを実行することである。 (普通にコマンドを実行する時と同じ)
「バックグラウンドでコマンドを実行する」とは、 他のコマンドを実行できる(プロンプトが出ている)状態で そのコマンドを(バックグラウンで)実行することである。
この機能は実行時間が長いコマンドを実行している時に、同じウインドウの中で 別のコマンドを実行したくなった時などに便利である。

コマンド

ctrl + z
フォアグラウンドのコマンドを一時休止
これはあくまでもコマンドを一時的に止めるだけなので コマンドの実行は終っていない。
fg [%ジョブの番号]
バックグラウンドのコマンドをフォアグラウンドで実行
bg [%ジョブの番号]
バックグラウンドのコマンドをバックグラウンドで実行
jobs
バックグラウンドのコマンドのリストを表示
kill [%ジョブの番号]
コマンドの終了

%の後の数字でジョブの番号を指定できる。

バックグラウンドで実行する時の注意

バックグラウンドでコマンドを実行させると、 そのコマンドから出力されるデータはそのまま現在のターミナルに出力されてしまう。 だからフォアグラウンドで vi などを使用していると画面が乱れてしまう。
このような時には、実行する時に出力をリダイレクションなどでファイルに 書きこむ様にしておくとよい。

使用例

# a.out
ctrl+z            <- コマンドを一時休止
Stopped
# vi tmp.c
# fg              <- フォアグラウンドにもどす
a.out
ctrl+z
# a.out           <- 2番目のa.out
ctrl+z
# jobs
[1] - Stopped      a.out     <- 1番目のa.out休止中
[2] - Stopped      a.out     <- 2番目のa.out休止中
# bg %1
[1] a.out &
# jobs
[1] - Running      a.out     <- バックグラウンドで実行中
[2] - Stopped      a.out     <- 2番目のa.out休止中
# kill %1
Killed      a.out     <- 1番目のa.out を強制終了
# jobs
[2] - Stopped      a.out     <- 2番目のa.out休止中
# 

参考


Prev | Next
Home | Contents
abe@injapan.net