tôi có thể chạy lệnh như vacuumdb, pg_dump, và psql tốt trong một kịch bản nếu tôi mở đầu họ như vậy:Làm cách nào để sao lưu Cơ sở dữ liệu PostgreSQL của tôi bằng 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
Những chạy ở dòng lệnh trên Redhat khi tôi sudo để nhổ tận gốc và sau đó khi bạn thấy trong các lệnh trên tôi làm một sudo -u để postgres.
Nhưng khi tôi cố gắng khởi động điều này từ cron, Tôi nhận được 0 byte trong tất cả các tệp - nghĩa là nó không chạy đúng cách. Và tôi không nhận được manh mối trong nhật ký mà tôi có thể thấy.
file/etc/crontab của tôi có cụm từ này ở dưới cùng
00 23 * * * root /etc/db_backup.cron
Và vâng, /etc/db_backup.cron là chmod ug + x, sở hữu bởi root, và phía trên cùng của tập tin nói " #!/bin/bash "(trừ dấu hai chấm).
Bất cứ ai biết điều gì mang lại?
ít nhất trên redhat,% ký hiệu cần phải được thoát. không thoát nó sẽ dẫn đến cron cố gắng thực thi lệnh của bạn chỉ cho đến khi%. Xem - http://fahdshariff.blogspot.com/2009/05/percent-sign-in-crontab.html – chrismarx