shell终端断开(关闭)后,nohup进程消失

最近在新分配的VM发布应用,熟悉的启动后台启动命令:nohup java -jar xxx.jar &,查看日志:tail -f nohup.out,启动一切正常,浏览器也可以正常访问到端口。关闭xshell,应用无法访问,查看进程ps -ef|grep java,没有进程。

开始以为是客户端问题,换MobaXterm又执行一遍操作,断开终端,nohup进程消失。真是百思不得其解,百度说没有安全退出exit、启动命令加disown之类的都不行。但是同样的jar包,放到其他VM,同样的执行命令,一切正常。经过不懈努力,问题逐渐定位到了openssh上,新VM的openssh版本是8.01,度娘一下,说openssh8+以上的版本果然存在这个漏洞。

查看ssh版本: ssh -V

penSSH_8.1p1, OpenSSL 1.0.2k-fips 26 Jan 2017

解决办法

1.在/usr/lib/systemd/system/[email protected]配置的【Service】下追加,KillMode=process

1 [Unit]
2 Description=OpenSSH per-connection server daemon
3 Documentation=man:sshd(8) man:sshd_config(5)
4 Wants=sshd-keygen.service
5 After=sshd-keygen.service
6
7 [Service]
8 EnvironmentFile=-/etc/sysconfig/sshd
9 ExecStart=-/usr/sbin/sshd -i $OPTIONS
10 StandardInput=socket
11 KillMode=process #追加的设置

2.重启sshd服务

systemctl restart sshd.service

正常重启sshd服务就可以正常后台启动程序了,如果出现重启错误,先执行重启命令:

systemctl restart sshd

再执行命令:

 systemctl restart sshd.service

你可能感兴趣的:(java,openssh,jar,java,jar,openssh,shell)