ジョブコントロール

ジョブコントロールとは

ジョブコントロールとは フォアグラウンドとバックグラウンドを切替える機能のことである。

普通、コマンドはフォアグラウンドで実行される。
だが、コマンド起動時に&(アンパサンド)をつけて実行するとバックグラウンドで実行できる。
(フォアグラウンドで実行されているコマンドも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に書き込みながらバックグラウンドで実行

練習課題

まとめ

参考


<- | ->
Home | Contents
abe@injapan.net