【问题标题】:Systemd - How to trigger another unit while reloading a service?Systemd - 如何在重新加载服务时触发另一个单元?
【发布时间】:2021-04-20 15:27:12
【问题描述】:

我目前面临的问题是,我想在另一个单元重新加载时触发 Systemd 单元 - 而不是重新启动。这是我到目前为止所取得的成就:

[Unit]
After=teleport.service
Requires=teleport.service
PartOf=teleport.service

[Service]
ExecStart=/usr/bin/bash -c "Reloaded gracefully | /usr/bin/logger"

但这仅在使用 systemctl restart teleport 时有效。重新加载不起作用。不接触原始的 teleport.service 单元,如何实现这一点?

【问题讨论】:

  • 虽然 Stack Overflow 允许某些关于 systemd 的问题,但我们要求它们(就像这里提出的所有问题一样)与编程特别相关。这个问题似乎与编程无关,而是与编程有关,而是对其进行配置,这使得它在这里偏离主题。您也许可以在unix stack exchange 上提出类似这样的问题。

标签: linux systemd teleport


【解决方案1】:

发现这可以通过插入文件轻松实现。可以像这样使用而不是编写新的单元插入文件:

您可以在 /etc/systemd/... 中为 /lib 或 /usr/lib 中定义的单元创建插入文件: /etc/systemd/system/teleport.service.d/override.conf

[Service] 
ExecReload=
ExecReload=/usr/bin/bash -c "/bin/kill -HUP $MAINPID; usr/bin/bash -c "Reloaded gracefully | /usr/bin/logger"

首先需要取消设置定义的属性。 [Service] 之后会发生什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    • 1970-01-01
    • 2021-09-15
    • 1970-01-01
    • 2021-11-20
    • 2016-09-09
    • 1970-01-01
    相关资源
    最近更新 更多