Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 21/04/2011, à 17:26

obibann

[Résolu] Résultat d'exécution d'une commande lancée en tâche de fond

Bonjour,

Pour sauvegarder des bases de données, j'ai besoin de lancer la sauvegarde de celles-ci un arrière plan afin que le script puisse continuer son exécution.

Voici la commande exécutée :

pg_dump -U postgres –p <port> -v -Fc --compress=9 <database name> > <database name>.dump 2> /tmp/progress &

Je récupère le pid au lacement ce qui me permet de contrôler régulièrement, à laide de "ps", si la processus est terminé.

Cependant, une fois le processus terminé, je ne sais pas comment savoir si une erreur est intervenue ou non. Utiliser "echo $?" n'étant d'aucune utilité puisque d'autres commandes ont été exécutées depuis.

Comment faire pour récupérer le statut d'exécution de cette commande ?

Merci.

Dernière modification par obibann (Le 22/04/2011, à 09:33)


Ubuntu 16.04
Avec Windows, on fait ce qu'on peut... Avec Linux, on fait ce qu'on veut !! :p

Hors ligne

#2 Le 21/04/2011, à 17:34

mjdon

Re : [Résolu] Résultat d'exécution d'une commande lancée en tâche de fond

cat /tmp/progress

ça ne ferais pas l'affaire?
Si tu veux faire des choses plus complexes, regarde du coté de screen, c'est un outil sympa à connaître.

Dernière modification par mjdon (Le 21/04/2011, à 17:38)

Hors ligne

#3 Le 21/04/2011, à 17:39

obibann

Re : [Résolu] Résultat d'exécution d'une commande lancée en tâche de fond

/tmp/progress ne me permet pas de savoir si tout s'est bien terminé (j'ai testé, j'ai fait planté, y'a pas d'erreurs dedans).

screen, je ne peux pas l'utiliser, car tout ça a pour but d'être lancé dans un script smile


Ubuntu 16.04
Avec Windows, on fait ce qu'on peut... Avec Linux, on fait ce qu'on veut !! :p

Hors ligne

#4 Le 21/04/2011, à 17:58

mjdon

Re : [Résolu] Résultat d'exécution d'une commande lancée en tâche de fond

Je ne sais pas exactement ce que tu veux dire par "j'ai fait planté", mais si le fichier est vide, ton programme n'aurais affiché aucune erreur dans un terminal. Je vais proposer un truc que je n'ai pas du tout testé: tu crées une fonction

sauvegarde_db() { 
pg_dump -U postgres –p <port> -v -Fc --compress=9 <database name> > <database name>.dump 2> /tmp/progress
echo $? >> /tmp/progress
}

Et tu l'appelles avec

sauvegarde_db &

Dernière modification par mjdon (Le 21/04/2011, à 18:00)

Hors ligne

#5 Le 22/04/2011, à 09:32

obibann

Re : [Résolu] Résultat d'exécution d'une commande lancée en tâche de fond

Mais bien sur !! Comment n'y ai-je pas pensé plus tôt lol

Merci beaucoup mjdon ! C'est au poil wink

Mais si le fichier est vide, ton programme n'aurais affiché aucune erreur dans un terminal

En fait, je redirige la sortie d'erreur dans un fichier, non pas pour lire les erreur, mais pour suivre le déroulement des opérations.
En effet, pg_dump affiche les messages de progression sur la sortie d'erreur hmm

http://www.postgresql.org/docs/9.0/stat … gdump.html

Specifies verbose mode. This will cause pg_dump to output detailed object comments and start/stop times to the dump file, and progress messages to standard error.

A+ et merci encore


Ubuntu 16.04
Avec Windows, on fait ce qu'on peut... Avec Linux, on fait ce qu'on veut !! :p

Hors ligne