【问题标题】:How can I create a launchd agent that will run only once?如何创建只运行一次的启动代理?
【发布时间】:2017-12-04 15:00:05
【问题描述】:

由于launchd plist 格式中没有“Year”参数,如何创建只运行一次而不是一年一次的代理?

【问题讨论】:

  • “仅一次”,如每次冷启动一次或在该系统存在时一次?
  • “仅一次”,如“仅一次”。我的理解是,Year 不是一个可能的参数这一事实使任何代理都至少成为年度代理,因为无法指定唯一的日期。我希望代理只在唯一的日期工作一次。
  • 你有没有得到这个答案?我正在尝试做同样的事情,但我的卸载脚本运行不可靠。

标签: macos launchd


【解决方案1】:

由于您提到“年份”,我假设您使用的是 StartCalendarInterval。 如果您不想间隔运行,请使用 RunAtLoad 键,这将导致它在每次系统启动时运行一次。

<key>RunAtLoad</key>
    <true/>

现在,如果您真的只希望脚本运行一次(永远),请不要使用 launchctl,只需在命令行上运行一次即可。

【讨论】:

  • 感谢您的提示。问题是我想设置一个事件在未来只发生一次。所以我不想现在就运行它,也不想等到那个时候。我想设置日期并完成它。我确实明白,launchd 可能不是最好的工具。
【解决方案2】:

为此使用密钥LaunchOnlyOnce

<key>LaunchOnlyOnce</key>
<true/>

这将只启动一次代理如果系统没有重新启动

【讨论】:

  • 这不是我要问的。请参阅我上面的评论。我需要一种创建唯一日期的方法,或者一旦代理工作一次就卸载代理的方法,等等。如果启动语法不允许我很好,我可以使用外部脚本来检查,我只需要知道在launchd语法中是否可能。
猜你喜欢
  • 1970-01-01
  • 2013-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多