ジョブコントロールとは フォアグラウンドとバックグラウンドを切替える機能のことである。
普通、コマンドはフォアグラウンドで実行される。
だが、コマンド起動時に&(アンパサンド)をつけて実行するとバックグラウンドで実行できる。
(フォアグラウンドで実行されているコマンドもCtrl+zによってバックグラウンドで実行できる)
そうしておくと、同じコンソールで他のコマンドを同時に実行できるので便利である。
以下のコマンド( Ctrl+z, fg, bg )を使用すると何度でもフォアグラウンドとバックグラウンドを切替えて実行することができる。
# a.out & <- a.outをバックグラウンドで実行 # jobs [1] - Running a.out <- a.outがバックグラウンドで実行中(ジョブ番号は 1 ) # fg <- a.outをフォアグラウンドで実行 a.out Ctrl+z <- a.outを一時的に停止 Suspended # jobs [1] - Stopped a.out <- a.outがバックグラウンドで停止中 # bg <- 再びa.outをバックグラウンドで実行 [1] a.out & # jobs [1] - Running a.out <- 再びa.outがバックグラウンドで実行中 # kill %1 <- a.outの実行を中止 # jobs <- バックグラウンドで実行中のジョブは無い #
バックグラウンドでコマンドを実行させると、そのコマンドから標準出力・標準エラー出力に出力されるデータはそのまま現在のターミナルに出力されてしまう。
だからフォアグラウンドで vi などを使用していると画面が乱れてしまう。
このような時には、実行する時に出力をリダイレクションなどでファイルに書きこむ様にしておくとよい。
# a.out > data & <- a.outの出力をdataに書き込みながらバックグラウンドで実行