Crontab没有错误但不执行脚本

时间:2010-01-12 16:29:46

标签: freebsd crontab

我正在尝试从Freebsd上的cron执行shell脚本。

为了测试crontab是否正常工作,我写了一行

  * * * * * echo "Hello" > /home/myuser/logile  

它工作正常。

但是当试图执行任何脚本时,它不会做任何事情,甚至不会出错。 (在我试图运行的脚本中只是相同的echo命令) 以下是crontab -l

的输出
SHELL=/bin/sh  
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin  
HOME=/home/myuser  
MAILTO=myuser  
* * * * * /home/myuser/shellscript.sh > /home/myuser/logfile  

为什么脚本没有被执行,虽然crontab显然正在运行? 所有文件的权限都设置为rwxr-xr-x

6 个答案:

答案 0 :(得分:3)

您是否检查过命令行在行尾有换行符/ CR?当我用crontab -e编辑cron作业时,当我在行尾没有按下输入时,我挣扎了几个小时试图找到cron上不执行php脚本的原因: - )

答案 1 :(得分:2)

您是否检查了/var/log/cron的线索?

答案 2 :(得分:2)

* * * * * /bin/sh /home/myuser/shellscript.sh

* * * * * /bin/bash /home/myuser/shellscript.sh

以root用户身份在Mac Os X 10.6中为我工作

答案 3 :(得分:1)

你试过吗

* * * * * /bin/sh /home/myuser/shellscript.sh > /home/myuser/logfile 

答案 4 :(得分:1)

cron通过电子邮件将任何错误发送给crontab文件的所有者(通常是“root”,因此您可以检查该帐户的电子邮件)。要将任何错误邮寄到“crontabOnFreebsd”,请输入:

MAILTO=crontabOnFreebsd

在你的crontab中(靠近顶部)。

有关详细信息,请发出以下命令:

man 5 crontab

答案 5 :(得分:0)

如果您收到错误,那么您的日志文件可能无法捕获它,请尝试以下操作:

* * * * * /home/myuser/shellscript.sh > /home/myuser/logfile 2> /home/myuser/errorfile

我做了任何cron的事情已经有一段时间了;但总是习惯性的东西:

  1. 未设置环境变量:通常我发现有必要为所有命令设置完整路径(甚至像'cat'之类的东西)[或者至少在脚本本身中设置ENV变量]。

  2. 确保拥有脚本等的用户确实是运行脚本的用户:当您从交互式shell进行测试时,这可能不是同一个用户。脚本可能写入的目录/文件也是如此。

  3. 另外:查看root用户的电子邮件 - 您可能会发现错误已转移到收件箱,这可能会帮助您进一步排查问题。