如何为需要按特定顺序运行的2台或更多服务器构建启动/关闭脚本?

时间:2019-04-02 00:37:20

标签: linux unix systemctl

我已经设置了一个在两台服务器上运行的应用程序:

  • 服务器1包含主要的管理模块
  • 服务器2包含其他模块,这些模块需要在管理模块启动并运行后启动

,并创建了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中)?

1 个答案:

答案 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