Vous n'êtes pas identifié(e).
Pages : 1
Bonjour tout le monde,
Je suis nouveau sur ce forum.
Et je suis coincé... j'ai un script de backup monscript.sh :
#!/bin/bash
export PGPASSWORD="pwd"
pg_dump -U user -v db | bzip2 -c > /data/backup/db.sql.dump.bz2
Si je lance le script à la main,
# ./monscript.sh
tout se passe bien !
Maintenant je l'ajoute à ma crontab, il démarre mais ne fait rien à part créer le fichier : db.sql.dump.bz2 vide
Quelqu'un aurait une idée ?
Merci d'avance
Dernière modification par lusitano (17/01/2011 09:49:44)
Hors ligne
Pas de droit de connexion à la base ? que dit le log de PostgreSQL ?
Guillaume.
Hors ligne
Non je pense pas...
Voici ce que dit le log
2011-01-14 13:00:01 CET LOG: unexpected EOF on client connection
Hors ligne
Je tiens à préciser que le script marche si je l'exécute manuellement...
Merci d'avance pour vos réspone
Hors ligne
Oui, mais l'utilisateur qui exécute le script par cron peut être différent de votre utilisateur. Du coup, la connexion peut très bien ne pas se faire.
Pour avancer su votre soucis, il faut essayer de récupérer les messages d'erreur de pg_dump ou de bzip2. Séparer les deux commandes, faire des echo pour réussir à le débugger.
Guillaume.
Hors ligne
Le log cron :
Jan 14 14:20:01 ECHL0-1PREPROD01 /USR/SBIN/CRON[32617]: (root) CMD ( /tools/backup.sh)
c'est root qui exécute le script (/etc/crontab)
et j'exécute manuellement mon script en root
j'ai mon log postgres qui me retourne uniquement l'erreur : unexpected EOF on client connection
Merci pour gleu ton aide !
Hors ligne
Il pourrait être intéressant de rajouter un set -x au début du script. Cela permet de tracer les commandes. On peut avoir des surprises (comme pg_dump pas dans le path par exemple).
Marc.
Hors ligne
Merci pour la réponse mais je comprend pas ce que tu me propose... peux tu être un peu plus précis?
Hors ligne
#!/bin/bash
set -x
export PGPASSWORD="pwd"
pg_dump -U user -v db | bzip2 -c > /data/backup/db.sql.dump.bz2
Pour un script aussi simple, ça ne sert pas 'énormément', mais ça permet de tracer ce qui est fait en détail dans un script. On sera au moins sûr que pg_dump et bzip2 sont correctement exécutés.
Dernière modification par Marc Cousin (14/01/2011 16:18:14)
Marc.
Hors ligne
aucun changement au niveau des logs...
postgres:
2011-01-14 15:20:02 CET LOG: unexpected EOF on client connection
je comprend pas...
Hors ligne
Normal, le set -x ne change pas la log postgres. Elle change la sortie du script, en la rendant plus détaillée. Encore faut il que vous receviez le résultat du script, tel qu'exécuté par cron.
Redirigez donc la sortie du script vers un fichier, dans l'entrée cron… par exemple :
0 12 * * * monscript.sh >> /tmp/log_mon_script 2>&1
Vous aurez la sortie du script dans le fichier /tmp_log_mon_script
Marc.
Hors ligne
Merci pour ton astuce!
le fait d'avoir redirigé la sortie du script, a réveillé script ...?
je comprend pas...
tu as une explication?
Surtout qu'il n'y avait pas de raison que le script ne fonctionne pas....?
Dernière modification par lusitano (17/01/2011 14:53:22)
Hors ligne
La redirection a fait marcher le script ? j'en doute fortement
Marc.
Hors ligne
J'ai rien fait d'autre... mon script est comme au début de la discussion et j'ai juste rajouté : >> /tmp/log_mon_script 2>&1 à la fin de la ligne concernant mon script
Dernière modification par lusitano (17/01/2011 16:25:16)
Hors ligne
essaye avec
su postgres -c "/usr/lib/postgresql/8.3/bin/pg_dump -U user -v db | bzip2 -c > /data/backup/db.sql.dump.bz2"
avec le path de ta version de pg vers pg_dump, pas sur que les environnements soient chargés dans cron.
C'est mieux également je pense de l'exécuter en tant que user postgres.
Hors ligne
Merci peyo pour ta proposition!
Mais je confirme, le fait de redirigé la sortie du script fait que le dump fonctionne parfaitement...?
0 4 * * * root /local/tools/monsrcipt_backup.sh >> /tmp/log_mon_script 2>&1
Merci !
Hors ligne
Pages : 1