我们的系统在AWS上。 Debian EC2实例。 RDS postgres实例。 当我登录" admin"帐号pd_dump有效。
$ whom
admin
$pd_dump
[it works...]
然后我crontab -e
以创建测试备份事件。
*/2 * * * * /home/admin/storage/db_backup.sh
实际上,它每2分钟运行一次。
在db_backup.sh
我有:
pg_dump > dbbackup.txt
脚本和我运行的文件夹属于" admin"。
始终生成dbbackup.txt,其大小为零。
为什么?
答案 0 :(得分:3)
我发现了罪魁祸首。由于我在管理员的上下文中运行但是在cron中,我的环境字符串没有设置。
将此设置在db_backup.sh
的头部,解决了这个问题:
export PGPASSWORD=<value>
export PGHOST=<value>
export PGDATABASE=<value>
export PGUSER=<value>
答案 1 :(得分:1)
我们只能在这里猜测,但我有一个建议。尝试将ALL输出(包括stderr)重定向到文件,看看它是否为您提供了一些信息。
在/home/admin/storage/db_backup.sh
添加2>&1
:
pg_dump > dbbackup.txt 2>&1
您也可以使用此功能并重定向您的cron行,以防.sh
文件出现问题:
*/2 * * * * /home/admin/storage/db_backup.sh >> /home/admin/cron_log.txt 2>&1
编辑:刚刚注意到你已经发布了答案。如果您有时间购买,请尝试删除导出,看看您是否可以在日志中获得可能有帮助的错误。