配置jar包开机自启动,会在启动之后自动停止

通过systemctl服务启动

该方式将java应用的启动脚本托管给systemctl服务,通过systemctl的一系列命令配置应用的开机启动。
1)进入到系统的/usr/lib/systemd/system目录下

cd /etc/systemd/system

2)添加.service文件

vim test.service
[Unit]
#服务描述 
Description=test
#当前服务在某个服务启动之后启动
After=syslog.target network.target

[Service]
#systemctl进程运行的类型,有多种类型,默认为simple通过主进程启动,forking后台启动也就是systemctl主进程启动后会再生成一个子进程执行当前服务
Type=forking
#存放应用进程号的文件路径为绝对路径
PIDFile=/home/service/pid
#配置应用启动命令,应用的启动脚本路径必须为绝对路径
ExecStart=/home/service/startup.sh start
#配置应用的重启命令
ExecReload=/home/service/startup.sh restart
#配置应用的停止命令 
ExecStop=/home/digital/service/startup.sh stop
#表示给应用分配独立的临时空间 
PrivateTmp=true
#指定启动应用的用户
User=test
#指定用户的用户组
Group=test    
#等待应用的启动时间,单位为秒,0表示禁用,如果在配置的时间内收到启动完成的信号,服务被认为执行失败然后自动退出 
TimeoutStartSec=0
# 杀掉指定进程,none表示没有进程会被杀掉,只执行stop操作
KillMode=none

[Install]
WantedBy=multi-user.target

在配置文件中添加了TimeoutStartSec和KillMode两个参数主要是为了防止java应用程序通过systemctl启动成功后进程会被自动干掉的问题,因为我在配置的过程中碰到一个问题就是在java应用程序已经成功启动一段时间后会进程会被莫名奇妙的干掉,尝试了多种方式,比如在配置文件中加上Restart=always参数发现应用会被不停地杀掉重启不能解决根本问题,最后发现配置文件中添加

TimeoutStartSec=0和KillMode=none后问题解决。

3)执行reload命令,使配置生效

sudo systemctl daemon-reload
  1. 将应用的执行命令设置为开机自动启动
# 设置开机启动
sudo systemctl enable test.service
# 设置开机不启动
sudo systemctl disabled test.service

5)手动启动应用程序

sudo systemctl start test.service

如果启动异常可通过systemctl status查看应用启动的状态

sudo systemctl status test.service
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值