2010-01-12 96 views
2

我想从FreeBSD上的cron执行一个shell脚本。Crontab没有错误,但不执行脚本

为了测试是否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

+0

你能发布剧本?我知道你说是微不足道...但...:P – 2010-01-12 16:45:04

+0

的脚本是: #/ bin/sh的 回声“你好” 和interaktive外壳;-)工作 – crontabOnFreebsd 2010-01-12 17:39:32

回答

1

你试过

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

是的,我试过了,但没有反应。 – crontabOnFreebsd 2010-01-12 16:36:16

0

如果您收到一个错误,那么你的日志文件可能无法捕捉到它,试试这个:

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

它一直以来我没有任何的cron东西一会儿;但事情总是用得到我:

  1. 环境变量未设置:一般来说,我认为有必要建立完整路径(甚至是东西像“猫”)的所有命令[或至少设置ENV脚本本身内的变量]。

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

  3. 此外:检查电子邮件为root用户 - 您可能会发现错误已被转移到收件箱,这可能会帮助您进一步排除故障。

1

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

MAILTO=crontabOnFreebsd 

在您的crontab(靠近顶部)。

欲了解更多信息发出以下命令:

man 5 crontab 
2
* * * * * /bin/sh /home/myuser/shellscript.sh 

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

在MacOSX的10.6为我工作作为rootuser

2

是否检查命令行有一个换行/ CR在该行的结束?我挣扎了几个小时试图找到关于cron的非执行PHP脚本一个原因,当我根本就没有压在该行的末尾输入的时候我编辑与crontab -e命令在cron作业:-)

+0

非常感谢您的信息。按下输入结束行解决了我的问题。谢谢。 – Phoca 2017-02-20 15:55:39