crontab 在 /etc/cron.d 中从不运行

crontab 在 /etc/cron.d 中从不运行

这是我在 Debian Jessie 上所做的:

  • 通过安装 cronapt-get install cron
  • backup_crontab文件放入/etc/cron.d/

但是该任务从未运行。

以下是一些输出:

/# crontab -l
no crontab for root

/# cd /etc/cron.d && ls
backup_crontab

/etc/cron.d# cat backup_crontab
0,15,30,45 * * * * /backup.sh >/dev/null 2>&1

是否需要执行某些操作来激活特定的 crontab,或者激活 cron“服务”本身?

答案1

需要的文件/etc/cron.d还列出了用户该作业将在其下运行。

IE

0,15,30,45 * * * * root /backup.sh >/dev/null 2>&1

您还应该确保权限和所有者:组设置正确(-rw-r--r--并由 拥有root:root

答案2

我观察到的另一件事是文件/etc/cron.d不能有扩展名。在我的特定情况下,我有一个符号链接:

# my-job.crontab
* * * * * root echo "my job is running!" >> /tmp/my-job.log

$: ln -sf /home/me/my-job.crontab /etc/cron.d/
# This did not work -> job would not run

$: ln -sf /home/me/my-job.crontab /etc/cron.d/my-job
# This did work -> job ran fine

文件名限制记录在运行部分手册页中:http://manpages.ubuntu.com/manpages/xenial/man8/run-parts.8.html,可以传递 --regex 选项来覆盖文件格式。

然而,默认的 cron 行为没有扩展,请参阅下面的评论:https://bugs.launchpad.net/ubuntu/+source/debianutils/+bug/38022

答案3

我认为您可能只是在 cron 文件末尾缺少一个必要的空行。我遇到了同样的问题,但在检查了此处列出的所有内容(用户权限、文件名、cron 版本等)后,我意识到我的最后一个条目之后没有换行符/etc/cron.d/own_cron,这导致整个文件被忽略。

答案4

如果您是这台计算机上的唯一用户,您可能只想使用crontab -e.第一次运行该命令时,系统会提示您选择编辑器。然后你可以将其添加到其中:

0,15,30,45 * * * * /backup.sh >/dev/null 2>&1

如果您更改为普通用户帐户,则需要使用来sudo crontab -e配置您想要按计划运行的脚本root

crontab -l一旦您使用设置了一个,则仅显示当前的 crontab crontab -e。如果 / 中有 cron 文件/etc/cron.d,则不会以crontab -l.

您还需要使用以下命令验证您的脚本是否可执行:chmod +x /backup.sh

相关内容