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 :

script ne fonctionne pas quand on l'appelle via crontab


Sujet :

Linux

  1. #1
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    janvier 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : janvier 2012
    Messages : 36
    Points : 20
    Points
    20
    Par défaut script ne fonctionne pas quand on l'appelle via crontab
    Bonjour,

    j'ai le script ci-dessous :
    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    #!/bin/sh
     
     #
     #
     #
     # cmk
     
     # shutdown tomcat6 and wait
     
     
     ####### Stop des services tomcat #########################
     
     # get the tomcat pid
    tomcat_pid=`ps -ef | grep tomcat | cut -c10-14`
     
     if [ -n "$tomcat_pid" ];   then
       echo "arret service tomcat6"
       # arret IA et Web Service
       service tomcat6 stop
    echo "service tomcat6 arrete"
     fi
     
     
     ############## Arret par des kill des process s'ils existent encore #############
     
     # if tomcat_pid exists, kill the process (service tomcat)
     tomcat_pid=`ps -ef | grep tomcat | cut -c10-14`
     
     if [ -n "$tomcat_pid" ] ;  then
    echo "kill tomcat_pid 1"
     kill $tomcat_pid
    echo "tomcat_pid killed"
     sleep 60
     fi
     
     # if tomcat_pid still exists, really kill the process
     if [ -n "$tomcat_pid" ] ; then
    echo "kill tomcat_pid"
     kill -n 9 $tomcat_pid
    echo "tomcat_pid killed"
     sleep 10
     fi
     
     
     
    ######## Arret APACHE ############
    echo "arret d'apache"
     service apache2 stop
    echo "apache arrete"
     sleep 10
     
     
     
     ##### Relance des services ###############
    echo "redemarrage d'apache"
     service apache2 start
    echo "apache demarre"
     sleep 5
     
     # clear log
     #rm -f /usr/local/tomcat6/logs/catalina.out
     
     # restart  tomcat
    echo "start service tomcat6"
     service tomcat6 start
    echo "service tomcat6 demarre"
    Les droits sont positionnés à 755

    le script marche parfaitement bien lorsque je l'appelle depuis la ligne de commande root@monserveur:~#

    Par contre, il plante quand je l'appelle via un cron :

    /etc/cron.daily/recharge_tomcat:
    arret service tomcat6
    service tomcat6 arrete
    /etc/cron.daily/recharge_tomcat: 21: service: not found
    kill tomcat_pid 1
    run-parts: /etc/cron.daily/recharge_tomcat exited because of uncaught signal 15
    J'ai essayé plusieurs solutions pour l'appel :
    - via crontab -e : m h * * * /le/chemin/complet/du/script
    - via cron.daily, en placant le script dans le dossier /etc/cron.daily, sans l'extension .sh et en l'appelant via crontab -e : m h * * * cd / && /etc/cron.daily
    meme punition....

    je ne pense pas que ca vienne de la syntaxe de l'appel.
    je ne comprends pas pourquoi ca marche manuellement, mais pas quand on veut l'automatiser via un cron, enfin, ca démarre mais ca plante au milieu....

    Je suppose que ca tient du meme pb : quand je l'appelais, en ligne de commande, dans le dossier le contenant, via #./recharge_tomcat.sh, ca marchait, mais ca plantait au meme endroit si je l'appelais via #bash recharge_tomcat.sh

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

    Informations forums :
    Inscription : février 2008
    Messages : 6 731
    Points : 17 448
    Points
    17 448
    Par défaut
    Bonjour,

    ben oui, c'est toujours le même problème (il y a pourtant des tonnes de messages à ce propos), le PATH de cron est très restreint; service n'y est sûrement pas.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    janvier 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : janvier 2012
    Messages : 36
    Points : 20
    Points
    20
    Par défaut
    Désolée si je provoque des redites...je JURE que j'ai fait de nombreuses recherches.

    toujours est-il que ca plante, mais APRES avoir arrete le service tomcat.
    J'ai changé le script et est ajouté le chemin complet vers le service :
    /usr/sbin/service tomcat6 restart

    voila ce que j'ai maintenant : ca plante au meme endroit, mais sans dire pourquoi, grrrr

    /etc/cron.daily/recharge_tomcat:
    arret service tomcat6
    Stopping Tomcat servlet engine: tomcat6.
    service tomcat6 arrete
    kill tomcat_pid 1
    run-parts: /etc/cron.daily/recharge_tomcat exited because of uncaught signal 15

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    février 2008
    Messages
    6 731
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2008
    Messages : 6 731
    Points : 17 448
    Points
    17 448
    Par défaut
    ben oui, c'est toujours le même problème (il y a pourtant des tonnes de messages à ce propos) (bis ),
    parser la sortie de ps est source d'ennuis, parce que le `grep' apparaît lui aussi dans la liste (en train de chercher le nom du process).

    pourquoi ne pas utiliser pkill ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    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 : 45
    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 262
    Points
    12 262
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    Bonjour,

    ben oui, c'est toujours le même problème (il y a pourtant des tonnes de messages à ce propos), le PATH de cron est très restreint; service n'y est sûrement pas.
    A peu près 2 par mois

  6. #6
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    janvier 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : janvier 2012
    Messages : 36
    Points : 20
    Points
    20
    Par défaut
    arfff ben décidément, je cumule....

    je teste..

  7. #7
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    janvier 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : janvier 2012
    Messages : 36
    Points : 20
    Points
    20
    Par défaut
    voila donc mon script...pouvez vous me dire si c'est bon..? merci ...

    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
    54
    55
    56
    57
    #!/bin/sh
    #!/usr/sbin
    #!/bin
     #
     #
     #
     # cmk
     
     # shutdown tomcat6 and wait
     
     
     ####### Stop des services tomcat #########################
     
     # get the tomcat pid
    tomcat_pid=`ps -ef | grep tomcat | cut -c10-14`
     
     if [ -n "$tomcat_pid" ];   then
       echo "arret service tomcat6"
         /usr/sbin/service tomcat6 stop
    echo "service tomcat6 arrete"
     fi
     
     
      # if tomcat_pid exists, kill the process (service tomcat)
     tomcat_pid=`ps -ef | grep tomcat | cut -c10-14`
     
     if [ -n "$tomcat_pid" ] ;  then
    /usr/bin/pkill tomcat6
    echo "tomcat_pid killed"
     sleep 60
     fi
     
     # if tomcat_pid still exists, really kill the process
     if [ -n "$tomcat_pid" ] ; then
    /usr/bin/pkill tomcat6
    echo "tomcat_pid killed"
    sleep 10
     fi
     
     
    ######## Arret APACHE ############
    echo "arret d'apache"
     /usr/sbin/service apache2 stop
    echo "apache arrete"
     sleep 10
     
     
     ##### Relance des services ###############
    echo "redemarrage d'apache"
     /usr/sbin/service apache2 start
    echo "apache demarre"
     sleep 5
     
     # restart  tomcat
    echo "start service tomcat6"
     /usr/sbin/service tomcat6 start
    echo "service tomcat6 demarre"

  8. #8
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    février 2008
    Messages
    6 731
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2008
    Messages : 6 731
    Points : 17 448
    Points
    17 448
    Par défaut
    mouais.

    pourquoi ne pas utiliser pgrep ou pidof, plutôt que de continuer à parser ps ?

    C'est quoi le problème avec tomcat6 ? il ne s'arrête pas forcément via service ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  9. #9
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    janvier 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : janvier 2012
    Messages : 36
    Points : 20
    Points
    20
    Par défaut
    merci pour ces réponses, c'est sympa de se pencher sur mon cas !!
    en fait j'ai des erreur de ce type :

    [/MaWebApp] appears to have started a thread named [DefaultQuartzScheduler_Worker-5] but has failed to stop it. This is very likely to create a memory leak.

    toute une liste, qui selon moi conduit à celle ci :

    Interceptor has thrown exception, unwinding now
    org.apache.cxf.binding.soap.SoapFault: Problem writing SAAJ model to stream
    Caused by: ClientAbortException: java.net.SocketException: Broken pipe

    du coup, mon idée était de kill les processus tomcat et fils pour ne pas avoir d'OOM....

    mais ca ne marche pas vraiment, mon script est bien passé ce matin, je me retrouve quand meme avec ces erreurs....

  10. #10
    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 : 45
    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 262
    Points
    12 262
    Par défaut
    mieux vaut chercher à empêcher l'erreur que de la contourner donc là va peut être falloir aller demander de l'aide plutôt dans la partie developpement.

  11. #11
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    mai 2004
    Messages
    10 020
    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 020
    Points : 27 428
    Points
    27 428
    Par défaut
    Bonjour,

    Si je comprends bien, tu as un service dans tomcat qui finit par faire tout planter, et ta solution est de tuer tomcat ?

    Autres solutions :
    Corriger le service
    Faire tourner chaque service dans un equivalent de machine virtuelle. J'avais lu un papier la dessus en 2003 ou 2003, qui reduisait les crashs dus aux modules de Tomcat de 80 ou 90 %
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  12. #12
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    janvier 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : janvier 2012
    Messages : 36
    Points : 20
    Points
    20
    Par défaut
    merci,

    je passe ce post en résolu, le cron marche
    je file sur la partie développement pour mon problème de thread.

    Merci encore !

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

Discussions similaires

  1. Ajax et XML. Mon script ne fonctionne pas.
    Par Dougui_bzh dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 10/07/2008, 10h04
  2. Script ne fonctionne pas
    Par Sylv@in dans le forum VBA Outlook
    Réponses: 5
    Dernier message: 28/01/2008, 09h24
  3. Réponses: 7
    Dernier message: 08/07/2007, 20h51
  4. Partie d'un script ne fonctionne pas en cgi
    Par shgamer dans le forum Web
    Réponses: 1
    Dernier message: 08/02/2006, 02h34
  5. Script ne fonctionne pas sous IE
    Par Stessy dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 29/09/2005, 14h44

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