新贵:只发布一次东西

新贵:只发布一次东西

事实:如果您用于start on <event>作业,则您的作业可能会在每次<event>发生时运行。这新贵食谱提到了两种只运行一次作业的方法。

第一个对我来说是合乎逻辑的,涉及创建一个在 上启动的虚拟永久运行作业<event>。由于该虚拟作业是永久运行的且是单实例的,因此它只会启动一次,您可以start on started <dummy-job>在实际作业中使用。

第二种方法看起来简单很多:start on startup and <event>这个问题的目的是理解为什么第二种方法有效。这与理解如何on start处理由 复合的事件有关and。即,既然<event>发生了多次,为什么复合事件只触发一次呢?难道复合事件只有在之后才被重新触发两个都 startup<event>重新触发?我正在寻找对此的确认。

答案1

我将分享我的发现,它为我的问题提供了实证答案。

我使用 2 个事件进行了测试,desktop-session-start实际上net-device-up,复合事件似乎desktop-session-start and net-device-up仅在每个事件被触发时才会触发。

具体来说,在网络启动(dhcp 完成)后,我第一次登录 ubuntu 时收到该事件。然后,如果我切换网络,我就不会收到该事件。同样,如果我注销/登录,而网络保持连接,我不会收到该事件。我只有在登录时才能看到自上次触发以来,网络一直处于关闭状态,或者类似地,当我在注销后打开接口时,自上次触发以来,网络一直处于关闭状态。

答案2

仅当 event-a 和 event-b 都已发出时,该表达式event-a and event-b才为 true,并且如果您的作业运行,则必须再次发出两个事件才能为 true。

相关内容