kasei_sanのブログ

かせいさんのIT系のおぼえがきです。胡乱の方はnoteとtwitterへ

バックグラウンドジョブおぼえがき

概要

job を用いて複数のコマンドを1つのシェルで平行して実行することができる

普通にコマンドを実行すると始まって、入力を受け付けるのが フォアグラウンドジョブ

入力を受け付けずに、CUIの後ろで実行されるのが バックグラウンドジョブ

バックグラウンドジョブを活用すると、時間のかかる処理を、1つのコンソールで並列で処理できて便利

バックグラウンドでジョブを実行する方法

& をつけると、最初からバックグラウンドで実行される

${コマンド} &

フォアグラウンドジョブをバックグラウンドに移動する方法

^z で現在実行中のジョブがバックグラウンドに移動

ただし、停止状態になるため、 bg ${job id} で再開する必要がある

バックグラウンドジョブの一覧を表示するコマンド

jobs

バックグラウンドジョブをフォアグラウンドに持ってくる方法

バックグラウンドジョブは、標準入力が必要になると停止状態になるので、 fg コマンドでフォアグラウンドに持ってくる必要がある

fg ${jobsで出てきたjob id}

(やや番外) ログアウトしてもコマンドを停止させない方法

nohup を先頭につける

  • 重い処理をリモートで実行するときに & と併用して、バックグラウンドジョブにして exit することが多い
nohup ${コマンド} &