[student@h006 ~]$ date ; who | wc # この一行で1ジョブ、3コマンド 2018年 7月 22日 日曜日 13:09:37 JST 4 19 182コマンドが終了する前に、キーボードからコマンド操作を指示することはできますが、 コマンドの実行はあくまでも、個々のジョブが完了してからになります。
[student@h006 ~]$ date ; sleep 10 # この時点で Enter を入力 2018年 7月 22日 日曜日 13:10:48 JST date # まだ処理は終わってないがコマンド入力はできる [student@h006 ~]$ date # 上記の sleep が完了してから、先行入力したコマンドを実行 2018年 7月 22日 日曜日 13:10:58 JSTコマンドの終わりにアンド(&)を付けると、 シェルはそのコマンドの終了を待たずにプロンプトを表示し、次のコマンドの入力待ちになります。
[student@h006 ~]$ date; sleep 10 & 2018年 7月 22日 日曜日 13:12:21 JST [1] 21562 [student@h006 ~]$ date # 上記ジョブ投入直後にプロンプトが表示される 2018年 7月 22日 日曜日 13:12:22 JST # 結果 date コマンド2つは同時に実行される [student@h006 ~]$ pwd /home/student [1]+ 終了 sleep 10
フォアグラウンドジョブはキーボードと直結されるため、同時期に1つだけですが、
バックグラウンドジョブは複数実行させることができます。
各バックグラウンドジョブにはジョブ番号とよばれる通し番号で管理され、
それを指定することで、フォアグラウンドへの付けかえ、一時停止、強制終了を
行うことができます。ジョブの一覧は jobs で確認できます。
[student@h006 ~]$ sleep 100 | # フォアグラウンドを一時停止 |
^Z | # 実際には ^Z は表示されません |
[1]+ 停止 | |
[student@h006 ~]$ bg %1 | # 一時停止したジョブをバックグランドで再開 |
[1]+ sleep 100 > | |
[student@h006 ~]$ jobs | # ジョブの一覧 |
[1]+ 実行中 | |
[student@h006 ~]$ kill %1 | # バックグラウンドの強制終了 [1]+ Terminated sleep 100 |
![]() | 機能 | フォアグラウンド | バックグラウンド |
---|---|---|---|
一時停止 | ^Z | stop %job | |
強制終了 | ^C | kill %job | |
切り替え | bg %job | fg %job |
bg %ジョブ番号 fg %ジョブ番号カレントジョブ(直近のジョブ)は、ジョブ番号を省略することができます。 カレントジョブは jobs コマンドで、プラス(+)が付加さ表現されています。
一時停止中のジョブがある時に、新たにジョブを停止すると後から投入されたジョブが
カレント・ジョブに変わります。この時カレント・ジョブはプレビアスジョブ
(直前のジョブ)に変わり、jobs コマンドで、マイナス(-)印で表現されます。
カレントジョブ、プリビアスジョブはそれぞれ %+, %- で指定できます。
[student@h006 ~]$ jobs [1] 停止 cat [2] 停止 wc [3]- 停止 tail -f - [4]+ 停止 head - [student@h006 ~]$ fg head - ^Z [4]+ 停止 head - [student@h006 ~]$ fg %- tail -f - ^Z [3]+ Stopped tail -f -
[student@h006 ~]$ exit ログアウト 停止しているジョブがあります。再度、ログアウトを指示すればバックグラウンドジョブを強制終了し、ログアウトします。