我希望有人可以帮助我。我整天都在努力工作......
我希望LaunchDaemon在启动时执行shell脚本。这是我的plist文件,位于/Library/LaunchDaemons/com.mhi.backup.plist:
<?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.mhi.backup</string>
<key>UserName</key>
<string>Joel</string>
<key>GroupName</key>
<string>Admin</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/mhi_websites_backup.sh</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
当我从终端(launchctl load /Library/LaunchDaemons/com.mhi.backup.plist)加载它时,它正确执行,但在启动时没有。
这是我的脚本,供参考:
#!/bin/bash
sleep 15 #delay script to ensure time for network connection
ssh user@hostname << HERE
mysqldump -u <user_name> -pPASSWORD --all-databases | lzma > alldatabases.sql.lzma
tar cfa backup-`date '+M%mD%dY%y'`.tar.lzma webapps alldatabases.sql.lzma
exit
HERE
scp user@hostname:backup-`date '+M%mD%dY%y'`.tar.lzma /Users/Joel/Desktop
有人可以帮忙吗?
非常感谢,
JG
答案 0 :(得分:0)
你看到了什么错误?我希望你在这里遇到PATH
问题。 mysqldump
在哪里?如果它在/usr/local/bin
中,那么您可能希望将其显式化,或者在/etc/launchd.conf中设置默认路径。
答案 1 :(得分:0)
根所拥有的plist?如果/Library/Launch{Agents,Daemons}/
中的plist不属于root用户,则可以使用launchctl
加载sudo
,但不会在登录时加载。
您也可以尝试将plist移至/Library/LaunchAgents/
并添加LimitLoadToSessionType
键:
<key>LimitLoadToSessionType</key>
<array>
<string>LoginWindow</string>
<string>Aqua</string>
</array>
请参阅Daemons and Agents技术说明。