我在 Ubuntu 16.04 上使用 Cron 时遇到问题。我检查了 cron 服务是否已启动并正在运行,但创建 Mongo DB 备份的脚本可能未运行。
这是我的 /etc/crontab 文件内容:
# /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
*/10 * * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.hourly )
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 )
#
这是我的 db_backup.sh 文件内容:
#!/bin/sh
DIR=`date +%m%d%y`
DEST=/db_backups/$DIR
mkdir $DEST
mongodump -h localhost:27017 -d dbname -u xxxx -p xxx -o $DEST
当我在终端中运行时:sh /etc/cron.hourly/db_backup.sh
它在 /db_backups/somedate 中创建具有目录日期名称的 Mongo DB 备份
为什么我的脚本不是每 10 分钟和 1 小时运行一次?
如您所见,我将脚本放在 cron.hourly 文件夹中,但 10 分钟或 1 小时都没有发生任何事情。
答案1
来自以下DEBIAN SPECIFIC
部分man cron
:
如上所述,这些目录下的文件必须通过 一些健全性检查包括以下内容:可执行、由...所有 root,不能由组或其他用户写入,并且如果是符号链接,则指向 root 所拥有的文件。此外,文件名必须符合 运行部分的文件名要求:它们必须完全由 字母、数字,只能包含特殊符号下划线 ('_')和连字符('-')。任何不符合这些要求的文件 要求将不会由运行部件执行。例如,任何文件 包含点的将被忽略。 这样做是为了防止 cron 运行 Debian 包管理留下的任何文件 系统在将 /etc/cron.d/ 中的文件作为配置文件处理时(即 以 .dpkg-dist、.dpkg-orig 和 .dpkg-new 结尾的文件)。
答案2
我确实在这里更新了一些文件,并成功创建了 cron 来每天更新我的 Mongo DB,更多详细信息请见此处: https://stackoverflow.com/questions/44296616/cron-job-doesnt-work-ubuntu-16-04/44296690?noredirect=1#comment75599631_44296690