我可以在脚本中运行诸如 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
当我 sudo 到 root 时,这些在 Redhat 的命令行上运行,然后如您在上面的命令中看到的,我对 postgres 执行 sudo -u。
但是当我尝试从 cron 启动它时,我在所有文件中得到零字节——这意味着它没有正常运行。而且我在我可以看到的日志中没有任何线索。
我的 /etc/crontab 文件底部有这个条目
00 23 * * * root /etc/db_backup.cron
是的,/etc/db_backup.cron 是 chmod ug+x,由 root 拥有,文件顶部显示“#!/bin/bash”(减去双引号)。
有谁知道给了什么?