cron 运行但没有任何反应

Jos*_*eph 7 cron ubuntu

我创建了一个名为“forward_email.sh”的脚本并将权限设置为 777。它包含以下行:

echo "It worked: $(date)" >> /home/noc/email.log
Run Code Online (Sandbox Code Playgroud)

我使用以下行创建了一个 cron 作业:

*/5 * * * * /home/noc/forward_email.sh
Run Code Online (Sandbox Code Playgroud)

问题是“email.log”文件永远不会改变。我什至将权限设置为 666。当我手动运行脚本时,它运行良好。

cron 作业根据“/var/log/cron.log”文件运行。

有人可以指出我可能出什么问题的正确方向吗?这是 Ubuntu Server 9.04 的最小虚拟机安装,通过 apt-get 安装了 cron。

更新:我犯了一个非常愚蠢的错误。我将我的脚本命名为“forward_mail.sh”。直到我安装了一些电子邮件服务并从 Cron 收到以下错误电子邮件后,我才发现我的错误。

/bin/sh: /home/noc/forward_email.sh: not found
Run Code Online (Sandbox Code Playgroud)

我更改了文件名,现在可以使用了。

Dav*_*osh 9

我脑子里有很多潜在的东西。

您确定 crontab 条目真的指向您的脚本吗?例如,如果你想运行一个脚本,如~noc/bin/script.sh,但有一个像/home/noc/bin/script这样的条目(即一个微妙的错字),那么它当然不会工作。我通常通过用鼠标从 crontab 复制命令,然后将其粘贴到命令提示符中来检查我的 crontab 条目,只是为了 100% 确定它将运行我想要的。

您的脚本是否包含指定的行?通常,您必须包含以下内容:

#!/bin/bash
Run Code Online (Sandbox Code Playgroud)

...在脚本的顶部使其工作。

如果它比单行更复杂,您确定编程逻辑将允许它运行该特定行吗?

尝试将您的脚本减少到

#!/bin/bash
echo "Bing!" >> /tmp/cronjob
Run Code Online (Sandbox Code Playgroud)

...看看会发生什么。如果可行,则您的 cron 脚本中存在编程问题。如果失败,则说明您遇到了 cron 问题。

'noc' 用户是运行脚本的用户吗?如果没有,您确定运行 cron 脚本的用户具有通过 /home/noc 对 email.log 文件的读/写访问权限吗?

来自运行 cronjob 的用户的错误电子邮件在哪里?是否正在生成错误电子邮件,然后将其发送到您不期望的地方,或者可能完全被丢弃?尝试一个 cronjob

#!/bin/bash
echo "Bing!"
Run Code Online (Sandbox Code Playgroud)

...然后尝试找出生成的电子邮件的去向。

cron.deny 和/或 cron.allow 是否在起作用?如果 /etc/cron.allow 确实存在,则用户 noc 必须列在其中;如果 /etc/cron.deny 存在。用户 noc不得列在其中。在 RedHat 上,如果 cron.allow 和 cron.deny 都不存在,那么只有 root 用户可以使用 cron。


Pet*_*ete 6

Cron 运行时设置了有限的环境变量,尤其是您的$PATH. 尝试将完整路径放在任何二进制文件中。所以/home/noc/forward_email.sh应该是:

/bin/echo "It worked: $(date)" >> /home/noc/email.log
Run Code Online (Sandbox Code Playgroud)

另外,*/5脚本开头的作用是什么? */5每五分钟5运行一次,每小时运行一次 ' 每小时 5 分钟。

5    *   *   *    * /home/noc/forward_email.sh
#*   *   *   *    *  command to be executed
#-   -   -   -    -
#|   |   |   |    |
#|   |   |   |    +----- day of week (0 - 6) (Sunday=0)
#|   |   |   +------- month (1 - 12)
#|   |   +--------- day of month (1 - 31)
#|   +----------- hour (0 - 23)
#+------------- min (0 - 59)
Run Code Online (Sandbox Code Playgroud)

最后,您是否使用以下命令编辑并保存了 crontab:

crontab -e
Run Code Online (Sandbox Code Playgroud)

...您的编辑器是由环境变量选择的$EDITOR吗?

  • */5 每 5 分钟运行一次。只有 5 将在每小时 5 分钟后每小时运行一次。 (2认同)