我有一个应该每周运行一次的备份cron作业。当我在命令行上执行它时它完全正常,但它永远不会在cron中执行。我的其他cron任务执行没有问题。我认为它必须与我的选项或不正确的语法有关。这是有问题的cron条目:
10 10 * * 0 php ~/v2/symfony/symfony cc; tar -czf ~/backups/schroeder/v2/v2_site_backup_`date +%Y-%m-%d_%H-%M`.tgz ~/v2/symfony | tee -a ~/log/weekly_backup.log
解 事实证明,当输入我的cron列表时,我需要逃避%。所以有效的命令是:
10 10 * * 0 php ~/v2/symfony/symfony cc; tar -czf ~/backups/schroeder/v2/v2_site_backup_`date +\%Y-\%m-\%d_\%H-\%M`.tgz ~/v2/symfony | tee -a ~/log/weekly_backup.log
答案 0 :(得分:2)
crontab
的环境非常小,因此您必须指明完整路径。
10 10 * * 0 /path/of/php /home/your_user/v2/symfony/symfony cc; tar -czf /home/your_user/backups/schroeder/v2/v2_site_backup_`date +%Y-%m-%d_%H-%M`.tgz /home/your_user/v2/symfony | tee -a /home/your_user/log/weekly_backup.log
^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^
而不是
10 10 * * 0 php ~/v2/symfony/symfony cc; tar -czf ~/backups/schroeder/v2/v2_site_backup_`date +%Y-%m-%d_%H-%M`.tgz ~/v2/symfony | tee -a ~/log/weekly_backup.log
即,更改~
的所有/home/your_user/
。
另外!将每个%
转为here:
date +%Y-%m-%d_%H-%M
必须是
date +\%Y-\%m-\%d_\%H-\%M