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

Ubuntu Discussion :

Tâches cron qui ne s'exécutent pas


Sujet :

Ubuntu

  1. #1
    Membre actif
    Inscrit en
    Mars 2007
    Messages
    218
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 218
    Points : 216
    Points
    216
    Par défaut Tâches cron qui ne s'exécutent pas
    Bonjour,

    J'ai un script shell qui fonctionne très bien lorsque je le lance en ligne de commande (sudo ou pas ça marche quand même) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sh /etc/rep/mon_script
    Au début, je l'ai mis dans le répertoire /etc/cron.daily car il me semblait avoir lu que placer des scripts shell dans ce répertoire permettait de les exécuter automatiquement tous les jours à 6h25 par défaut (ce que je veux). Mais cette manip ne marche pas et je ne retrouve plus l'article qui m'a incité à faire ça...

    Alors je suis passé par la crontab :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    sudo crontab -e
    [.....]
    # m h  dom mon dow   command
    00 10 * * * root /bin/sh /etc/cron.daily/monscript
    Pour que mon script s'exécute tous les jours à 10h00. Mais ça ne marche toujours pas. Les droits du script sont en 777.
    Je précise que j'ai édité de la même manière la crontab sans être root avec les mêmes paramètres mais ça ne s'exécute pas non plus...

    J'ai loupé quelque chose ?

    Merci pour vos lumières

  2. #2
    Membre confirmé Avatar de Leeloo_Multiboot
    Profil pro
    Administrateur Unix/Linux
    Inscrit en
    Avril 2008
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur Unix/Linux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2008
    Messages : 417
    Points : 550
    Points
    550
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    00 10 * * * root . /etc/rep/monscript

  3. #3
    Membre actif
    Inscrit en
    Mars 2007
    Messages
    218
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 218
    Points : 216
    Points
    216
    Par défaut
    Merci pour ta réponse rapide Leeloo, mais elle ne marche pas x)
    Le "." à la place de "root" signifie quoi ?

    Je précise que je vois dans les logs système que le cron s'exécute, mais rien de ce qui doit se passer arrive (création de répertoire, dump mysql, upload sur ftp).

  4. #4
    Membre confirmé Avatar de Leeloo_Multiboot
    Profil pro
    Administrateur Unix/Linux
    Inscrit en
    Avril 2008
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur Unix/Linux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2008
    Messages : 417
    Points : 550
    Points
    550
    Par défaut
    Merci pour ta réponse rapide Leeloo, mais elle ne marche pas x)
    Le "." à la place de "root" signifie quoi ?
    Pas à la place de root mais en +. C'est pour que le script shell s'éxecute.
    J'ai enlevé le chemin du shell, normalement il n'est pas nécessaire, excepté s'il n'est pas déclaré dans le fichier /etc/shells.
    Ton script appartient à quel utilisateur? Root ou un user système?
    Essaye ça si ton script n'appartient pas à root:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    00 10 * * * root source /home/ton_user_propriétaire/.bashrc && /bin/sh . /etc/rep/monscript
    S'il appartient à root, tu peux utiliser le crontab de root sinon.

  5. #5
    Membre actif
    Inscrit en
    Mars 2007
    Messages
    218
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 218
    Points : 216
    Points
    216
    Par défaut
    Je relance le sujet car j'ai toujours pas résolu mon soucis.
    Voici ce que j'ai dans ma crontab (sudo crontab -e) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    39 11 * * * root . /etc/cron.daily/mon_script
    Mon script "mon_script" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    #!/bin/bash
    mkdir /home/user/toto
    Super compliqué comme script, c'est fait exprès.
    Mon problème est que je vois dans les syslog l'exécution du script mais que le répertoire n'est jamais créé... Les droits en 777 ne change rien.

    N'y a t-il pas un problème de syntaxe dans la crontab ?

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 8
    Points : 6
    Points
    6
    Par défaut Crontab - cron.daily
    Bonjour,

    Même si ce message date un peu, en ce qui me concerne, j'ai également eu ce problème; Le crontab fonctionnait quand on lui rajoutait des scripts à la main, mais ne fonctionnait pas si l'on mettait les scripts dans un des répertoires du cron comme cron.daily.

    Sur ma debian, crontab, testait l'existence d'anacron, qui n'était pas présent sur le système. Donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    aptitude install anacron
    S'il trouve anacron, c'est anacron qui lance le crontab, sinon c'est cron.

    Puis j'avais un script en erreur dans logrotate. Par conséquent, mon cron.daily quittait avant d'avoir exécuter les autres scripts.
    La suppression du script générateur de log en erreur dans /etc/logrotate.d/ à remédié au problème.

    D'après "run-part", le nom du fichier doit être uniquement composé de caractères alphanumériques, de tiret ou underscore, sinon il ne sera pas exécuté.

  7. #7
    Rédacteur
    Avatar de lavazavio
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 673
    Points : 2 412
    Points
    2 412
    Par défaut
    Bonjour,

    Tu as essayé en enlevant tout simplement le point "." dans ton crontab ?
    Il ne sert à rien...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    39 11 * * * root /etc/cron.daily/mon_script

  8. #8
    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
    La seule manière de savoir ce qui se passe, ou plutôt ce qui ne se passe pas, est de rediriger les messages d'erreur du shell vers un fichier:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    * * * * * root /etc/cron.daily/mon_script 2> /tmp/err_cron

Discussions similaires

  1. Cron qui ne s'exécute pas
    Par Aspic dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 22/07/2011, 09h01
  2. Shell qui ne s'exécute pas dans mon cron
    Par sheira dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 30/12/2010, 14h16
  3. tâche cron qui ne marche pas
    Par polace dans le forum Administration système
    Réponses: 6
    Dernier message: 13/11/2007, 10h21

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