我正在动态地将 cron 任务附加到用户 crontab
任务似乎越来越多,crontab -e
如下所示:
*/10 * * * * /bin/sh /Users/john/Kiosk/app/content/update.sh
@reboot /usr/bin/open /Users/john/Kiosk/startup.command
问题是它似乎没有起到任何效果。
startup.command的内容:
cd /Users/john/Kiosk/app && /usr/bin/python -m SimpleHTTPServer &
sleep 5 && open http://localhost:8000
我错在什么地方?
答案1
不要使用相对路径,而要使用完整路径。二进制文件也一样。
然后你的线路应该是
*/10 * * * * /usr/bin/sh /home/<username>/Kiosk/app/content/update.sh
@reboot open /home/<username>/Kiosk/startup.command
答案2
取消 open 命令就可以了
@reboot yourscript.command
答案3
默认路径是/usr/bin:/bin
,波浪号在用户 crontab 中起作用,因此这应该可以工作:
*/10 * * * * bash ~/Kiosk/app/content/update.sh
您是否尝试过update.sh
用类似 say 命令的东西来替换它并进行测试?
@reboot
重新启动时对我有用,但注销并重新登录时无效。@reboot open /test.txt
没用,但* * * * * open /test.txt
确实有用。
您还可以像这样保存 plist ~/Library/LaunchAgents/simplehttpserver.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>KeepAlive</key>
<true/>
<key>Label</key>
<string>simplehttpserver</string>
<key>ProgramArguments</key>
<array>
<string>python</string>
<string>-m</string>
<string>SimpleHTTPServer</string>
<string>8000</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>WorkingDirectory</key>
<string>/Users/john/Kiosk/app</string>
</dict>
</plist>
可以通过launchctl load ~/Library/LaunchAgents/simplehttpserver.plist
或注销并重新登录来加载。