我使用 CentOS 作为 Wordpress 网络服务器。我希望每天备份一次媒体和 SQL,因此我编辑 crontab 如下:
[john@cent ~]$ crontab -e
TZ=Asia/Ho_Chi_Minh
15 3 * * * /bin/sh /home/john/deploy/job/backup-mysql.sh 2>&1 >> /home/john/deploy/job/log/backup-mysql.log
30 3 * * * /bin/sh /home/john/deploy/job/backup-media.sh 2>&1 >> /home/john/deploy/job/log/backup-media.log
我的意思是每天运行这些作业一次,但实际上它运行两次:
[john@cent ~]$ cd deploy/mediadump/
[john@cent mediadump]$ ls
07-08-2015_03.30.01.uploads.tar.gz
07-08-2015_14.38.01.uploads.tar.gz
08-08-2015_03.30.01.uploads.tar.gz
08-08-2015_14.38.01.uploads.tar.gz
09-08-2015_03.30.01.uploads.tar.gz
09-08-2015_14.38.01.uploads.tar.gz
我做错什么了?
更新 sqldump 作业的运行方式与 mediadump 相同。我按照 @lain 和 @Paul 的建议列出了文件,再次检查日志文件,我发现 root 用户在 14:38 为 media 运行作业,在 14:36 为 sql 运行作业:
[root@cent datadump]# ls -l
-rw-r--r-- 1 john john 2391638 Th08 7 03:15 07-08-2015_03.15.01.sql
-rw-r--r-- 1 root root 2437070 Th08 7 14:36 07-08-2015_14.36.01.sql
-rw-r--r-- 1 john john 2560015 Th08 8 03:15 08-08-2015_03.15.01.sql
-rw-r--r-- 1 root root 2667435 Th08 8 14:36 08-08-2015_14.36.01.sql
-rw-r--r-- 1 john john 2618756 Th08 9 03:15 09-08-2015_03.15.01.sql
-rw-r--r-- 1 root root 2928775 Th08 9 14:36 09-08-2015_14.36.01.sql
之前,我通过编辑 /etc/crontab 以 root 用户身份测试了 crontab。在切换到 John 运行所需作业之前,我忘记清除该文件了。我修复了它。非常感谢 @lain、@Paul Haldane。
答案1
看起来您以两个不同的用户身份运行同一项作业。日志文件应该能够帮助您追踪到这一点。转储文件上的时间戳证实了有多个用户。