最近,在一台系统为CentOS7的服务器上安装了一个rundeck服务,直接使用rundeckd start命令启动后,当退出终端时,该进程总是会被kill掉。在网上百度 and 谷歌了一番,得出一个结论,处理这种问题的常用方式一般是以下几种方式:
1、nohup command &;
2、setid
3、screen
然并卵,以上三种方式中1和2都尝试了,没什么效果,第3种方式较为复杂果断放弃。
然而,奇迹总是在不经意间发生的。不知怎么的就突然想起了systemd。于是我给该服务配置了一个service,内容如下:
$ cat rundeck.service
[Unit]
Description=serviceName_description
After=syslog.target network.target
[Service]
User=root
Type=forking
PIDFile=/opt/rundeck/var/run/rundeckd.pid
ExecStart=/etc/systemd/system/rundeck.sh
ExecStop=kill -s TERM $MAINPID
#Restart=always
#RestartSec=20s
[Install]
WantedBy=multi-user.target
保存退出后启动该service
$ systemctl enable rundeck.service
Created symlink from /etc/systemd/system/multi-user.target.wants/rundeck.service to /etc/systemd/system/rundeck.service.
$ systemctl list-unit-files |grep rundeck
rundeck.service enabled
$ systemctl daemon-reload
$ systemctl status rundeck.service
然后,尝试退出终端几次,发现问题得以解决。该进程终于不再因终端退出而被kill了。