註銷電腦後是否可以保持伺服器進程運作?
通常我會使用screen
、tmux
或nohup
,當我不使用 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 仍在每個會話中運行。