【问题标题】:What step am I missing in creating a cron job?我在创建 cron 作业时缺少什么步骤?
【发布时间】:2014-03-07 14:04:03
【问题描述】:

我似乎无法运行 cron 作业,我不知道为什么。我是新手,所以我可能会犯一个业余错误。

首先,我创建一个脚本并将其命名为“test.sh”,并将其放在 /usr/local/bin 文件夹中。脚本包含:

#!/bin/bash
echo "This test works!"

接下来,我在 /etc/cron.d 文件夹中创建一个名为“randomtest”的文件。该文件包含:

00 09 * * * root /usr/local/bin/test.sh >> /var/log/test.log

我希望 cron 作业每天上午 9:00 运行,但由于某种原因,它没有运行。我也没有按预期获得日志文件。我检查了 test.sh 文件的权限,它当前设置为 755,应该可以工作。

我做错了什么吗?我错过了一个关键要素吗?我需要将我的“随机测试”文件添加到 crontab 中吗?

【问题讨论】:

  • 你在 Ubuntu 上吗?您可以查看Cron How to。检查 cron 守护程序是否使用 ps -ef | grep cron 运行。
  • 我正在运行 CentOS 4.4,linux 内核版本 2.6.18-308.el5。 Cron 守护进程确实在运行。
  • 如果你使用crontab -e和普通的crontab呢?
  • 我做了crontab -e,它打开了一个空文件,我在其中插入了00 09 * * * root /usr/local/bin/test.sh >> /var/log/test.log。什么也没发生 :(。
  • 如果删除root部分并添加二进制文件会怎样--> 00 09 * * * /bin/bash /usr/local/bin/test.sh >> /var/log/test.log

标签: cron crontab


【解决方案1】:

使用 /etc/init.d/crond reload 重新加载 cron 守护进程。

(即使它已经在运行!)

【讨论】:

    【解决方案2】:

    问题是你在搞乱/etc/cron.d 目录而不是使用crontab 命令。

    除非您确实需要以 root 运行的 cron 作业,否则只需使用 crontab 命令将其添加到您自己的 crontab 中。您可以使用crontab -e 对其进行编辑,但最好保留您自己的crontab 副本(最好在版本控制下)并使用该命令的crontab filename 版本来安装它。这可以确保 cron 守护进程知道更新,并且将捕获任何语法错误。这也意味着您不需要以root 的身份运行任何命令;避免使用root 命令除非确实有必要总是一个好主意。

    请注意,系统 crontabs(位于/etc/crontab/etc/cron.d 目录下的那些——尽管这些位置是您理想情况下不必担心的实现细节)与用户 crontabs 具有不同的语法;每行都有一个额外的字段,用于指定运行命令的帐户。

    如果您需要以 root 身份运行命令,您可以更新系统 crontab 文件(小心!),或者您可以为 root 用户设置用户 crontab,使用正常的crontab 命令,就像对任何用户帐户一样。

    【讨论】:

      猜你喜欢
      • 2014-03-19
      • 2017-06-22
      • 1970-01-01
      • 1970-01-01
      • 2013-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-07
      相关资源
      最近更新 更多