在OS X上使用launchd的rsync总是给我错误代码255

时间:2015-11-03 06:28:08

标签: macos rsync launchd

我希望将/var/repo备份rsync更改为远程计算机。 我做了一个ssh密钥对,使我的机器可以在没有密码的情况下ssh登录到远程(忽略细节)。

我在com.ph.rsync2.plist中添加了文件~/Library/LaunchAgents。 内容是

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"    "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.ph.rsync2.plist</string>
    <key>ProgramArguments</key>
    <array>
   <string>/usr/bin/rsync</string>
   <string>-avz</string>
   <string>--rsh=ssh</string>
   <string>/var/repo</string>
   <string>flora@192.168.19.28:/var/ph_backups/</string>
    </array>

    <key>WatchPaths</key>
    <array>
        <string>/var/repo</string>
    </array>

</dict>

然后我launchctl load com.ph.rysnc2.plist。 当/var/repo有任何更改时,它将触发rsync工作 但我总是在Console.app中获取错误日志 它读起来像

11/3/15 2:15:26.399 PM com.apple.xpc.launchd[1]: 
(com.ph.rsync2.plist) Service only ran for 1 seconds. Pushing respawn out by 9 seconds.

我尝试将rsync命令移动到脚本,然后让launchd执行我的脚本。但它仍然是相同的

我无法弄清楚哪一部分设置会导致所有这些失败。

任何人都可以给我一个线索吗?

1 个答案:

答案 0 :(得分:0)

评论会弄乱格式化,因此我将发布如何设置StandardErrorPath密钥作为答案。

像这样修改你的工作定义:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.ph.rsync2.plist</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/bin/rsync</string>
        <string>-avz</string>
        <string>--rsh=ssh</string>
        <string>/var/repo</string>
        <string>flora@192.168.19.28:/var/ph_backups/</string>
    </array>
    <key>StandardErrorPath</key>
    <string>/tmp/com.ph.rsync2.plist.stderr</string>
    <key>WatchPaths</key>
    <array>
        <string>/var/repo</string>
    </array>
</dict>
</plist>

重新加载并开始作业后检查文件/tmp/com.ph.rsync2.plist.stderr