Cron脚本未在Mavericks上执行


12

我已将用户crontab文件配置如下:

*/2 * * * * /Users/[my user]/Dropbox/htdocs/auto-update.sh

但是它不会执行。我等了10到15分钟。为什么?

如果手动执行,命令auto-update.sh可以轻松运行。我该如何分解执行链并让脚本从cron运行?


1
您正在运行什么操作系统?Cron在OS X上已被弃用,因此您可能需要启动守护程序?
bmike

最新的10.9.2。我该怎么做?例如,我只希望脚本每小时工作一次。在上面的脚本中,我绝望是因为它不起作用,并且将其修改为每2分钟工作一次。
RomaValcer 2014年

1
如果存在crontab文件,则应自动启动cron守护程序(通过替换,启动)。请参阅/System/Library/LaunchDaemons/com.vix.cron.plist(尤其是KeepAliveQueueDirectories项目)。
Gordon Davisson 2014年

好的,Keeplive在那儿,但是那里列出的唯一路径是不存在的“ / etc / crontab”。在QueueDirectories中,受限文件夹“ / usr / lib / cron / tabs”中存在现有文件。用su和vim打开它时,这是我的任务。
RomaValcer 2014年

Answers:


17

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

...并查看日志中是否有任何有用的信息。


这比我的努力要好-如果可以使您的答案更好,请随时采纳我的记录器想法。
bmike

日志只是没有出现。
RomaValcer 2014年

@RomaValcer:很奇怪-这意味着它甚至还不及启动脚本。我会运行ps -ax | grep [c]ron,看看它是否列出了正在运行的cron守护程序(/ usr / sbin / cron)。如果是这样,请尝试bmike的记录器测试。无论如何,请检查日志(/var/log/system.log和控制台实用程序中的“所有消息”项),看看是否有任何相关外观。
Gordon Davisson 2014年

是的,它在那里。但是日志不会显示任何在计划的时间开始的内容。
RomaValcer 2014年

4

很难说,但是如果您添加第二个cron作业每隔5分钟左右执行一次并让它调用某些将消息记录到system.log的系统内置工具,该怎么办?

0,5,10,15,20 * * * * /usr/bin/logger "cron is working"

这样,您将知道cron正在为有问题的用户运行,并且可以专注于启动cron或修复脚本,从而使其在有限的cron环境中运行。(您可以查看墙上的时钟,然后选择即将出现的几次,甚至是接下来的几分钟-例如,在12:34进行编辑,并在35,36,37,38中输入分钟以运行和保存cron文件)


4

您已经有一段时间问这个问题了,但是似乎没有解决方案出现在这个线程中。

根据创建用户crontab的方式,可能有必要在编辑后执行此操作:

crontab ~/.yourcrontabfile

要查看新的crontab(也在修改后)是否已激活,请使用以下命令进行检查:

crontab -l

那不行 Crontab -l显示已设置cron,但仍然无法正常工作。
PKHunter '17


0

我有同样的问题。在我的工作后在crontab文件中添加换行符后,它消失了(我总共是crontab n00b,所以我不知道这种行为是否广为人知)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.