可能的重复:
如何date
在 cron 选项卡作业中执行?
我在 Amazon EC2 中有一台服务器,我在该服务器上使用 cron 运行备份脚本。但是,它不起作用。为了测试 cron 是否正常工作,我执行了以下操作:
登录服务器并切换到root。然后我运行“crontab -e”。它有以下几行:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
29 00 * * thu tar -zcvf /home/<user removed>/Dropbox/Backup/DirBackup_$(date +%Y%m%d).tar.gz /var/www/html/
30 00 * * thu mysqldump -u <removed> -h <removed> -p<removed> --opt <removed> > /home/<user removed>/Dropbox/Backup/database-backup-$(date +%Y%m%d).sql
*/1 * * * * touch /tmp/foo
因此,touch 命令应该每分钟运行一次,其他命令应该在周四的 00:29 和 00:30 运行。日志内容如下:
Sep 20 00:27:01 ip-10-204-142-149 CROND[16888]: (root) CMD (touch /tmp/foo)
Sep 20 00:28:01 ip-10-204-142-149 CROND[16890]: (root) CMD (touch /tmp/foo)
Sep 20 00:29:01 ip-10-204-142-149 CROND[16898]: (root) CMD (tar -zcvf /home/<user removed>/Dropbox/Backup/DirBackup_$(date +)
Sep 20 00:29:01 ip-10-204-142-149 CROND[16900]: (root) CMD (touch /tmp/foo)
Sep 20 00:30:01 ip-10-204-142-149 CROND[16913]: (root) CMD (mysqldump -u <removed> -h <removed> -p<removed> --opt <removed> > /home/<user removed>/Dropbox/Backup/database-backup-$(date +)
如果我检查 /tmp/foo 文件夹上的时间戳,它们每分钟都在变化。如果我检查 Dropbox,文件不存在。 (我使用“ls /home//Dropbox/Backup/”来检查这一点,以验证这不是 Dropbox 上传问题)应该是!我通过将 cron 中的命令复制/粘贴到命令行上进行了测试......效果很好!
有谁知道为什么 cron 会记录命令但它们实际上并没有工作?
答案1
显然这是 cron 语法中的问题。为了解决这个问题,我只需将命令放入脚本中并使用以下命令:
58 23 * * 6 root exec /home/<username>/Dropbox/backups
每个星期六都会运行该脚本,我对其进行了测试以确保其有效。