crontab 似乎不起作用,并在 cron.d 中制定了不同的计划!

crontab 似乎不起作用,并在 cron.d 中制定了不同的计划!

sudo crontab -e让我编辑 crontab,然后输入以下内容:

# Hourly backup
0 * * * * rsnapshot hourly

# Daily backup
0 2 * * * rsnapshot daily

# Weekly backup
0 4 * * 6 rsnapshot weekly

但它不起作用。我将其更改为使用 rsnapshot 的完整路径,但仍然不起作用。我读过一些关于 cron.d 的内容,所以我转到 /etc/cron.d/ 并找到一个名为 rsnapshot 的文件。它看起来像这样:

#0 */4      * * *       root    /usr/bin/rsnapshot hourly
#30 3   * * *       root    /usr/bin/rsnapshot daily
#0  3   * * 1       root    /usr/bin/rsnapshot weekly
#30 2   1 * *       root    /usr/bin/rsnapshot monthly

奇怪,据我所知,我从未通过 rsnapshot 进行过每月备份。无论如何,取消注释我需要的那些。

我添加了一行用于测试,sudo crontab -ecat /etc/cron.d/rsnapshot没有反映出任何变化,但测试过程(回显到 .txt)似乎有效。为什么我的备份不起作用?当我sudo rsnapshot hourly在终端中执行此操作时,它似乎工作正常。

另外,为什么计划与我设置的不同?这个文件与 crontab 有关系吗?

答案1

“系统” cron 作业是通过/etc/crontab文件运行的,而不是通过root用户crontab文件运行的/var/spool/cron/crontabs/root,这就是sudo crontab -e编辑的内容。/etc/crontab在我的 Ubuntu 14.04.3 系统上是(请注意信息#comments):

# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#

答案2

我搞混了。/etc/cron.d/rsnapshot 文件随 rsnapshot 包一起提供,它不是由 crontab 命令创建的(因此,它有一个不同的计划)。根本不需要使用 crontab 命令,只需编辑 /etc/cron.d/rsnapshot,就可以正常工作。

相关内容