OS X launchd脚本无法在启动时运行?

时间:2015-08-22 19:42:45

标签: macos osx-yosemite launchd

我创建了一个launchd脚本,在启动时为我运行通用脚本,但我无法让它工作。我正在运行OS X Yosemite 10.10.5。这是我的/Library/LaunchDaemons/com.craig.startup.items文件(我刚注意到它没有“.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.craig.startup.items</string>
    <key>ProgramArguments</key>
    <array>
        <string>/bin/sh</string>
        <string>/Users/cliff/startup/onlaunchd</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>KeepAlive</key>
    <false/>
</dict>
</plist>

/ Users / cliff / startup / onlaunchd包含以下内容:

#!/bin/sh

log=/Users/cliff/startup/status.log
echo "`date` running startup scripts." >> $log
pushd /Users/cliff/startup/scripts/
for each in `ls`; do echo "`date` Running $each" >> $log; sh $each; done
popd

还有其他脚本,但是onlaunchd不会触发,因为我从未在/Users/cliff/startup/status.log中看到日志输出。如果我直接以root身份运行它就可以了。除了可能的扩展之外,我错过了什么?

1 个答案:

答案 0 :(得分:1)

您应该在重启前运行守护程序:

sudo launchctl load -w /Library/LaunchDaemons/com.craig.startup.items.plist

pelase set + x permission chmod +x /Users/cliff/startup/onlaunchd并更新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.user.loginscript</string>
   <key>Program</key>
   <string>/Users/cliff/startup/onlaunchd</string>
   <key>RunAtLoad</key>
   <true/>
</dict>
</plist>