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 :

Probleme crontab avec plusieurs lignes


Sujet :

Shell et commandes GNU

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 39
    Points : 16
    Points
    16
    Par défaut Probleme crontab avec plusieurs lignes
    Bonjour a tous,

    J'ai un petit soucis avec le crontab.
    J'ai une ligne sur deux qui s'execute.

    Crontab :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    0 23 * * 1-5 /home/oracle2/backup/export2.sh
    05 12 * * 1-5 /home/oracle1/backup/export1.sh
    J'ai ajouté la deuxieme ligne mais elle ne s'execute pas a l'heure voulu, pourtant la Premiere ligne continu de bien s'executer.

    Comment ca se fait?

    Merci d'avance à ceux qui m'aideront

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 78
    Points : 96
    Points
    96
    Par défaut
    Bonjour,

    A tout hasard, as-tu pensé à recharger cron ? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /etc/init.d/cron reload
    ++
    Fred

  3. #3
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 937
    Points : 4 358
    Points
    4 358
    Par défaut
    Citation Envoyé par nicohand94 Voir le message
    Bonjour a tous,

    J'ai un petit soucis avec le crontab.
    J'ai une ligne sur deux qui s'execute.

    Crontab :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    0 23 * * 1-5 /home/oracle2/backup/export2.sh
    05 12 * * 1-5 /home/oracle1/backup/export1.sh
    J'ai ajouté la deuxieme ligne mais elle ne s'execute pas a l'heure voulu, pourtant la Premiere ligne continu de bien s'executer.

    Comment ca se fait?

    Merci d'avance à ceux qui m'aideront
    quelques unes des distractions qui peuvent mener à ce comportement :

    a. oublier de rendre le script exécutable
    b. erreur de shebang
    c. mauvaises fins de lignes (CR au lieu de LF)
    d. typo dans le path
    e. un dossier du path n'est pas accessible par l'utilisateur qui exécute le cron

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 39
    Points : 16
    Points
    16
    Par défaut
    Alors j'ai essayé de recharger le cron mais ca ne marche toujours pas.
    Pour moi la commande était
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /etc/init.d/crond reload
    Pour ce qui est du script je l'ai bien rendu executable : chmod 755

    Et pour le PATH je ne pense pas que c'est ca car il utilise les memes commandes que la premiere ligne.

    Par contre qu'est-ce que c'est que l'erreur de shebang?

    Le script est bon car quand je lance manuellement le .sh il fait bien l'export.
    Je ne comprends pas pourquoi le cron ne lance qu'un script sur les deux....

  5. #5
    Membre éclairé Avatar de jmelyn
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2007
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2007
    Messages : 703
    Points : 823
    Points
    823
    Par défaut
    Bonjour,

    Si le service crond a éte redémarré, c'est le script qui ne fonctionne pas. C'est le cron de quel user? Pour tester le script, il faut être ce user dans le home-dir sans avoir lancé aucune commande auparavant.
    Un problème bien posé est déjà résolu (H. Bergson).

  6. #6
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 937
    Points : 4 358
    Points
    4 358
    Par défaut
    Citation Envoyé par nicohand94 Voir le message
    Alors j'ai essayé de recharger le cron mais ca ne marche toujours pas.
    Pour moi la commande était
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /etc/init.d/crond reload
    Pour ce qui est du script je l'ai bien rendu executable : chmod 755

    Et pour le PATH je ne pense pas que c'est ca car il utilise les memes commandes que la premiere ligne.

    Par contre qu'est-ce que c'est que l'erreur de shebang?

    Le script est bon car quand je lance manuellement le .sh il fait bien l'export.
    Je ne comprends pas pourquoi le cron ne lance qu'un script sur les deux....
    le shebang c'est la première ligne du script indiquant le programme qui doit interpréter la suite…
    #!/bin/sh … par exemple
    et si il y a une typo sur cette ligne …

  7. #7
    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
    Points : 28 119
    Points
    28 119
    Par défaut
    Bonjour,

    Est-ce que ton script est ecrit pour etre executable sans environnement ?

    Si oui, il devrait fonctionner dans le cas suivant (a faire a la main) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $> bash
    $> export PATH=
    $> /dir1/dir2/ton_script
    Une fois fini, tapes ctrl + d pour revenir dans ton shell initial.
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 39
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par jmelyn Voir le message
    Bonjour,

    Si le service crond a éte redémarré, c'est le script qui ne fonctionne pas. C'est le cron de quel user? Pour tester le script, il faut être ce user dans le home-dir sans avoir lancé aucune commande auparavant.
    ça m'etonne que ça vienne du script parce que c'est exactement le même que le premier mis a part que le repertoire de backup est différent c'est tout.
    Et que quand je lance le script manuellement il fonctionne très bien.
    Je navigue dans le serveur en root mais c'est l'utilisateur oracle qui lance ces script. J'ai pris le soin de faire pour ajouter les lignes pour lancer le script.

    gangsoleil pour ce que tu m'a dit, quand je tappe bash ça ne fait rien... ca reste dans le shell normal...

    Je viens de refaire la vérif Ce matin et le script de la deuxieme ligne ne s'est toujours pas lancé...

    Je vous met mon script et mon crontab de l'user oracle voir si vous voyez quelquechos qui cloche...

    export1.sh :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #!/bin/bash
    timestamp=$(date '+%d%m%Y-%H%M')
    ORACLE_HOME=/u01/app/oracle/product/9.2.0/; export ORACLE_HOME
    ORACLE_SID=DODO; export ORACLE_SID
    PATH="$PATH:$ORACLE_HOME/bin"
    mkdir /home/oracle/backup1/${timestamp}
    exp system/aa@DODO file=/home/oracle/backup1/${timestamp}/xxx-${timestamp}.dmp log=/home/oracle/backup1/${timestamp}/xxx-${timestamp}.log full=y rows=y
    exit
    crontab :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    00 23 * * 1-5 /home/oracle/backup2/export2.sh
    25 11 * * 1-5 /home/oracle/backup1/export1.sh

  9. #9
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 937
    Points : 4 358
    Points
    4 358
    Par défaut
    montrez donc la sortie de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    su oracle
    export PATH=
    /home/oracle1/backup/export1.sh

  10. #10
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Points : 1 206
    Points
    1 206
    Par défaut
    Il n'y a qu'une seule manière de déboguer un cron qui ne marche pas. Il faut rediriger les messages d'erreur éventuels (stderr) vers un fichier ou un terminal actif.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    * * * * 1-5 /home/oracle/backup1/export1.sh 2> /tmp/err_cron
     
    # ou
     
    * * * * 1-5 /home/oracle/backup1/export1.sh 2> /dev/pts/0
    Le terminal actif est donné par la commande tty. Dans la plupart des cas il s'agit d'un chemin incomplet ou relatif dans une ligne du script. On parie?
    :q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp
    :quitplease :quitnow :leave :shit ^X^C ^C ^D ^Z ^Q QUITDAMMIT
    Jabber: ripat at im.apinc.org

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 39
    Points : 16
    Points
    16
    Par défaut
    Merci pour ces réponses,

    alors pour la sortie des commandes SeirtEmgie ca donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    [oracle@xxx log]$ /home/oracle1/backup/export1.sh 
    /home/oracle/backup/export1.sh: line 3: date: Aucun fichier ou répertoire de ce type
    /home/oracle/backup/export1.sh: line 8: mkdir: command not found
     
    Export: Release 9.2.0.4.0 - Production on Tue Oct 6 12:01:38 2009
     
    Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
     
     
    EXP-00028: failed to open /home/oracle/backup//xxx-.log for write
    EXP-00000: Export terminated unsuccessfully
    C'est a priori logique vu que le PATH est vidé je pense.


    Pour les commandes de ripat, le script ne fonctionne toujours pas.
    Ce que je trouve étrange c'est que les deux script sont presques identiques et pourtant un fonctionne et l'autre non




    EDIT :

    Je viens de voir ca dans le log :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    mkdir: cannot create directory `/home/oracle/backup/06102009-1218': Permission denied
     
    Export: Release 9.2.0.4.0 - Production on Tue Oct 6 12:18:01 2009
     
    Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
     
     
    EXP-00028: failed to open /home/oracle/backup/06102009-1218/aaa-06102009-1218.log for write
    EXP-00000: Export terminated unsuccessfully

  12. #12
    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
    Points : 28 119
    Points
    28 119
    Par défaut
    Bonjour,

    Quelles sont les differences entre tes scripts ?

    Pourquoi ne pas commencer par corriger ton script en y ajoutant le chemin absolu des commandes, puis le relancer en environnement vierge (comme JeitEmgie ou moi te le demandions), puis continuer a corriger tant qu'il y a des erreurs ?
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  13. #13
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Points : 1 206
    Points
    1 206
    Par défaut
    Citation Envoyé par nicohand94 Voir le message
    Pour les commandes de ripat, le script ne fonctionne toujours pas.
    Mes commandes ne changent rien au script. Elles ne font que rediriger les erreurs vers un fichier. As-tu été voir ce que le fichier /tmp/err_cron contient?

    Faire de la ligne de commande sans retour d'erreur est du pilotage sans visibilité.
    :q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp
    :quitplease :quitnow :leave :shit ^X^C ^C ^D ^Z ^Q QUITDAMMIT
    Jabber: ripat at im.apinc.org

Discussions similaires

  1. JOptionPane avec plusieur ligne d'entrée
    Par harris_macken dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 28/03/2008, 09h43
  2. DBCtrlGrid formatage avec plusieurs lignes
    Par yamino dans le forum Bases de données
    Réponses: 6
    Dernier message: 23/11/2007, 09h18
  3. [MySQL] Comment affiché un résultat avec plusieurs lignes et plusieurs champs dans un tableau
    Par Yagami_Raito dans le forum PHP & Base de données
    Réponses: 18
    Dernier message: 15/05/2007, 14h19
  4. probleme conexion avec sage ligne 10 v13
    Par kidrissi dans le forum Autres SGBD
    Réponses: 1
    Dernier message: 15/11/2006, 13h10
  5. Champ text avec plusieurs lignes ?
    Par Death83 dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 17/10/2006, 11h42

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