從本機(非 ssh)會話註銷後保持進程處於活動狀態

從本機(非 ssh)會話註銷後保持進程處於活動狀態

註銷電腦後是否可以保持伺服器進程運作?

通常我會使用screentmuxnohup,當我不使用 ssh 但在本地使用機器時,所有這些都可以工作。 (它還運行 Gnome 桌面。)

那麼,當您本機登入電腦時,是否可以啟動伺服器進程呢?

答案1

從 systemd 230 開始,KillUserProcesses預設為啟用:

https://github.com/systemd/systemd/commit/97e5530cf2076a2b4fc55755917262607aaa6338

您可以透過編輯來變更此設置/etc/systemd/logind.conf,例如設定KillUserProcesses=no為全域停用此行為,或設定KillExcludeUsers=<your-username>為從此行為排除您的使用者名稱。

或者,您可以透過使用 啟動伺服器進程來暫時解決此問題systemd-run --scope --user <executable>。您可以在Example 5. Start screen as a user service底部找到有關此內容的更多詳細信息systemd 運行(1)

答案2

我正在運行 Debian Stretch,並且KillUserProcesses預設情況下在我的系統上處於停用狀態,但screen無法在登出後繼續存在。經過一些實驗,以下似乎可以在本地註銷後保持螢幕會話運行:

screen -m

或者如果您想立即分離

screen -m -d

我不知道為什麼會這樣,但它似乎對我有用。

編輯:

我做了一些更多的測試,似乎使用命令運行螢幕無法生存。我開始了 4 個會話,並在需要時脫離它們:

註銷前:

user    31365     1  0 16:20 ?        00:00:00 SCREEN -S mdc -m -d vim
user    31376     1  0 16:20 ?        00:00:00 SCREEN -S md -m -d
user    31391     1  0 16:20 ?        00:00:00 SCREEN -S mc -m vim
user    31399     1  0 16:21 ?        00:00:00 SCREEN -S m -m

登出並重新登入後:

user    31376     1  0 16:20 ?        00:00:00 SCREEN -S md -m -d
user    31399     1  0 16:21 ?        00:00:00 SCREEN -S m -m

看起來用命令啟動的兩個實例已在註銷期間終止。我附加到剩餘的兩個會話並啟動 VIM,然後分開並再次登出。重新登入後,會話仍在運行,並且 VIM 仍在每個會話中運行。

相關內容