转载自:https://blog.csdn.net/slqgenius/article/details/85778578
一,原由
因为使用 nohup 和 & 这种方式启动jar包的话,只会放在后台里面执行,如果某天,人为或机器故障等原因,触发重启了。那样程序就会关闭,不清楚系统的人,可能都不知道这个需要启动。
所以,这里使用Centos7系统自带的systemctl管理实现一个开启自动管理
二,创建系统文件
# 路径一定要写清楚,systemctl要根据这个来编写
vim /etc/init.d/zuul
#zuul文件的内容
- #!/bin/bash
- PID_PATH=/var/run/zuul-service.pid
- Service_Name=zuul-service
- case "$1" in
- start)
- /zuul-service/zuul-start.sh
- ;;
- stop)
- kill $(cat ${PID_PATH})
- rm ${PID_PATH}
- ;;
- restart)
- $0 stop
- $0 start
- ;;
- status)
- if [ -e ${PID_PATH} ];then
- echo "${Service_Name} is running, pid=$(cat ${PID_PATH})"
- else
- echo "${Service_Name} is NOT running"
- exit 1
- fi
- ;;
- *)
- echo "Usage: $0 {start|stop|status|restart}"
- esac
- exit 0
#赋予执行权限
chmod a+x /etc/init.d/zuul
三,创建启动脚本
vim /zuul-service/zuul-start.sh
#zuul-start文件的内容
- #!/bin/bash
- #启动命令
- /usr/bin/java -jar /zuul-service/rocket-zuul-0.0.1-SNAPSHOT.jar >> /zuul-service/zuul.log 2>&1 &
- #将pid写进文件
- echo $! > /var/run/zuul-service.pid
#赋予执行权限
chmod a+x /zuul-service/zuul-start.sh
四,将服务添加进systemctl进行管理
vim /usr/lib/systemd/system/zuul.service
#zuul.service文件的内容
- [Unit]
- Documentation=zuul-service
- [Service]
- User=root
- Group=root
- Type=forking
- Restart=no
- KillMode=process
- ExecStart=/etc/rc.d/init.d/zuul start
- ExecStop=/etc/rc.d/init.d/zuul stop
- [Install]
- WantedBy=multi-user.target
#启动zuul
systemctl daemon-reload
systemctl enable zuul
systemctl start zuul
- CentOS7自定义系统服务
- CentOS7的服务systemctl脚本存放在:/usr/lib/systemd/,有系统(system)和用户(user)之分,需要开机不登陆就能运行的程序,存在系统服务里,即:/usr/lib/systemd/system目录下.
- CentOS7的每一个服务以.service结尾,一般会分为3部分:[Unit]、[Service]和[Install]
- [Unit]部分主要是对这个服务的说明,内容包括Description和After,Description 用于描述服务,After用于描述服务类别
- [Service]部分是服务的关键,是服务的一些具体运行参数的设置.
- # 设置服务运行的用户
- User=users
- # 设置服务运行的用户组
- Group=users
- # 设置进程的启动类型
- Type=forking
- # 服务重启策略
- Restart=no
- # 杀掉进程的策略
- KillMode=process
- # 服务的具体运行命令
- ExecStart
- # 停止命令
- ExecStop
- # 重置命令
- ExecReload
- # 存放PID的文件路径,
- PIDFile
- # 环境变量
- Environment="JAVA_HOME=/usr/local/jdk1.8.0_181"
- # 表示给服务分配独立的临时空间
- PrivateTmp=True
- 注意:[Service]部分的启动、重启、停止命令全部要求使用绝对路径,使用相对路径则会报错!
五、systemctl管理命令
#设置开机自启
systemctl enable zuul
#关闭开机自启
systemctl disable zuul
#启动服务
systemctl start zuul
#停止服务
systemctl stop zuul
#重启服务
systemctl restart zuul
#查看服务状态
systemctl status zuul
#检查开机自启状态
systemctl is-enabled zuul