アプリ系(GUI上などで動作するプログラムなど)は実行してもすぐには終了せず、プログラムを完了させる、もしくは停止・終了させるまでは起動したままとなります。
このようにプログラムが起動したままの状態だと、別のプログラムを実行する際、待ち状態となり、コマンドを入力することができません。
このような場合、バックグラウンドでプログラムを実行する「&」&を最後につけてコマンドを実行することで、上記のようなアプリ系などのプログラムを実行しながらの別のコマンド・プログラムを実行することができます。
「&(アンパサント)」の使い方(Linux)
基本的なバックグラウンドでの実行は、バックグラウンドで実行したいコマンドの後ろに「&(アンパサント)」をつけて実行します。
以下では「sleep」コマンドを実行し5秒間プロンプトが表示されるまで遅延させます。
$sleep 5 $ ←5秒後にプロンプトが戻る
sleepコマンドを実行中は他のコマンドが実行できずないのでバックグラウンドを実行するようにします。
sleepコマンドで最後に「&」をつけることでバックグラウンドで処理を実施します。
その間、dateコマンドを実行できることができ、5秒後にsleepコマンドが終了したことも確認できます。
$sleep 5 & [1] 1894705 $date 2022年 7月 10日 日曜日 12:59:45 JST $ [1]+ 終了 sleep 5
連続したコマンドをバックグラウンドで実行
例えば「sleep」コマンドを実行した際、以下のように、「date」コマンドを実施し、3秒後に再度「date」コマンドを実行するようにします。
この時、コマンドが実行されるまで、他のコマンドを実行すると、現在実行中のコマンドがキャンセルされます。
$date; sleep 3; date 2022年 7月 10日 日曜日 12:51:46 JST 2022年 7月 10日 日曜日 12:51:49 JST
複数のコマンド処理をバクグラウンドで実行する場合は、いくつかのやり方があります。
以下では複数のコマンドをバックグラウンドで実行するやり方をまとめました。
複数コマンドを()カッコで囲む
()カッコで複数コマンドを実行した例となります。
$ (date; sleep 5; date) & [1] 1896935 $ 2022年 7月 10日 日曜日 18:50:11 JST 2022年 7月 10日 日曜日 18:50:16 JST [1]+ 終了 ( date; sleep 5; date )
複数コマンドを{}カッコで囲む②
{}カッコで複数コマンドを実行した例となります。
$ { date; sleep 5; date; } & [1] 1896951 $ 2022年 7月 10日 日曜日 18:52:28 JST 2022年 7月 10日 日曜日 18:52:33 JST [1]+ 終了 { date; sleep 5; date; }
複数コマンドを改行をつけて{}カッコで囲む
改行と{}カッコを利用して複数コマンドを実行した例となります。
$ { > date; > sleep 5; > date; > } & [1] 1896994 $ 2022年 7月 10日 日曜日 18:58:36 JST 2022年 7月 10日 日曜日 18:58:41 JST [1]+ 終了 { date; sleep 5; date; }
shellコマンドで非同期実行で複数コマンドを実行する
以下はシェルコマンドを実行し、さらに「-c」オプションで複数コマンドを一まとめにして実行する。
$ sh -c 'date; sleep 5; date' & [1] 1897008 $ 2022年 7月 10日 日曜日 19:00:13 JST 2022年 7月 10日 日曜日 19:00:18 JST [1]+ 終了 sh -c 'date; sleep 5; date'
シェルで実行する
シェルの実行ファイルをあらかじめ作成して、複数コマンドを実行します。
※test.sh
#!/bin/sh date sleep 5 date
ファイルを実行する際は以下のようの「sh」コマンドを実行します。
$ sh test.sh & [1] 1897082 $ 2022年 7月 10日 日曜日 19:04:56 JST 2022年 7月 10日 日曜日 19:05:01 JST [1]+ 終了 sh test.sh
Linuxコマンドをバックグラウンドで実行する方法は以上となります。
エンジニアのオンライン学習
エンジニアにおすすめのオンライン教材比較 | |
ITエンジニアが自宅で学習ができるオンラインスクール比較 | |