Postgresql 自动备份脚本在终端中运行但不在 MacOS 上的 CRON 作业中运行

Postgresql Auto backup script runs in terminal but does not runs in CRON job on MacOS

我使用了来自 Automated_Backup_on_Linux:

的通用 Postgresql 备份脚本
#!/bin/bash
if [ ! $HOSTNAME ]; then HOSTNAME="localhost"; fi
if [ ! $USERNAME ]; then USERNAME="postgres"; fi
BACKUP_DIRECTORY="/Users/xeranta/Documents/AW/"
CURRENT_DATE=$(date "+%Y%m%d")
if [ -z "" ]; then
    pg_dump -U postgres -h localhost -p 5432 db_gocampus_unmul \
    > $BACKUP_DIRECTORY/db_gocampus_unmul.sql
else
    pg_dump  | gzip - > $BACKUP_DIRECTORY/_$CURRENT_DATE.sql.gz
fi

它在终端运行

$ ~/Documents/AW/./dbbackup.sh

但是在 MacOS Sierra 版本 10.12.6 的 CRONTAB 中设置这个时不会运行

我有这个错误

/Users/xeranta/Documents/AW/./backup.sh: line 36: pg_dumpall: command not found

问题的原因是 pg_dump 在交互式 PATH 上 shell,但不在 cron 作业中。

您应该使用类似这样的绝对路径:

PGPATH=/wherever/your/postgres/binaries/are

"$PGPATH"/pg_dump ...