次のように序文を付ければ、vacuumdb、pg_dump、psqlなどのコマンドをスクリプトで問題なく実行できます。
/usr/bin/sudo -u postgres /usr/bin/pg_dump -Fc mydatabase > /opt/postgresql/prevac.gz
/usr/bin/sudo -u postgres /usr/bin/vacuumdb --analyze mydatabase
/usr/bin/sudo -u postgres /usr/bin/pg_dump -Fc mydatabase > /opt/postgresql/postvac.gz
SCHEMA_BACKUP="/opt/postgresql/$(date +%w).db.schema"
sudo -u postgres /usr/bin/pg_dump -C -s mydatabase > $SCHEMA_BACKUP
これらは、私がrootにsudoを実行しているときに、Redhatのコマンドラインで実行されます。次に、上記のコマンドに示されているように、postgresにsudo-uを実行します。
しかし、これをcronから開始しようとすると、すべてのファイルでゼロバイトが取得されます。つまり、正しく実行されませんでした。そして、私が見ることができるログには手がかりがありません。
私の/etc/crontabファイルの下部にこのエントリがあります
00 23 * * * root /etc/db_backup.cron
はい、/ etc/db_backup.cronはchmodug+ xであり、rootが所有し、ファイルの先頭には「#!/ bin / bash」(二重引用符を引いたもの)と表示されます。
誰が何を与えるか知っていますか?