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

Shell et commandes GNU Discussion :

Difficulté avec crontab


Sujet :

Shell et commandes GNU

  1. #1
    Membre confirmé
    Homme Profil pro
    en retaite
    Inscrit en
    Mai 2010
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : en retaite
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 164
    Par défaut Difficulté avec crontab
    Bonjour à tous,

    je suis ennuyé par la difficulté de lancer une tâche dans le crontab de mon compte.
    Je suis hébergé sur un serveur mutualisé de chez 1&1 (Debian).
    J'ai donc réalisé un bash (dump d'une base mysql et zip d'un répertoire) qui tourne parfaitement lorsque je le lance en direct.

    Voici le bash :
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    #! /bin/bash
    echo "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
    echo ""
    ##  Parametre pour la commande CRON
    ##    sauve-bash.sh CH_JA db714021152.db.1and1.com dbo714021152 xxxxxxxxx db714021152
    ##                  MPSHF db683202632.db.1and1.com dbo683202632 yyyyyyyyy  db683202632
    ##                  $1___ $2______________________ $3__________ $4______ $5_________
     
    ##  Parametre du serveur du site
    site=$1
     
    ##  Base a traiter fournie en parametre
    db_host=$2
    db_user=$3
    db_passwd=$4
    db_name=$5
    echo ""
    ##  Confection de la variable CEJOUR
    cejour=$(date +%Y-%m-%d__%H:%M:%S)
    echo "Verification de la variable DATE generee"
    echo $cejour
    echo ""
    ##  Confection de la variable 'REPERTOIRE' ou sera depose la sauvegarde
    sauvegarde_bdd="REP_$site/Sauvegardes_BDD"
    echo "Verification de la variable REPERTOIRE generee "
    echo $sauvegarde_bdd
    echo ""
     
    ##  DUMP de la base dans un fichier.sql
    dump_file=$sauvegarde_bdd/$site_${cejour}__Backup_sh.sql
    mysqldump -u "$db_user" -p"$db_passwd" -h"$db_host" "$db_name" > "$dump_file"
    echo $1
    echo ""
    echo "Le Dump de la base $db_name dans $dump_file est OK"
    echo ""
    ls -ltr $dump_file
    echo ""
     
    ## Confection du NOM du zip
    #file_zip="ZIP_"${site}__${cejour}.zip
    file_zip="ZIP_"${site}.zip
     
    ## ZIP du repertoire du Site
    zip -r $file_zip REP_${site}
     
    echo ""
    echo "Le ZIP du site REP_${site} dans ZIP_${site}.zip est OK, dans le HOME."
    echo ""
    echo ""
    ls -ltr $file_zip
    echo ""
    echo "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
    Dans ce script il y a des variables (la date du jour et le chemin de répertoire) qui servent à composer le nom du fichier zip à obtenir.
    Lors du script lancé la main, les variables se comportent bien et par concaténation, fabriquent le nom (prévu) de mon zip.
    Lors de l'exécution du crontab (le mien) , les variables ne sont pas trouvées et le nom de mon zip ne contient que la partie "fixe" du nom de mon zip.

    Voici le crontab :
    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
    20
    21
    22
    23
    24
     
    #! /bin/sh
    #
    # Voici mon premier CRONTAB.
    #
    #
     
    PATH=$PATH
     
    ##  Execute la ligne a 1h00 du matin, tous les heures
    ##  00 01 * * * ./rodo-sauve-bash.sh CH_JA db714021152.db.1and1.com dbo714021152 xxxxxxxxxxx db714021152
     
    ##  Execute la ligne a 1h15 du matin, tous les jours
    ##  15 01 * * * ./rodo-sauve-bash.sh MPSHF db683202632.db.1and1.com dbo683202632 yyyyyyyyyy db683202632
     
     
     
    ##  Execute toute les 2 minutes (pour tests)
    */2 * * * * ~/rodo-sauve-bash.sh CH_JA db714021152.db.1and1.com dbo714021152 xxxxxxxxxxx db714021152
    */2 * * * * ~/rodo-sauve-bash.sh MPSHF db683202632.db.1and1.com dbo683202632 yyyyyyyyyy db683202632
     
    ##  Inscrit la date toutes les 2 minutes dans le fichier txt
    */2 * * * * ~/date>>ctrl_date.txt
    (uiserver):u88921243:~$
    Quel chemin doit être précisé dans le lancement (dans crontab) de mon shell ? Est-ce qu'il se lance d'un mauvais endroit ?
    Je ne saisis pas où est le problème.

    Je vous remercie de vos conseils et ... de votre solution.
    Maub

  2. #2
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Par défaut
    Bonjour,

    En crontab, tu dois absolument utiliser des chemins absolus. Toujours.

    Tu veux exécuter ./mon_script, mais à partir d'où ? Pourquoi est-ce que la crontab serait dans le bon répertoire ? Pareil pour ton chemin dans sauvegarde_bdd, il doit être en chemin absolu.
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  3. #3
    Membre confirmé
    Homme Profil pro
    en retaite
    Inscrit en
    Mai 2010
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : en retaite
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 164
    Par défaut Difficulté avec crontab
    Chers amis,

    Merci pour la solution suggérée, c'était la bonne.
    A 72 ans, on peut toujours apprendre, j'en témoigne !

    Bien cordialement et joyeuses fêtes.
    Maub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/04/2014, 09h12
  2. Réponses: 12
    Dernier message: 13/08/2012, 11h35
  3. Réponses: 27
    Dernier message: 27/01/2011, 13h53
  4. Réponses: 20
    Dernier message: 22/01/2011, 22h42
  5. Langage d'initiation pour jeunes de 10-12 ans
    Par Sebsheep dans le forum Débuter
    Réponses: 39
    Dernier message: 28/04/2006, 23h52

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