环境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