0
点赞
收藏
分享

微信扫一扫

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-6a5f6jlp system]# cat tomcat.service 
[Unit]
Description=tomcat
After=network.target

[Service]
Type=oneshot
ExecStart=/bin/bash /data/sichuanair/site/backend/hotel/tomcat3/bin/startup.sh
ExecStop=/bin/bash /data/sichuanair/site/backend/hotel/tomcat3/bin/shutdown.sh
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target

以上服务设置开机自启命令

systemctl enable wind.service

查看本机加载的服务

systemctl list-units ai*

查看是否设置开机之启

systemctl list-unit-files *jar.service 

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

举报

相关推荐

0 条评论