Ich kann Befehle wie vacuumdb, pg_dump und psql ganz gut in einem Skript ausführen, wenn ich sie Vorwort wie so:Wie kann ich meine PostgreSQL-Datenbank mit Cron sichern?
/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
Diese auf der Kommandozeile auf Redhat laufen, wenn ich sudo bin zu verankern und dann, wie Sie sehen, In den oben genannten Befehlen mache ich ein Sudo -u nach Postgres.
Aber wenn ich versuche, diese von Cron, kick ich bekomme null Bytes in allen Dateien - was bedeutet, dass es nicht ordnungsgemäß ausgeführt wurde. Und ich habe keine Ahnung in den Protokollen, die ich sehen kann.
Meine/etc/crontab hat diesen Eintrag am unteren
00 23 * * * root /etc/db_backup.cron
Und ja, /etc/db_backup.cron ist chmod ug + x, im Besitz von Root und der Anfang der Datei sagt " #!/bin/bash "(minus doublequotes).
Wer weiß was gibt?
mindestens auf redhat, müssen% Symbole maskiert werden. Wenn Sie nicht entkommen, wird Cron versuchen, Ihren Befehl nur bis zum% auszuführen. Siehe - http://fahdshariff.blogspot.com/2009/05/percent-sign-in-contab.html – chrismarx