shell终端断开(关闭)后,进程消失问题
一、问题:
项目用nohup启动后端程序,不关闭远端连接没有问题程序正常运行,关闭远端连接xshell窗口,程序被杀死。
二、原因
经排查发现服务器的openssh被升级到了8.4版本,从而导致退出终端就会杀死通过终端启动的线程。
主要是与openssh的策略有关,8.4版本的默认策略是(当前控制组里面的所有子进程,都会被杀掉)
退出ssh的杀死程序(KillMode)有如下策略:
1、control-group(默认值):当前控制组里面的所有子进程,都会被杀掉
2、process:只杀主进程
3、mixed:主进程将收到 SIGTERM 信号,子进程收到 SIGKILL 信号
4、none:没有进程会被杀掉,只是执行服务的 stop 命令。
三、解决方法
1. 修改/lib/systemd/system/sshd@.service 配置
[Unit]
Description=OpenSSH per-connection server daemon
Documentation=man:sshd(8) man:sshd_config(5)
Wants=sshd-keygen.service
After=sshd-keygen.service
[Service]
EnvironmentFile=-/etc/sysconfig/sshd
ExecStart=-/usr/sbin/sshd -i $OPTIONS
StandardInput=socket
KillMode=process重启sshd
systemctl restart sshd.service
默认评论
Halo系统提供的评论