如何使用launchd注册代理

Modified on: Tue, 12 Feb 2019 03:20:02 +0800

我无法在OS X(Leopard)上使用launchctl / launchd安排定期启动。基本上,我无法在网上找到逐步的说明列表,直观的方法也不起作用。

sync.plist文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>Label</key>
        <string>net.madrat.utils.sync</string>
        <key>Program</key>
        <string>rsync</string>
        <key>ProgramArguments</key>
        <array>
            <string>-ar</string>
            <string>/path/to/folder/</string>
            <string>/path/to/backup/</string>
        </array>
        <key>StartInterval</key>
        <integer>7200</integer>
    </dict>
</plist>

我已将此脚本放在路径~/Library/LaunchAgents中。

接下来,我使用

注册

脚本

launchctl load ~/Library/LaunchAgents/sync.plist

最后,为了测试它是否有效,我开始这项工作:

 launchctl start net.madrat.utils.sync

- 什么都没发生。在终端中手动执行rsync命令会产生预期的结果。

我很确定该作业已正确注册,因为如果我尝试启动一个不存在的作业,我会收到一条错误消息(我没有在上面的命令中获取)

我做错了什么?

最佳答案

Lingon是一款管理launchd的优秀GUI工具。该项目现在似乎不受支持......但它仍然适用于10.5.x.

但针对您的具体问题......您试过吗

sudo launchctl list 

这将告诉您.plist是否正确触发。如果守护进程不是lauching,它将返回1,如果成功则返回0。也许找那个。

每当我看到'1'时,通常是因为我将脚本放在错误的位置,输入错误或设置权限不正确。

也....经常重启..我见过

launchctl start

在重启时没有效果..

此外,在仔细查看您的问题时......为什么不将该rsync代码放入bash脚本中......并将其粘贴在/usr/bin/中.....然后你就可以chmod+x那个文件....并简化你的.plist来随时激发那个脚本....

作者:CaseyIT

相关问答

添加新评论