systemd将java程序做系统服务并开机自启

环境centos7
依赖软件consul redis

cd 到/usr/lib/systemd/system 创建如下文件

consul.service

[root@i-57dt6yeg system]# cat consul.service
[Unit]
Description=consul
After=network.target
    
[Service]
ExecStart=/usr/bin/consul agent -server -ui -bootstrap-expect=1 -data-dir=/usr/local/consul -node=agent-one -advertise=172.30.138.56 -bind=0.0.0.0 -client=0.0.0.0
    
[Install]
WantedBy=multi-user.target

redis.service

[root@i-6a5f6jlp system]# cat redis.service 
[Unit]
Description=Redis persistent key-value database
After=network.target

[Service]
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf --daemonize no

[Install]
WantedBy=multi-user.target

java.service

[root@i-6a5f6jlp system]# cat emergencyjar.service 
[Unit]
Description=jar
After=network.target consul.service redis.service
Wants=consul.service redis.service

[Service]
Environment=dir=/data/sichuanair/site/backend/emergency
ExecStart=/bin/sh -c "exec /usr/bin/java -server -jar $dir/emergency.jar> $dir/emergency.log 2>&1"
Restart=on-failure
RestartSec=2s
[Install]
WantedBy=multi-user.target

**说明centos7系统systemd版本有点低,StandardOutput=file:/root/xhh.log
StandardError=file:/root/xhh.log 语句用不了。因此用sh将日志重定向到文件。在ubuntu经过测试可以使用,如下

[Unit]
Description=jar
After=network.target

[Service]
ExecStart=/usr/bin/java -jar /data/wind/backend/wind-power/wind-power.jar
StandardOutput=file:/root/xhh.log
StandardError=file:/root/xhh.log
Restart=always
RestartSec=2s
[Install]
WantedBy=multi-user.target

测试这种做法kill掉后还会重新拉起java应用,停掉java应用需要执行命令:

systemctl stop wind.service

效果:
在这里插入图片描述
针对tomcat这种应用,我采用的一次服务
tomcat

[root@i-eeqrv6m1 system]# cat tomcat.service 
[Unit]
Description=tomcat
After=network.target

[Service]
Environment=JAVA_HOME=/usr/local/jdk1.8.0_202 JRE_HOME=/usr/local/jdk1.8.0_202/jre
Type=forking
ExecStart=/bin/sh /data/sichuanair/site/backend/hotel/tomcat3/bin/startup.sh
ExecStop=/bin/sh /data/sichuanair/site/backend/hotel/tomcat3/bin/shutdown.sh
[Install]
WantedBy=multi-user.target

systemd可能是做了隔离的,外部的环境变量不能使用,因此在内部设置java的环境变量Environment即可
以上服务设置开机自启命令

systemctl enable wind.service

查看本机加载的服务

systemctl list-units ai*

查看是否设置开机之启

systemctl list-unit-files *jar.service 

参考:http://www.jinbuguo.com/systemd/systemd.service.html

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值