无法从cron作业运行pg_dump

时间:2016-03-21 18:46:00

标签: linux postgresql

我们的系统在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,其大小为零。

为什么?

2 个答案:

答案 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
编辑:刚刚注意到你已经发布了答案。如果您有时间购买,请尝试删除导出,看看您是否可以在日志中获得可能有帮助的错误。