Bash

為什麼在 ssh 會話關閉後後台程序終止

  • December 19, 2021

我使用 XManager xshell 作為 ssh 客戶端,連接到遠端伺服器,然後執行命令:

nohup sleep 60 &
ps -ef | grep sleep
exit

然後再次登錄

ps -ef | grep sleep

那個過程沒有了!

有什麼可能導致這個?ssh 守護程序是 openssh 8,伺服器是 redhat 7

使用systemd-logind,有(預設)設置:

KillUserProcesses=yes

在您的logind.conf中。它將在使用者註銷後終止使用者在其登錄會話中啟動的所有程序。您可以將其設置為 no,或為您的使用者設置以下設置:

KillExcludeUsers=yourusername

看來您想要的是以“可拆卸”方式執行遠端命令,以便將來可以連接回它。nohup確實是一個 hack,正如您所見,systemd 會在使用者會話終止時處理它。

tmux您可以通過使用一些終端多路復用器(如,或其他screen)更優雅地解決此問題,而不是通過禁用它的清理機制在 systemd 級別解決此問題。abduco

終端多路復用器可以創建分離的會話,即使您註銷也會繼續執行。您可以隨時重新連接到會話並調整其內容。

引用自:https://unix.stackexchange.com/questions/682793