IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Mettre un timeout sur tache cron ou une commande bash


Sujet :

Linux

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 164
    Points : 67
    Points
    67
    Par défaut Mettre un timeout sur tache cron ou une commande bash
    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...

    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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    #!/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'

  2. #2
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    utilises bye au lieu de quit c'est peut etre une piste...
    le serveur ftp ne renvoie peut etre pas la fin a cause de ca..

    deplus ta facon de te loguer est vraiment douteuse...

    utilises un .netrc

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 164
    Points : 67
    Points
    67
    Par défaut
    En fait il ne va pas jusqu'au quit : il fait le get mais ne le termine jamais. Pourtant quand je regarde, le fichier est bien fini d'être downloadé.
    Même avec un client FTP normal ça fait la même chose ce qui est relativement pénible d'où mon idée de tuer carrement mon cron au bout d'un certain temps.

    Par contre pour ma manière de me loguer, je ne vois pas ce qui est génant, d'autant plus que j'ai toujours fait comme ça sans jamais avoir eu de souci

    Sinon, il est vrai que bye serait surement mieux...

    Simo'

  4. #4
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    c'est bien ce que je dis ton quit n'est pas bon.
    utilises bye

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 164
    Points : 67
    Points
    67
    Par défaut
    J'ai utilisé bye mais le résultat est le même.
    J'ai changé mon code pour essayé de tué ma tache.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    #...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
    Mais non, elle continue toujours de tournée la sale bête. Et quand je la tue à la main, le cron m'envoit le message suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    kill: usage: kill [-s sigspec | -n signum | -sigspec] [pid | job]... or kill -l [sigspec]
    Comme si le kill n'avait pas reçu le pid, gasp

  6. #6
    Membre expérimenté

    Inscrit en
    Mai 2002
    Messages
    720
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 720
    Points : 1 594
    Points
    1 594
    Par défaut
    Il manque un & après la parenthèse fermante (et un wait à la fin du coup): ton shell attends que le processus fils soit terminé pour continuer... C'est une fois que celui-ci est terminé que tu récupère le PID du dernier processus mis en arrière plan (il n'y en a plus donc $! renvoie une chaine vide) et attends 120 minutes.

    Après le timeout de 2 heures (ou ton kill), le script continue sur un KILL du processus de download (""), et comme il n'y a pas de test de la valeur, la commande est appelée avec de mauvais arguments. Le message d'erreur est maillé par cron (comportement normal).


    Sinon, plutôt que de réinventer la roue, tu peux juste utiliser wget

    Smortex

    Les FAQ Assembleur - Linux
    In The Beginning Was The Command Line Neal Stephenson

Discussions similaires

  1. Mettre un écouteur sur chaque bouton dans une boucle
    Par BillGates62 dans le forum Général Java
    Réponses: 6
    Dernier message: 29/04/2014, 12h50
  2. Réponses: 1
    Dernier message: 19/11/2012, 16h18
  3. Réponses: 2
    Dernier message: 21/11/2011, 11h40
  4. Réponses: 2
    Dernier message: 04/06/2009, 18h58
  5. [HTML] mettre un DIV sur plusieurs champs d'une table
    Par Nixar dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 07/09/2007, 16h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo