我正在尝试运行cronjob来每天备份我的数据库。我通过登录root并执行crontab -e
创建了cronjob,然后粘贴在我的命令中:
* * * * * /bin/bash -l -c 'cd /var/lib/postgresql && sudo -u postgres pg_dump db_development -O -f "/var/lib/postgresql/backup/db-`date +\%Y-\%m-\%d\\%k:\%M:\%S`.sql"' > /var/lib/postgresql/log/cron.log 2>&1
这非常烦人,因为如果我在终端中使用postgres用户或root用户运行它,该命令可以完美地工作。但是,我从cronjob任务中得不到任何数据。日志文件为空,永远不会创建备份文件。
我一直试图解决这个问题超过10个小时而且我没有想法。任何帮助表示赞赏。感谢。
答案 0 :(得分:1)
最有可能是环境问题。检查shell中的任何数据库环境设置。
您还可以在脚本中包装cron命令行(并从cron调用脚本)。然后你最初可以让脚本转储环境(所以你可以看到缺少的东西),最后让它设置正确的环境。 vars,以便它确实有效。
答案 1 :(得分:0)
虽然你可能遇到环境问题,但是这样一个很长的命令可能最好是在一个从cron调用的单独脚本中。