Centos7中java -jar使用systemctl做开机自动

转载自: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

其他参考文档:http://www.jinbuguo.com/systemd/systemd.service.html

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值