POSIX1日1コマンド[part10]: bg
詳細はこちらの記事へ。1日1POSIXコマンドを実行してみようというやつです。
bg
とりあえず使ってみる
- 事前準備
# カレントディレクトリのファイル確認 [vagrant@localhost 009]$ ls file1 file2 file3 # 一秒ごとにlsした結果をlogに追記し、一定時間後に中断する。 [vagrant@localhost 009]$ while true; do ls; sleep 1s; done >> log_1 [Ctrl + C] # ファイルの中身確認 [vagrant@localhost 009]$ cat log_1 file1 file2 file3 log file1 file2 file3 log file1 file2 file3 log file1 file2 file3 log file1 file2 file3 log file1 file2 file3 log
- jobを作る
# 1秒ごとにdateコマンドを実行 [vagrant@localhost 009]$ while true; do date; sleep 1s; done >> log_2 ^Z ([Ctrl + z]で一時停止しjobとして保持) [1]+ Stopped sleep 1s # 1秒ごとにlsコマンドを実行 [vagrant@localhost 009]$ while true; do ls; sleep 1s; done >> log_1 ^Z [Ctrl + z]で一時停止しjobとして保持) [2]+ Stopped sleep 1s
Ctrl+z-はSIGTSTPシグナルで、プロセスの一時停止を行うときに使う
- jobの確認
# jobの確認 [vagrant@localhost 009]$ jobs [1]- Stopped sleep 1s [2]+ Stopped sleep 1s
ふたつの停止しているjobがある。
- バックグラウンドで実行するようにする。
[vagrant@localhost 009]$ bg 1 [1]+ sleep 1s & [vagrant@localhost 009]$ jobs [1]- Done sleep 1s [2]+ Stopped sleep 1s
バックグラウンドで実行されたことがわかる。(だが、継続処理はされない。)
- 処理に時間がかかるもの
処理に時間がかかるものの場合どうか。 sleepで1000秒待ってみる。
[vagrant@localhost 009]$ sleep 1000 ^Z [vagrant@localhost 009]$ jobs [3]+ Stopped sleep 1000 [vagrant@localhost 009]$ bg 3 [3]+ sleep 1000 & [vagrant@localhost 009]$ jobs [3]+ Running sleep 1000 &
バックグラウンドで実行(Running)されていることがわかる。
bg を知る
ざっくり使い方
bc [-l] [file...]
ざっくりDESCRIPTION
バックグラウンドでジョブを実行する。ジョブ制御が有効な場合(set -mの説明を参照)、bgユーティリティはバックグラウンドジョブとして実行することで、現在の環境(Shell Execution Environmentを参照)から中断したジョブを再開します。 job_idで指定されたジョブがすでに実行中のバックグラウンドジョブである場合、bgユーティリティは何の効果もなく、正常終了します。 bgを使用してバックグラウンドにジョブを配置すると、そのプロセスIDがあたかも非同期リストとして開始されたかのように、現在のシェル実行環境でプロセスIDが「知られている」ようになります。非同期リストを参照してください。
ざっくりOPTION
なし
ざっくりOPERANDS
bg job_id
再開するジョブをバックグラウンドジョブとして指定します。 job_idオペランドが指定されていない場合、直前に中断されたジョブが使用されます。 job_idの形式は、XBDのJob Control Job IDに記述されています。
ざっくりまとめ
Linux/Unixを使っていると、プロセスはよく目にすると思います。ジョブはどうでしょうか?
処理に時間がかかっている場合、別のターミナルを開きがちです。(SSHで新しくつなぐ)
みなさんはどうでしょうか?
実際にジョブを使うかは置いておいて、別の機会にジョブについて詳しく調べてみたいと思います。 それでは。