私はnohup
バイナリファイルとしてどんなシェルでもアクセスできることを知っています。ただし、exec
組み込み機能はどのシェルにも存在できます。
他のものより1つを選ぶ理由はありますか?
ベストアンサー1
魚と自転車のどちらが良いですか?nohup
そしてexec
別のことをしてみてください。
exec
シェルを別のプログラムに置き換えます。exec
単純なバックグラウンドタスクではあまり使用されません。exec myprogram; more stuff
シェルをに置き換えてもmyprogram
実行されませんmore stuff
。これは終了時に実行されるものとは異なりますが、myprogram; more stuff
バックグラウンドで起動して実行されます。more stuff
myprogram
exec myprogram & more stuff
myprogram
more stuff
myprogram & more stuff
nohup
指定されたプログラムを実行し、SIGHUP信号を無視します。端末が閉じると、カーネルはその端末(つまりシェル)の制御プロセスにSIGHUPを送信します。シェルはバックグラウンドで実行されているすべてのジョブにSIGHUPを順番に送信します。nohup
端末がハングしている場合(たとえば、リモートでログインして接続が切断された場合、または端末エミュレータを閉じた場合など)、タスクを実行すると、この方法で端末が終了するのを防ぐことができます。
nohup
また、プログラムの出力をファイルにリダイレクトしますnohup.out
。これにより、出力を書き込めない、または誤った出力によってプログラムが終了するのを防ぐことができます。これはnohup
入力をリダイレクトしないことに注意してください。プログラムを実行した端末からプログラムを完全に切断するには、次のようにします。
nohup myprogram </dev/null >myprogram.log 2>&1 &