Postgres dump命令适用于shell,但是当我将它添加到crontab时则不行

时间:2016-10-07 21:41:14

标签: postgresql unix crontab

我一直在尝试运行命令

pg_dump -U database_username database_name > /path/to/directory/database_name.$(date +"%Y-%m-%d-%H:%M:%S").dump

当我从命令提示符处执行此命令时,此命令有效,但当我将其放在crontab中时,它不会输出任何内容。那是为什么?

我还在主目录中定义了一个.pgpass文件,其中包含

等行
hostname:port:database_name:database_username:database_password

所以当我从命令提示符运行命令时,它不会提示我输入密码。我不确定crontab是否可以访问该文件。

1 个答案:

答案 0 :(得分:1)

如果您希望像 cron 直接连接到服务器一样运行脚本,则应 source 为你的环境。要设置的变量。例如。假设您使用pg_usr用户

在ksh上运行
10 03 * * * source /home/pg_usr/.kshrc ; my_postgre_shell

另一件事是 cron 在直接连接时可能没有设置与默认相同的umask,从而导致对 cron 会话。因此,您还必须设置所需的umask

10 03 * * * source /home/pg_usr/.kshrc ; umask 002 ; my_postgre_shell