アプリケーションをバックグラウンドで実行することの利点が何であるかは本当にわかりません。コマンドライン経由の
ようなものApplication &
。
なぜバックグラウンドでアプリケーションを実行するのですか?いつ実行するかを決定する必要がありますか?
通常、実行に時間がかかりすぎてユーザーの操作を必要としないアプリケーションは、ターミナルで作業を続行できるようにバックグラウンドに送信されます。
バックグラウンドで実行されているジョブは、STDOUT、STDIN、およびSTDERRが異なることを除いて、フォアグラウンドで実行されているジョブと同じように扱われます。
ファイルの圧縮やバックアップなど、時間がかかりすぎるジョブがある場合は、それらのジョブをバックグラウンドに送信できます。
jobs
コマンドを使用して、バックグラウンドで実行されているジョブを一覧表示できます。
$ ./job1.sh &
[1] 9747
$ ./job2.sh &
[2] 9749
$ ./job3.sh &
[3] 9751
$ jobs
[1] Running ./job1.sh &
[2]- Running ./job2.sh &
[3]+ Running ./job3.sh &
ここでは、ジョブがバックグラウンドシェルに送信されるたびに、プロセスのjob id
とpid
が表示されます。プロセスをフォアグラウンドに戻したい場合は、fg
コマンドを使用してプロセスを戻すことができます。
$ fg 1
./job1.sh
ただし、ターミナル(シェル)を閉じると、SIGHUPがシェルから生成されたすべてのバックグラウンドプロセスに送信され、それらのプロセスが停止することに注意してください。これを防ぐには、disown
コマンドを使用してこれらのプロセスをジョブテーブルから削除し、プロセスが強制終了されないようにします。
最良の方法の1つは、nohup
コマンドを使用してバックグラウンドプロセスを開始し、SIGHUPシグナルがプロセスを強制終了せず、バックグラウンドで安全に実行されるようにすることです。
huponexit
bashシェルのオプションを設定することで、SIGHUPが子プロセス(bgジョブ)に送信されないようにすることもできます。
$ shopt -s huponexit
このオプションは、Bashの最新バージョンではデフォルトで設定されていますが、設定されていない場合は、これを追加~/.bashrc
してデフォルトの動作にすることができます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加