![cron 日志记录但不适用于某些命令](https://linux22.com/image/25642/cron%20%E6%97%A5%E5%BF%97%E8%AE%B0%E5%BD%95%E4%BD%86%E4%B8%8D%E9%80%82%E7%94%A8%E4%BA%8E%E6%9F%90%E4%BA%9B%E5%91%BD%E4%BB%A4.png)
可能的重复:
如何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
每个星期六都会运行该脚本,我对其进行了测试以确保其有效。