Linuxコマンドのバックグラウンド「&」をわかりやすく

Linuxコマンドのバックグラウンド「&」をわかりやすく

シェルプロンプトで、コマンドの後ろに&をつけるとバックグラウンドで実行されます。

重たい処理はバックグラウンドで実行すると、裏で勝手に実行されてシェルプロンプトはすぐに戻ってきます。

jobsコマンド

バックグラウンドで実行されているジョブを確認することができます。

バックグラウンドで実行していない場合はjobsコマンドを実行しても何もありません。

50秒待機するsleepコマンドをバックグラウンドで実行してみます。

バックグラウンドで実行した後にjobsコマンドを実行すると、バックグラウンドで実行されているジョブ一覧が表示されました。

[1]がジョブ番号、22586がプロセスになります。

サブシェルをバックグラウンドで実行する

サブシェルをバックグラウンドで実行することも可能です。()のあとに&をつけるだけです。

ジョブの終了

バックグラウンドジョブの終了は、Enterを押します。

3秒待機するsleepコマンドをバックグラウンドで実行します。

何回かEnterキーを押していたら、終了していたらジョブ終了と出力されます。

ただEnterキーを押すのが面倒です。リアルタイムに終了を通知させたい場合はsetコマンドを使用します。

set -o notify(set -b)コマンドを実行してから、バックグラウンドで実行すると、終了と同時に通知が勝手にされるようになります。

ジョブとプロセスの違い

Linuxでジョブとプロセスという考えがあります。

プロセスはプログラムの実行単位のことで、ジョブはシェル実行単位という感じです。

複数プロセスで1ジョブというイメージです。

  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA