当另一个服务启动时自动启动一个服务

当另一个服务启动时自动启动一个服务

我有一项服务依赖于另一个服务:

[Unit]
After=main.service
Requires=main.service

[Service]
ExecStart=/usr/local/bin/dependent
Restart=always

很酷的事情:

  • 运行systemctl stop main会导致该dependent服务也停止
  • 运行systemctl restart main导致dependent服务也启动

但是,运行systemctl main start不会导致该依赖服务启动。

我该怎么做?

答案1

After=参数Before=严格地用于命令启动(也可能关闭)两个服务(如果两个服务都被要求启动)。在那里列出服务并不意味着这些服务也将启动。

如果您想控制是否启动另一个服务,则需要使用Requires=Wants=、 或Conflicts=(在 参考资料部分中[Unit])或WantedBy=(在参考资料部分中[Install])。

就您而言,您希望在启动某个服务所依赖的服务时启动该服务(这不会自动发生,因为没有理由这样做)。您需要将以下内容添加到文件中,然后运行systemctl enable dependent

[Install]
WantedBy=main.service

这表示当main启动时,也启动该服务,并且如果该服务恰好失败,则不要停止main

相关内容