最近添加了两个自己开发的jar到systemctl,设置了开机自启动,B依赖于A,A启动需要一段时间,一般20S内可以启动完成,而B需要去连接A,但是开机的时候启动速度太快了,导致虽然两个服务都启动成功了,但是B并没有完全成功。
/usr/lib/systemd/system/a.service
[Unit]
Documentation=a-service
Before=b.service
[Service]
Type=forking
Restart=no
KillMode=process
ExecStart=/etc/rc.d/init.d/a start
ExecStop=/etc/rc.d/init.d/a stop
[Install]
WantedBy=multi-user.target
B
[Unit]
Documentation=b-service
Requires=a.service
After=a.service
[Service]
Type=forking
Restart=always
KillMode=process
ExecStart=/etc/rc.d/init.d/b start
ExecStop=/etc/rc.d/init.d/b stop
[Install]
WantedBy=multi-user.target
现在a是可以启动成功,b显示启动成功,但是实际没有成功。
目前想到的办法是另写一个脚本
vim /usr/lib/systemd/system/java.service
[Unit]
Description=java
[Service]
Type=forking
ExecStart=/usr/bin/bash -c "/test/app/start-java.sh"
[Install]
WantedBy=multi-user.target
脚本
cat /test/app/start-java.sh
#!/bin/bash
sh /test/app/a/start-a.sh
sleep 20s
sh /test/app/b/start-b.sh