概要
job を用いて複数のコマンドを1つのシェルで平行して実行することができる
普通にコマンドを実行すると始まって、入力を受け付けるのが フォアグラウンドジョブ
入力を受け付けずに、CUIの後ろで実行されるのが バックグラウンドジョブ
バックグラウンドジョブを活用すると、時間のかかる処理を、1つのコンソールで並列で処理できて便利
バックグラウンドでジョブを実行する方法
&
をつけると、最初からバックグラウンドで実行される
${コマンド} &
フォアグラウンドジョブをバックグラウンドに移動する方法
^z
で現在実行中のジョブがバックグラウンドに移動
ただし、停止状態になるため、 bg ${job id}
で再開する必要がある
バックグラウンドジョブの一覧を表示するコマンド
jobs
バックグラウンドジョブをフォアグラウンドに持ってくる方法
バックグラウンドジョブは、標準入力が必要になると停止状態になるので、 fg
コマンドでフォアグラウンドに持ってくる必要がある
fg ${jobsで出てきたjob id}
(やや番外) ログアウトしてもコマンドを停止させない方法
nohup
を先頭につける
- 重い処理をリモートで実行するときに
&
と併用して、バックグラウンドジョブにしてexit
することが多い
nohup ${コマンド} &