posso eseguire comandi come vacuumdb, pg_dump e psql bene in uno script se li prefazione in questo modo:Come faccio a eseguire il backup del mio database PostgreSQL con Cron?
/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
Esse funzionano a riga di comando su Redhat quando sono sudo per radicare e poi come si vede nei comandi sopra faccio un sudo -u to postgres.
Ma quando provo a calci fuori questo da cron, ottengo zero byte in tutti i file - il che significa che non è stata eseguita correttamente. E non ho idea dei registri che posso vedere.
mio file/etc/crontab ha questa voce in fondo
00 23 * * * root /etc/db_backup.cron
E sì, /etc/db_backup.cron è chmod ug + x, di proprietà di root, e la parte superiore del file dice " #!/bin/bash "(meno le doppie quotazioni).
Qualcuno sa cosa dà?
almeno su redhat, i simboli% devono essere sottoposti a escape. non sfuggirle comporterà che cron cercherà di eseguire il comando solo fino alla%. Vedi - http://fahdshariff.blogspot.com/2009/05/percent-sign-in-crontab.html – chrismarx