Linuxの「&」はコマンドと共に使うことができる。
コマンドをバックグランドジョブとして使うためのコマンドで、「&&」などとは役割がまったく違っている。
簡単に確認していこう。
Linuxの「&」の使い方
linuxのデフォルトのシェルであるbashはコマンドの最後に「&」をつけると、そのコマンドをバックグランドジョブとして実行してくれる。
Linuxはマルチタスク対応なので、打ちこんで実行しているコマンド以外にもユーザの見えない場所でタスクを実行できるようになっている。
一般的に「いま打ちこんで実行しているコマンド」は「フォアグランドジョブ」、逆にそれ以外の「ユーザの見えない場所で実行しているタスク」を「バックグランドジョブ」と表現される。
具体的な書式は「コマンド &」となる。「&&」と混在しそうになるが、全く動作がことなるので注意しよう。基本的にはスクリプトで活用するのではなく、ユーザがコンソールにて使用することがほとんどだろう。
&&の使い方は下記だ。
実際に&を使ってみる
例えばコンソール上でsleepを使用してみよう。
$ sleep 3000 &
とすればよい。sleepは指定された時間を停止するコマンドだ。
上記を確認するとスリープしているにも関わらず、コマンドプロンプトが返ってくることが確認できるはずだ。
要するにバックグラウンドでsleepを実行している状態になる。(不思議といえば不思議な状態だ)
ジョブを管理するコマンド
バックグランドへジョブを回したのはいいが、ジョブの切り替えの仕方がわからないと操作に困るだろう。「jobs」「bg」「fg」コマンドについても触れておこう。
jobsコマンド
「jobs」コマンドを実行すると現在ユーザが設定したジョブ一覧が表示される
$ jobs
fgコマンド
「fg」コマンドは、バックグランドジョブを、フォアグランドジョブに切り替える。jobsで表示された番号を指定すればよい「fg 1」などだ。
$ fg 1
bgコマンド
「bg」コマンドは一時停止しているフォアグランドジョブをバックグランドジョブとして再開するコマンドである、なおフォアグランドジョブを一時停止するには「Control+z」を押すとジョブが一時停止する。
$ bg 1
下記も参考に。
まとめ
このページではLinuxの「&」の使い方についてお伝えした。実際にsleepコマンドを使って試してみていただければ使い方もわかりやすいだろう。