我已经设置了一个在两台服务器上运行的应用程序:
,并创建了systemd文件以在重启后自动启动。
因此服务器1具有以下内容:
管理员服务
[Unit]
Description=Start Admin
[Service]
Type=simple
ExecStart=/home/usr/startup/startAdmin.sh
ExecStop=/home/usr/startup/stopAdmin.sh
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
服务器2具有以下特征:
其他服务
[Unit]
Description=Start Others
[Service]
Type=simple
ExecStart=/home/usr/startup/startOther.sh
ExecStop=/home/usr/startup/stopOther.sh
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
可以采取什么措施来确保仅在admin.service启动后才能启动其他服务(在服务器2中)?
答案 0 :(得分:1)
在 other.service 中,您可以添加 ExecStartPre (man systemd.service
)。
语法与ExecStart
相同。
或 other.service 可以依赖于检查服务 check.service
在两个命令中,该命令都将类似于:
while ( ! nc -w2 -z <ADMINIP> <ADMINPORT> >/dev/null 2>&1 ) ; do sleep 2 ; done