我无法在 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>
Run Code Online (Sandbox Code Playgroud)
我已将此脚本放在 path 中~/Library/LaunchAgents。
接下来,我使用注册了脚本
launchctl load ~/Library/LaunchAgents/sync.plist
Run Code Online (Sandbox Code Playgroud)
最后,为了测试它是否有效,我开始了这项工作:
launchctl start net.madrat.utils.sync
Run Code Online (Sandbox Code Playgroud)
- 什么都没有发生。rsync在终端中手动执行命令会产生预期的结果。
我相当确定该作业已正确注册,因为如果我尝试启动一个不存在的作业,我会收到一条错误消息(我在上面的命令中没有收到)。
我做错了什么?
Ark*_*rko 12
长答案:
如果不了解一些基本原理,就很难使用 launchd。因此,您可能找不到任何分步说明,它具有如此多的功能。一个好的举措是前往 ADC 的入门指南:http : //developer.apple.com/macosx/launchd.html
您还可以阅读手册页launchd,launchctl以及文件的.plist语法launchd.plist。
关于将代理或守护程序放在哪里经常存在误解,所以让我在这里推送一些有关它的信息:
Run Code Online (Sandbox Code Playgroud)~/Library/LaunchAgents Per-user agents provided by the user. /Library/LaunchAgents Per-user agents provided by the administrator. /Library/LaunchDaemons System wide daemons provided by the administrator. /System/Library/LaunchAgents Mac OS X Per-user agents. /System/Library/LaunchDaemons Mac OS X System wide daemons.
简短的回答:
您的 plist 文件的名称可能有误,现在无法测试,但我会将其设置为 net.madrat.utils.sync.plist. unload如果您编辑了文件,在加载它之前先启动您的守护进程也可能很有用。
Lingon是一个很好的 GUI 工具来管理 launchd。该项目现在似乎不受支持......但它肯定仍然适用于 10.5.x。
但是对于你的具体问题......你有没有尝试过
sudo launchctl list
Run Code Online (Sandbox Code Playgroud)
这将告诉您 .plist 是否正确触发。如果守护进程没有启动,它将返回 1,如果成功则返回 '0'。也许寻找那个。
每当我看到“1”时,通常是因为我将脚本放在错误的位置、打错了字或设置了错误的权限。
另外....经常重启..我见过
launchctl start
Run Code Online (Sandbox Code Playgroud)
在重新启动时无效..
另外,在你的问题仔细一看....为什么不把那rsync的代码放到一个bash脚本......并把它贴在/usr/bin/.....那么你可以只是chmod+x该文件....并简化您的.plist随时触发该脚本....
| 归档时间: |
|
| 查看次数: |
16917 次 |
| 最近记录: |