「nohup」をいつ使用し、「&」をいつ使用する必要がありますか?


16

コマンドの最後にnohupと&を使用するのに最適なタイミングはいつかわかりません。

回答:


20

NohupはプログラムにHUPシグナルを無視させ、現在の端末が閉じられた/ユーザーがログアウトした後に実行できるようにします。Nohupはプログラムをバックグラウンドに送信しません。
&コマンドの最後はシェルジョブ制御に関連しており、ユーザーは現在のシェルセッションで作業を続行できます。
通常、nohupと&を組み合わせて、ユーザーのログアウト後に実行されるプログラムを起動し、現在のシェルセッションで作業を続行できます。


13

通常&、バックグラウンドで実行するのに時間がかからないコマンドを実行する場合、またはセッションから予期せずログアウトした場合にプログラムが終了してもあまり気にしないコマンドを使用します。

xcalc &
rdesktop 1.2.3.4 & 
./this_only_takes_a_few_seconds_but_i_want_my_shell_back.py &

VPNまたは危険なリモート接続で作業する場合nohup、実行に時間がかかるものを実行するために使用する傾向があります。たとえば、リモートホストで大量のデータインポートを実行nohupする場合、再接続時に切断されても最初からやり直さないようにするために使用できます。

nohup ./do_data_load.py mydatafile.txt &

開発者がサービスを適切にデーモン化しない場合にも使用されるため、nohupログアウト時にサービスが強制終了されないようにする必要があります。

nohup sillyd &

nohup最後の2つの例のようなものを実行するときに忘れてしまった場合は、bashまたはzshビルトインdisownを使用して同じ効果を得ることができます。

$ sillyd &
[1] 12345            # Whoops!
$ disown %1

ログアウトnohupせず&にnohup'dセッションに再接続することはできないため、なしで使用することは非常にまれです。これにより、対話型コマンドの有用性がほとんどなくなります。セッションを超えて持続したい、または複雑な切断を避けたい対話型コマンドがある場合は、を使用できますscreen。完全に武装した運用screenセッションの火力はこの投稿の範囲を超えているため、詳細を確認する必要があります


tmuxは、画面よりも構成と使用が簡単だと思います。また、BSDはライセンスを取得しました。
クリスタプス

1
byobu画面にいくつかの素晴らしい機能を追加することもできます。ほとんどのaptリポジトリとRed HatのEPELリポジトリで利用できます。
ジェームズ

0

nohup:現在のユーザーをログアウト、プロセスは停止しません

&:このシンボルを使用すると、現在の端末には出力がなく、プロセスはバックグラウンドで実行されます


4
&は標準出力とエラーストリームを削除しないため、出力されます。このような(bashの)コマンドのようなストリームリダイレクトを使用する必要があります> / dev / null 2> 1
Kristaps
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.