【发布时间】:2010-10-25 15:33:48
【问题描述】:
我可以在脚本中运行诸如 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”(减去双引号)。
有谁知道是什么给的?
【问题讨论】:
-
至少在redhat上,%符号需要转义。不转义它将导致 cron 尝试执行您的命令,直到 %.见 - fahdshariff.blogspot.com/2009/05/percent-sign-in-crontab.html
标签: bash postgresql cron backup