我一直在尝试运行命令
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是否可以访问该文件。
答案 0 :(得分:1)
如果您希望像 cron 直接连接到服务器一样运行脚本,则应 source
为你的环境。要设置的变量。例如。假设您使用pg_usr
用户
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