我设置了一个在两台服务器上运行的应用程序:
后需要启动的其他模块
并创建了systemd文件,以便在重新启动后自动启动。
因此,服务器1具有类似以下内容:
admin.service
[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有类似的东西:
other.service
[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已经启动,那么可以实施什么来确保other.service (在服务器2中)只启动?
发布于 2019-04-02 08:52:26
在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
https://stackoverflow.com/questions/55465366
复制相似问题