我已将用户crontab文件配置如下:
*/2 * * * * /Users/[my user]/Dropbox/htdocs/auto-update.sh
但是它不会执行。我等了10到15分钟。为什么?
如果手动执行,命令auto-update.sh可以轻松运行。我该如何分解执行链并让脚本从cron运行?
KeepAlive
和QueueDirectories
项目)。
我已将用户crontab文件配置如下:
*/2 * * * * /Users/[my user]/Dropbox/htdocs/auto-update.sh
但是它不会执行。我等了10到15分钟。为什么?
如果手动执行,命令auto-update.sh可以轻松运行。我该如何分解执行链并让脚本从cron运行?
KeepAlive
和QueueDirectories
项目)。
Answers:
cron作业运行的环境与交互式shell有所不同。该脚本可能正在运行,但未成功运行。最大的区别之一是对于cron作业,默认PATH只是“ / usr / bin:/ bin”,因此,如果您使用/ usr / bin或/ bin中没有的任何命令,则不会除非您的脚本设置了自己的PATH或提供了命令的显式路径,否则都不会找到。另一个很大的不同是,它没有连接到交互式会话,因此,如果它尝试进行任何交互式操作(从终端等读取),都会失败。尝试将cron条目更改为:
*/2 * * * * /Users/[my user]/Dropbox/htdocs/auto-update.sh >>/tmp/auto-update.log 2>&1
...并查看日志中是否有任何有用的信息。
ps -ax | grep [c]ron
,看看它是否列出了正在运行的cron守护程序(/ usr / sbin / cron)。如果是这样,请尝试bmike的记录器测试。无论如何,请检查日志(/var/log/system.log和控制台实用程序中的“所有消息”项),看看是否有任何相关外观。
您已经有一段时间问这个问题了,但是似乎没有解决方案出现在这个线程中。
根据创建用户crontab的方式,可能有必要在编辑后执行此操作:
crontab ~/.yourcrontabfile
要查看新的crontab(也在修改后)是否已激活,请使用以下命令进行检查:
crontab -l
我有同样的问题。您需要将路径添加到您的bash脚本中:
#!/bin/sh
PATH=/usr/local/bin:/usr/local/sbin:~/bin:/usr/bin:/bin:/usr/sbin:/sbin