好的,所以我正试图使用launchctl在我的github帐户上设置自动提交。为此,我创建了一个预格式化git命令的sh文件和一个每2分钟执行一次sh的plist文件,但plist文件失败了。sh在plist 之外运行时运行良好
launchctl日志为:
Aug 2 00:02:24 Caseys-iMac com.github.gitSync[9227]: /usr/bin/gitsync.sh: line 4: git: command not found
Aug 2 00:02:24 Caseys-iMac com.github.gitSync[9227]: /usr/bin/gitsync.sh: line 5: git: command not found
Aug 2 00:02:24 Caseys-iMac com.github.gitSync[9227]: /usr/bin/gitsync.sh: line 6: git: command not found
Aug 2 00:02:24 Caseys-iMac com.apple.launchd.peruser.501[123] (com.github.gitSync[9227]): Exited with code: 127
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>com.github.GitSync</string>
<key>Program</key>
<string>/usr/bin/gitsync.sh</string>
<key>ProgramArguments</key>
<array>
<string>gitsync.sh</string>
</array>
<key>RunAtLoad</key>
<true />
<key>StartInterval</key>
<integer>120</integer>
</dict>
</plist>
sh文件
#!/bin/bash
DATE=`date`
cd /Applications/Minecraft Server/
git pull origin master
git commit -a -m "Auto Sync - $DATE"
git push origin master
请帮助
路径上没有git。将git.exe所在的路径添加到路径环境变量中。
launchd.plist
的手册页提到:
UserName <string>
此可选键指定以用户身份运行作业。此键仅适用于
launchd
以root用户身份运行时。
因此:
- 用户的路径中可能有
git
(因为您提到"sh
在plist
之外运行时运行良好") - 但如果
launchd
以root身份运行,那么root的路径中可能没有git
如果可能,最好在plist
文件中指定运行作业的用户。