プロセスをnohupで開始させ、ファイルではなくstdoutに書き込むことは可能ですか?またはファイルと画面上にあるのでしょうか?
nohup python start.py &
に書き込みnohup.out
ますが、画面に出力したいのですが、nohupは接続が切れたときのヘッジとしてのみ使用されます。
プロセスをnohupで開始させ、ファイルではなくstdoutに書き込むことは可能ですか?またはファイルと画面上にあるのでしょうか?
nohup python start.py &
に書き込みnohup.out
ますが、画面に出力したいのですが、nohupは接続が切れたときのヘッジとしてのみ使用されます。
回答:
nohup python start.py & tail -f nohup.out
tail -f
意志で殺され、再起動することができます。
screen python start.py
そして、自由に切断/再接続します。
からman nohup
:
標準入力が端末の場合、/ dev / nullからリダイレクトします。標準出力が端末の
nohup.out
場合、可能であれば出力を追加します$HOME/nohup.out
。標準エラーが端末の場合、標準出力にリダイレクトします。出力をFILEに保存するには、を使用しますnohup COMMAND > FILE
。
(コメントに基づいて完全に改訂)
シェルを終了するか、ターミナルを閉じると、子プロセスにSIGHUP(ハングアップ、名前はターミナルがUNIXコンピューターにダイヤルインする時間に由来する)が送信され、ターミナルが存在しないことが通知されます長い接続。さらに、シェルプロセスが終了すると、子プロセスのstdin、stdout、およびstderrストリームが閉じられます。通常、これにより、子プロセスが停止します。通常、これはプロセスをユーザーなしで実行したままにしないため、良いことです。
このnohup
プログラムの目的は、シェルが終了して端末が切断された後でもプロセスを実行し続けることです。そのため、出力を端末に送信すると、目的が完全に失われます。私の元の答え(nohup COMMAND | cat
)は役に立ちませんでした:ターミナルが閉じられると、猫の出力が閉じられ、猫が死んでパイプが壊れてSIGPIPEがnohupプロセスに送られて死にます。目的を考えずに質問に答えました。
目的を達成するために、実行nohup COMMAND > FILE
して、出力を送信するファイルの名前を選択します。次にtail -f FILE
、端末で出力を監視するために使用します。
同様に、次のシェル構成を使用できCOMMAND >FILE 2>&1 </dev/null &
ます。stdioストリームが端末に接続されていないコマンドを実行し、端末を閉じた後も実行を継続できます。さらに、zshでシェルビルトインを実行してdisown
、シェルの終了時にプロセスを強制終了する代わりにプロセスを終了するようにzshに指示します。
tail -f filename
れている場合、ファイルに何が書き込まれているかを確認するために使用できます。
vladimir@lin-mint-cin:~$ tty<br>
/dev/pts/8<br>
vladimir@lin-mint-cin:~$ ln -sf /dev/pts/8 nohup.out<br>
vladimir@lin-mint-cin:~$ nohup ls<br>
nohup: ввод игнорируется, вывод добавляется в 'nohup.out'<br>
2019-05-31-090159.jpg giphy.gif nim_porojects sketchbook
Aptana_Studio_Workspace IdeaProjects nohup.out target
Desktop jack_capture_01.wav Pictures Templates
Documents lib Postman tmp
Downloads mad Projects trace.edn
eclipse Mail prolog_ws uinfild_hill-iskusstvo_shemotehniki_tom_1_izd4-e-1489315100.pdf
eclipse-dsl-workspace Music proxy-secret Videos
eclipse-workspace mygolo Public workspace-dltk
erlang_ex my_golo_ws rust-workspace проекты