是否可以将以下.sh脚本完全实现到launchd-.plist中?
#!/bin/sh
rsync -avuz --delete -e '/usr/bin/ssh -i /Users/FOO/.ssh/id_rsa' /Users/Shared/Backup/ root@333.444.555.666:/volume1/NetBackup/BAR/
这个不起作用:
…
<key>ProgramArguments</key>
<array>
<string>/usr/bin/rsync</string>
<string>-avuz</string>
<string>--delete</string>
<string>-e '/usr/bin/ssh -i /Users/FOO/.ssh/id_rsa'</string>
<string>/Users/Shared/Backup/</string>
<string>root@333.444.555.666:/volume1/NetBackup/BAR/</string>
</array>
…
使用单独的 shell 脚本,它工作正常——如果没有必要,我只是不想调用脚本。
蒂亚
-e
和它后面的字符串是单独的参数:
<key>ProgramArguments</key>
<array>
<string>rsync</string>
<string>-avuz</string>
<string>--delete</string>
<string>-e</string>
<string>ssh -i /Users/FOO/.ssh/id_rsa</string>
<string>/Users/Shared/Backup/</string>
<string>root@333.444.555.666:/volume1/NetBackup/BAR/</string>
</array>
如果添加 <key>EnableGlobbing</key><true/>
,则可以将/Users/FOO/
替换为 ~/
。
您还可以使用以下bash -c
嵌入脚本:
<key>ProgramArguments</key>
<array>
<string>bash</string>
<string>-c</string>
<string>while sleep 5; do say a; done</string>
</array>