▼すべてを開く。
▲すべてを閉じる。
$ tar -cf /tmp/masa_home.tar masa & [1] 1455
tarコマンドで、オプション、ディレクトリ、ファイル名を指定し、最後にアンパサンド「&」を付ける。これでtarコマンドがバックグラウンドで実行される。
コマンドを実行した時に返ってくる「[1] 1455」の後の「1455」がプロセスIDで、プロセスを終了させたい時は、この番号を指定してkillコマンドを実行する。
普通にコマンドを実行すると、コマンドの実行に時間がかかる時はその間はプロンプトが返ってこないので何も操作ができない。そのような時に、時間のかかるコマンドをバックグラウンドで実行すればすぐに他の操作ができ、コマンドの終了を待つ必要が無くなる。
アンパサンド「&」は、コマンドをバックグラウンドで実行するシェルの機能。実行するコマンドの最後に付ける。シェルがこれを解釈してコマンドを実行する。
$ tar -cf /tmp/masa_home.tar masa & [1] 1538 $ tar: masa/work/dir1~~/file1~: open 不能: 許可がありません tar: 処理中にエラーが起きましたが、最後まで処理してからエラー終了させました [1]+ Exit 2 tar -cf /tmp/masa_home.tar masa
バックグラウンドでコマンドを実行中にエラーが出た場合は、エラーメッセージが端末に表示される。
$ nohup find . -type d -empty -print > emp_dir & [1] 1570
nohupコマンドで、実行させるコマンド「find . -type d -empty -print > emp_dir」を指定し、バックグラウンドで実行する「&」を付けて実行すると、コマンドがバックグラウンドで実行されて、ユーザがログアウトしても実行されているコマンドにハングアップシグナルが送られずにコマンドが最後まで実行される。
ただし、マシンがシャットダウンされれば実行が止まり、再起動してもそのコマンドが続けて実行されることはない。
標準出力と標準エラー出力は `nohup.out' へ追加書き込みモードでリダイレクトされる。
コマンド実行を途中で中止する場合は、killコマンドでプロセスを終了させる。プロセス番号は、コマンド実行時に表示される。この例の場合は「1570」がプロセス番号である。
findコマンドで、カレントディレクトリ「.」にあるディレクトリのうちで空のディレクトリを検索し、表示する。その結果をファイル「emp_dir」に出力する。