3

我正在尝试从 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.

4

6 回答 6

3

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

于 2011-12-07T19:08:03.877 回答
2
* * * * * /bin/sh /home/myuser/shellscript.sh

or

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

worked for me in Macosx 10.6 as rootuser

于 2010-11-16T11:41:37.207 回答
2

你检查/var/log/cron过线索吗?

于 2010-03-19T19:19:19.737 回答
1

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

MAILTO=crontabOnFreebsd

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

有关更多信息,请发出以下命令:

man 5 crontab
于 2010-03-18T03:30:23.073 回答
1

你有没有尝试过

* * * * * /bin/sh /home/myuser/shellscript.sh > /home/myuser/logfile 
于 2010-01-12T16:30:32.813 回答
0

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

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

我已经有一段时间没有做任何 cron 的事情了;但总是让我着迷的事情:

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

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

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

于 2010-01-12T16:46:24.570 回答