启动以重复运行脚本,而无需等待OSX中的先前启动完成

问题描述 投票:0回答:1

假设我有下面的脚本

#! /bin/bash
sleep 300
dt=$(date '+%Y/%m/%d %H:%M:%S')
echo $dt >> /foo/bar/test.txt

当我设置启动代理每2分钟触发一次此脚本时...启动将等待脚本完成,然后再次触发它。因此,我每隔5分钟或更长时间才得到一次日期,而不是每2分钟一次。是否有一种方法可以每两分钟启动一次脚本,而不管脚本是否已完成?

macos launchd launchdagent
1个回答
0
投票

我还没有测试过,但是您应该能够让启动代理在后台运行脚本,就像这样:

<key>ProgramArguments</key>
<array>
      <string>/bin/bash</string>
      <string>-c</string>
      <string>/path/to/script &</string>

</array>
<key>AbandonProcessGroup</key>
<true/>

注意:如果需要将任何参数传递给脚本,请将其包含在与脚本路径相同的<string>中,并以空格分隔(而不是像通常在启动守护程序文件中那样,以单独的<string>分隔) )。需要AbandonProcessGroup键,以防止启动程序在守护程序退出时认为有用的情况下杀死任何剩余的子进程(例如您的实际脚本)。

© www.soinside.com 2019 - 2024. All rights reserved.