Nohup
程序java仍然被殺死
我需要在我的大學伺服器上執行一個 java 程序。我通過 ssh 通過他們的伺服器遠端登錄
所以我像這樣使用 nohup :
nohup java -jar project.jar &
但是,當我註銷並關閉終端然後重新登錄到伺服器時,我的程序失去/被終止。
nohup
只使程序免疫SIGHUP
並SIGQUIT
發出信號。當您從會話中註銷時,現代 shell 可能會發送其他信號,因此無法保證您的程序不會被殺死,即使在nohup
.更好的解決方案是使用
tmux
orscreen
,或者如果您使用bash
,您可以嘗試:$ java -jar project.jar & $ disown
代替(長期功能失調)的另一種選擇
nohup
:setsid java -jar project.jar </dev/zero &>/dev/null &
這有效地“守護”了該過程。它現在由 init 擁有,因此永遠不會被 HUP 處理,它的 I/O 流是安全的,並且它已被分叉到後台。
有關
man setsid
更多資訊,請參閱。與screen
or不同tmux
,這不是一個聲稱擁有所有權並繼續執行的程序。它只是在自己的程序組中啟動一個程序。