如何在 <ProgrammArguments> os x 上插入启动的 .plist



是否可以将以下.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>

最新更新