「exec&」の代わりに「nohup&」を使用する理由

「exec&」の代わりに「nohup&」を使用する理由

私はnohupバイナリファイルとしてどんなシェルでもアクセスできることを知っています。ただし、exec組み込み機能はどのシェルにも存在できます。

他のものより1つを選ぶ理由はありますか?

ベストアンサー1

魚と自転車のどちらが良いですか?nohupそしてexec別のことをしてみてください。

execシェルを別のプログラムに置き換えます。exec単純なバックグラウンドタスクではあまり使用されません。exec myprogram; more stuffシェルをに置き換えてもmyprogram実行されませんmore stuff。これは終了時に実行されるものとは異なりますが、myprogram; more stuffバックグラウンドで起動して実行されます。more stuffmyprogramexec myprogram & more stuffmyprogrammore stuffmyprogram & more stuff

nohup指定されたプログラムを実行し、SIGHUP信号を無視します。端末が閉じると、カーネルはその端末(つまりシェル)の制御プロセスにSIGHUPを送信します。シェルはバックグラウンドで実行されているすべてのジョブにSIGHUPを順番に送信します。nohup端末がハングしている場合(たとえば、リモートでログインして接続が切断された場合、または端末エミュレータを閉じた場合など)、タスクを実行すると、この方法で端末が終了するのを防ぐことができます。

nohupまた、プログラムの出力をファイルにリダイレクトしますnohup.out。これにより、出力を書き込めない、または誤った出力によってプログラムが終了するのを防ぐことができます。これはnohup入力をリダイレクトしないことに注意してください。プログラムを実行した端末からプログラムを完全に切断するには、次のようにします。

nohup myprogram </dev/null >myprogram.log 2>&1 &

おすすめ記事