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

Serveurs (Apache, IIS,...) Discussion :

Redémarrage automatique d'un service sous Debian


Sujet :

Serveurs (Apache, IIS,...)

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 9
    Points : 7
    Points
    7
    Par défaut Redémarrage automatique d'un service sous Debian
    Bonjour,

    depuis quelques jours mon serveur web plante au moins une fois par jour, il est alors redémarré automatiquement par ISPConfig mais au bout de 30 minutes mais ce délai me parait un peu long.

    Ya t-il un moyen de redémarrer automatiquement un service au bout de 3 minutes par exemple?

    J'ai fait quelques recherches mais je n'ai trouvé que Watchdog qui redémarre le serveur tout entier, ce que je voudrais c'est redémarrer seulement apache2.

    Merci d'avance pour votre aide

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,

    oui il suffit de mettre la ligne /etc/init.d/apache2 restart dans la crontab du user root.

    Mais pour ma part je chercherais à connaitre la cause du plantage du serveur et d'essayer de le résoudre car le redémarrage tous les x temps n'est pas vraiment un solution propre.

    Les fichiers logs devraient te fournir un peu plus d'informations à ce sujet.

  3. #3
    Membre averti
    Avatar de onet
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    365
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2002
    Messages : 365
    Points : 344
    Points
    344
    Par défaut
    Moi j'éviterais de mettre un restart dans le crontab ! Surtout que si c'est pour le lancer toutes les 3 minutes, tu va te retrouver avec un restart de ton service en permanence... Et c'est un peu bourrin.

    Par contre, tu peux créer un service qui va vérifier la présence du PID (soit que tu lui passe en paramètre, soit qu'il va rechercher de lui meme).

    Ou alors, une autre solution, c'est d'avoir un cron qui tente de se connecter sur ton serveur en http, toutes les minutes par exemple. Si il n'y arrive pas, alors il tente de redémarrer apache, tout en t'envoyant un email.

    Par contre, comme cité, va voir les logs (/var/log/apache2/ ou /var/log/syslog) afin de savoir ce qui se passe, et corriger le problème.

    Onet
    ---
    Retrouvez tout mes tutos et mes articles: http://www.olivierlange.com

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Août 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Août 2008
    Messages : 79
    Points : 100
    Points
    100
    Par défaut
    Bonjour,
    Dans votre cron il suffit de mettre un script qui vérifie si votre service tourne ou non et s'il ne tourne pas de le relancer.
    Voici un exemple de script a adapter à votre cas bien sur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #!/bin/bash
    if pgrep monprocess &>/dev/null; then
        echo alive
    else
        echo dead
    fi
    Les valeurs a changer sont :
    * monprocess : par le process que vous voulez tester
    * echo dead : par la commande de relance du process qui a planté.
    * echo alive : par rien puisque si votre service tourne vous n'avez rien de spécial à faire

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Merci pour vos réponses!

    je vais vérifier dans les logs, et ensuite essayer de mettre en place les solutions que vous m'avez donné.

    Je vous tiens au courant, merci encore !

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par Albert_h Voir le message
    Bonjour,
    Dans votre cron il suffit de mettre un script qui vérifie si votre service tourne ou non et s'il ne tourne pas de le relancer.
    Voici un exemple de script a adapter à votre cas bien sur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #!/bin/bash
    if pgrep monprocess &>/dev/null; then
        echo alive
    else
        echo dead
    fi
    Les valeurs a changer sont :
    * monprocess : par le process que vous voulez tester
    * echo dead : par la commande de relance du process qui a planté.
    * echo alive : par rien puisque si votre service tourne vous n'avez rien de spécial à faire
    Rebonjour,

    Je n'ai pas réussi à trouver comment ajouter le script dans le cron (je suis débutant et je n'ai encore jamais utilisé cron)
    j'ai fais quelques recherches mais je ne vois vraiment pas comment

    Quand je fais crontab -e je vois bien une liste de taches mais ça a l'air d'être different et je ne sais pas si je peux ajouter le script juste après?

  7. #7
    Membre averti
    Avatar de onet
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    365
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2002
    Messages : 365
    Points : 344
    Points
    344
    Par défaut
    SAlut,

    Alors, effectivement, si tu tente de mettre le script qu'on t'a fournis directement dans le crontab, ca ne va pas marcher!

    Quand tu édite ton crontab, tu as qqch de ce genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    # m h  dom mon dow   command
    0 1  * * * /usr/sbin/logwatch
    0 2 * * * /usr/sbin/apticron
    0 6 * * * /home/backup/script_bkp.sh >> /var/log/bkp.log
    0 18 * * * /home/backup/script_bkp_bdd.sh >> /var/log/bkp.log
    45 * * * * /usr/bin/wget -O - -q -t 1 http://www.mon_domaine.com/cron.php
    (C'est un exemple de mon crontab, heinü Ne va pas recopier telle quel!)

    En conséquence, si tu reprends mon exemple, il va te falloir créer un fichier ce_que_tu_veux.sh dans leqeul tu va y placer le code qui t'a été fournis plus haut. Puis tu rends ce fichier exécutable (chmod +x ce_que_tu_veux.sh).

    Il ne te reste plus qu'a l'appeler depuis ton crontab. pour cela, les paramètres sont les suivant:
    - les 5 premières positions définissent quand on veut appeler le script:m h dom mon dow
    1. minute (m)
    2. heure (h)
    3. jour (Day Of Month)
    4. mois (Month)
    5. jour de la semaine (Day Of Week)

    - le paramètre suivant indique la commande a exécuter. C'est la que tu mettra l'appel a ton fichier, avec un renvoi d'erreur (si tu le veux, au moyen de la commande > ) dans un fichier de log.

    Et c'est tout.

    Onet
    ---
    Retrouvez tout mes tutos et mes articles: http://www.olivierlange.com

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par onet Voir le message
    SAlut,

    Alors, effectivement, si tu tente de mettre le script qu'on t'a fournis directement dans le crontab, ca ne va pas marcher!

    Quand tu édite ton crontab, tu as qqch de ce genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    # m h  dom mon dow   command
    0 1  * * * /usr/sbin/logwatch
    0 2 * * * /usr/sbin/apticron
    0 6 * * * /home/backup/script_bkp.sh >> /var/log/bkp.log
    0 18 * * * /home/backup/script_bkp_bdd.sh >> /var/log/bkp.log
    45 * * * * /usr/bin/wget -O - -q -t 1 http://www.mon_domaine.com/cron.php
    (C'est un exemple de mon crontab, heinü Ne va pas recopier telle quel!)

    En conséquence, si tu reprends mon exemple, il va te falloir créer un fichier ce_que_tu_veux.sh dans leqeul tu va y placer le code qui t'a été fournis plus haut. Puis tu rends ce fichier exécutable (chmod +x ce_que_tu_veux.sh).

    Il ne te reste plus qu'a l'appeler depuis ton crontab. pour cela, les paramètres sont les suivant:
    - les 5 premières positions définissent quand on veut appeler le script:m h dom mon dow
    1. minute (m)
    2. heure (h)
    3. jour (Day Of Month)
    4. mois (Month)
    5. jour de la semaine (Day Of Week)

    - le paramètre suivant indique la commande a exécuter. C'est la que tu mettra l'appel a ton fichier, avec un renvoi d'erreur (si tu le veux, au moyen de la commande > ) dans un fichier de log.

    Et c'est tout.

    Onet
    Salut Onet,

    Merci pour ton aide, j'ai trouvé cette ligne dans la liste de crontab :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    0,30 * * * * /root/ispconfig/php/php /root/ispconfig/scripts/shell/check_services.php &> /dev/null
    et apparemment dans le fichier check_services.php il y a une vérification du fonctionnement du service web apache (je l'avais ajouté dans l'administration d'ISPConfig).

    Si j'ai bien compris ce que tu m'as dis dans ton précédent message, cette vérification est faite toutes les 30 minutes?

    Si oui alors je pourrais peut être juste modifier 0,30 en 0,2 pour 2 minutes?


    Pour ce qui est des logs d'apache2 j'ai trouvé ceci:

    [Tue Mar 10 19:30:05 2009] [notice] caught SIGTERM, shutting down
    [Tue Mar 10 19:30:07 2009] [notice] suEXEC mechanism enabled (wrapper: /usr/lib/apache2/suexec)
    PHP Warning: Module 'json' already loaded in Unknown on line 0

Discussions similaires

  1. configurer les services syslog-ng sous debian
    Par henrybourgel dans le forum Debian
    Réponses: 1
    Dernier message: 05/06/2013, 09h48
  2. Redémarrage automatique d'un service
    Par jmelyn dans le forum Administration système
    Réponses: 2
    Dernier message: 19/12/2009, 23h01
  3. Montage de support automatique sous debian
    Par Thrystan dans le forum Administration système
    Réponses: 1
    Dernier message: 04/04/2006, 19h18
  4. [Install] Problème de lancement sous debian sid
    Par SoaR245 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 18/02/2004, 10h01
  5. [Kylix] Développement de service sous linux
    Par Therich dans le forum EDI
    Réponses: 1
    Dernier message: 05/08/2003, 16h53

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