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 :

Substitution ne fonctionne pas avec cron


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 546
    Par défaut Substitution ne fonctionne pas avec cron
    Bonjour,

    J'ai fait un script bash pour sauvegarder ma base MySql. J'en profite pour garder les 7 derniers jours.
    Lorsuqe je lance le programme en direct, tout marche, quand c'est le cron il me fait un "bad substitution"...
    Comment ça se fait ?
    Voici le script:
    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
    #!/bin/bash
     
    #User Variables
    DATE=/bin/date;
    NOW=`$DATE '+%Y-%m-%d' `
    MYSQLUSER=admin
    MYSQLPWD=admin
    MYSQLHOST=localhost
    MYSQLBACKUPDIR=/media/sf_backup/
     
    MK=/bin/mkdir;
    RM=/bin/rm;
    MV=/bin/mv
    GREP=/bin/grep;
    MYSQL=/usr/bin/mysql;
    TAR=/bin/tar;
    MYSQLDUMP=/usr/bin/mysqldump;
     
    #$MK $MYSQLBACKUPDIR
     
    $MYSQLDUMP -u$MYSQLUSER -p$MYSQLPWD -h$MYSQLHOST -Q -c -C --add-drop-table --add-locks --quick --lock-tables Madatabase > $MYSQLBACKUPDIR/Madatabase.$NOW.sql;
    $TAR -czf $MYSQLBACKUPDIR/Madatabase.$NOW.0.tgz $MYSQLBACKUPDIR/Madatabase.$NOW.sql;
     
    $RM -f $MYSQLBACKUPDIR/*7.tgz;
    for fich in $MYSQLBACKUPDIR/*.6.tgz;do $MV $fich ${fich/.6.tgz/.7.tgz};done
    for fich in $MYSQLBACKUPDIR/*.5.tgz;do $MV $fich ${fich/.5.tgz/.6.tgz};done
    for fich in $MYSQLBACKUPDIR/*.4.tgz;do $MV $fich ${fich/.4.tgz/.5.tgz};done
    for fich in $MYSQLBACKUPDIR/*.3.tgz;do $MV $fich ${fich/.3.tgz/.4.tgz};done
    for fich in $MYSQLBACKUPDIR/*.2.tgz;do $MV $fich ${fich/.2.tgz/.3.tgz};done
    for fich in $MYSQLBACKUPDIR/*.1.tgz;do $MV $fich ${fich/.1.tgz/.2.tgz};done
    for fich in $MYSQLBACKUPDIR/*.0.tgz;do $MV $fich ${fich/.0.tgz/.1.tgz};done
     
    $RM -f $MYSQLBACKUPDIR/*.sql;

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 664
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 664
    Par défaut
    Bonjour,

    il serait pertinent de donner le message d'erreur en entier; ça sert quand même au diagnostic !
    si ton script est inscrit dans la crontab tel que * * * * * sh tonScript (on se demande pourquoi tu le ferais dans la crontab , et pas sur la ligne de commande, mais sait-on jamais...), il n'y a qu'à enlever le sh qui ne connait pas ce type de substitution.

    sinon, affiche-nous la crontab.

    nb: les noms de variables tout en majuscules sont réservés aux variables d'environnement.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 546
    Par défaut
    OK, désolé je n'ai peut être pas été très clair...
    Je recommence.
    Le script est lancé via un cron dont la commande est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    * * * * * sh backupdatabase.sh > /var/log/cron_backup.log 2>&1
    Et l'erreur rapportée dans le log est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /home/moi/backupdatabase.sh: 25: Bad substitution
    Et donc merci pour tes éclaircissements N_BaH, j'ai changé le cron et maintenant ça marche.
    J'ai mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    * * * * * backupdatabase.sh > /var/log/cron_backup.log 2>&1
    Merci !

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

Discussions similaires

  1. [PrestaShop] Module "Relancer vos clients" ne fonctionne pas avec tâche CRON
    Par IED factory dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 20/05/2015, 13h48
  2. Script fonctionnant en manuel mais pas avec cron
    Par megayaya dans le forum Shell et commandes GNU
    Réponses: 9
    Dernier message: 28/03/2013, 12h06
  3. Script fonctionne pas avec cron
    Par Nelmo dans le forum Administration système
    Réponses: 11
    Dernier message: 09/07/2012, 17h01
  4. fichier shell qui ne fonctionne pas avec le cron mais fonctionne dans le shell
    Par diabli73 dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 20/10/2008, 19h12
  5. window.resizeTo ne fonctionne pas avec firefox?
    Par FrankOVD dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/06/2005, 15h07

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