当通过控制台通过屏幕启动进程时,这些进程会在注销时被终止。
login: root
password: ***
然后启动一些命令:
screen -d -S sample -m bash -c '/hom/app/server start'
此后服务开始运行并且屏幕显示该进程
screen -ls
# output
# There are screens on:
# 1805.sample (01/05/24 12:13:18) (Detached)
# 1 Sockets in /run/screen/S-root.
但是当我注销时,屏幕会话也将被破坏。
通过 root(使用 RootLoginPermit)在同一台计算机上执行相同的操作,ssh
所有内容也会在注销后运行。
我在 Ubuntu 20.04 和 22.04 上测试了相同的操作。
当通过控制台会话启动时,它在 Ubuntu 20.04 上也没有问题。
但它不适用于 Ubuntu 22.04,也不适用于控制台。
这是 Debian(测试了 bullseye 和 bookworm 的最新更新)和 Ubuntu(测试了 22.04)上的问题。
KillUserProcesses=no
默认情况下会检查并设置所有找到的解决方案。我还安装了一个具有相同行为的全新 Debian。
在 debian 和 ubuntu 上它始终是相同的屏幕版本Screen version 4.08.00 (GNU) 05-Feb-20
Ubuntu
- 从 Ubuntu 20.04 进行全新安装
- 分离模式下的运行屏幕
- 注销并再次登录
- 屏幕进程仍然存在
- 将 Ubuntu 版本升级到 Ubuntu 22.04
- 分离模式下的运行屏幕
- 注销并再次登录
- 屏幕进程被杀死
德比安
- 从 Debian 10 进行全新安装
- 分离模式下的运行屏幕
- 注销并再次登录
- 屏幕进程仍然存在
- 将 Debian 版本升级到 Debian 11
- 分离模式下的运行屏幕
- 注销并再次登录
- 屏幕进程被杀死
因此,发布中存在一些重大但目前我尚不清楚的变化。