Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
Mettre un timeout sur une tache cron ou une commande bash
Envoyé par: simoryl

Salut,

Je vous explique mon souci : j'ai un bash qui est executé tous les jours pour récupérer un fichier de sauvegarde en FTP sur un serveur (que je ne peux pas administrer). Tous est nickel côté bash que j'utilise déjà pour d'autres serveurs. Cependant dans le cas présent, le serveur d'en face ne me dit jamais que le download est fini, du coup ma tache cron reste lancée en permanence...#%b

D'où ma question : est-il possible de mettre un timeout sur une tache cron ou une commande bash ou FTP???

Voici mon code pour ce que ça intérésse et pour bien comprendre ce que je fais :
#!/bin/bash
/usr/bin/ftp -in ftp.domain.com << EOF
quote USER leUser
quote PASS leMotDePasse
cd sauvegarde
binary
get sauvegarde.gz
quit
EOF

Simo'

Poste le Tuesday 26 June 2007 14:18:04
Répondre     Citer    
Re: Mettre un timeout sur une tache cron ou une commande bash
Envoyé par: oudoubah

Ce serait un truc du genre :

#!/bin/bash

TIMEOUT=30m

/usr/bin/ftp -in ftp.domain.com << EOF
quote USER leUser
quote PASS leMotDePasse
cd sauvegarde
binary
get sauvegarde.gz
quit
EOF &

PID=$!

sleep $TIMEOUT
kill -TERM $PID

Tu lances le ftp en arrière-plan, tu attends 30m, puis tu tues le process.


Tu as lu les docs. Tu es devenu un informaticien. Que tu le veuilles
ou non. Lire la doc, c'est le Premier et Unique Commandement de
l'informaticien.
-+- TP in: Guide du Linuxien pervers - "L'évangile selon St Thomas"

Poste le Tuesday 26 June 2007 15:45:01
Répondre     Citer    
Re: Mettre un timeout sur une tache cron ou une commande bash
Envoyé par: simoryl

J'ai essayé ça :

#code

(
/usr/bin/ftp -in ftp.domain.com << EOF
quote USER leUser
quote PASS leMotDePasse
cd sauvegarde
binary
get sauvegarde.gz
quit
EOF &
)

PID=$!

sleep 120m

kill -TERM $PID

Mon fichier est bien récupéré mais la tache toujours pas tuée. Une fois que je la kill à la main, le cron me renvois ceci :
kill: usage: kill [-s sigspec | -n signum | -sigspec] [pid | job]... or kill -l [sigspec]
Comme si il n'avait pas reçu le pid

Poste le Thursday 28 June 2007 10:23:30
Répondre     Citer    
Re: Mettre un timeout sur une tache cron ou une commande bash
Envoyé par: simoryl

Arf... Je me suis trompé dans la recopie du code, c'est ça qui est bon :

#code

(
/usr/bin/ftp -in ftp.domain.com << EOF
quote USER leUser
quote PASS leMotDePasse
cd sauvegarde
binary
get sauvegarde.gz
bye
EOF
)

PID=$!

sleep 120m

kill -TERM $PID

Poste le Thursday 28 June 2007 10:31:59
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
Mettre un timeout sur une tache cron ou une commande bash
Un problème avec une commande du shell ? Comment utiliser la crontab ? Vous avez des soucis pour la gestion réseau sous Linux ? Pour vous la gestion des utilisateurs/groupes est du chinois ? Etc... Posez donc vos questions ici.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons