Postgresql 备份的 Cron 作业不起作用

Postgresql 备份的 Cron 作业不起作用

我已经设置了一个 cron 作业来每小时备份数据库。

/etc/crontab

0 */1 * * * sh /opt/post.sh

/opt/post.sh

pg_dump -U postgres db_name > /home/golp/Desktop/backup.sql

为了进行身份验证,我使用.pgpass文件。

localhost:5432:db_name:postgres:password

关于权限,

chmod 0600 ~/.pgpass
chown postgres:postgres /home/golp/Desktop/

cron 作业似乎每小时运行一次(我检查了日志)。我发现 cron 作业创建的备份文件是空的。我正在使用CentOS 7 1503 和 Postgresql 9.5

笔记:当我pg_dump -U postgres db_name > /home/golp/Desktop/backup.sql在终端以 root 用户身份运行时,备份会按预期创建。

请帮忙。

答案1

尝试在脚本中输入 pg_dump 的完整路径。

答案2

如果您手动修改文件/etc/crontab,则需要添加如下条目(对于 root 用户):

0 * * * * root sh /opt/post.sh

您缺少root运行 cron 作业所需的用户名。这是必需的,因为这是一个全局文件(与 下的每个用户文件不同/var/spool/cron/)。

编辑:为了帮助诊断 cron 作业错误,您可以将 cron 作业行更改为:

0 * * * * root sh /opt/post.sh >> /tmp/cron.log 2>&1

这会将所有 stdout 和 stderr 消息重定向到文件/tmp/cron.log(附加模式以便每次运行 cron 作业时不会覆盖它)。

相关内容