Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 26/03/2008, à 15:48

sbouli

[résolu] cron ecoute port et relance serveur

Bonjour,

Je souhaiterais faire un script shell appelé en cron toutes les X minutes dont le boulo serait de vérifier que mon serveur XML tourne et si non le relancer. Pour cela il faut vérifier que le port XXXX est bien utilisé par java.

Je ne suis pas expert en bash et je ne vois pas trop comment m'y prendre, je sais déjà extraire la ligne pour l'utilisation du port :

netstat -vtlnp | grep "lance_SERVEURXML"

pour infos, le script de lancement du serveur est de la forme :
    nohup sh /home/admin/lance_SERVEURXML.sh &

et lance_SERVEURXML.sh :
#!/bin/bash
cd /home/admin
java -classpath /home/admin/SERVEURXML:   SERVEURXML.Serveur_XML

Logiquement le fichier cron devrait avoir la tête :
    if (netstat -vtlnp | grep "lance_SERVEURXML"   vide) alors nohup sh /home/admin/lance_SERVEURXML.sh &

Merci pour votre aide.

Stéphane

Dernière modification par sbouli (Le 27/03/2008, à 14:29)

Hors ligne

#2 Le 26/03/2008, à 15:59

philou8237

Re : [résolu] cron ecoute port et relance serveur

pour info :
netstat -vtlnp | grep "lance_SERVEURXML" retourne une valeur non nulle si il ne trouve pas le pattern donné.
Donc si tu fais un truc du style :

#!/bin/bash

while true; do
  res=`netstat -vtlnp | grep "lance_SERVEURXML"  > /dev/null 2>&1`

  if [ $res -ne 0 ]; then
    nohup sh /home/admin/lance_SERVEURXML.sh &
  fi
  sleep 5
done

Voilou. Je peux pas tester si ça marche (pas d'erreur de syntaxe) je suis sur un windows sad

Hors ligne

#3 Le 26/03/2008, à 16:30

sbouli

Re : [résolu] cron ecoute port et relance serveur

Tout d'abord merci !!

J'ai 1 erreur

/home/admin/cron_check.sh: line 6: [: -ne : opérateur unaire attendu

Hors ligne

#4 Le 26/03/2008, à 16:33

philou8237

Re : [résolu] cron ecoute port et relance serveur

mmm... bizarre... pfff c chiant d'etre sous windows là...
Essaies avec un -gt à la place, mais normalement c un opérateur binaire ne... neutral

Hors ligne

#5 Le 26/03/2008, à 16:44

sbouli

Re : [résolu] cron ecoute port et relance serveur

nop même erreur avec -gt ....

Hors ligne

#6 Le 26/03/2008, à 16:46

philou8237

Re : [résolu] cron ecoute port et relance serveur

essaie de remplacer while true par while [ 1 -eq 1 ]
je sais c moche...
mais sans shell je peux pas trop t'aider... faudra attendre que je me rentre du boulot... cad. ds 45 minutes smile

Hors ligne

#7 Le 26/03/2008, à 17:03

sbouli

Re : [résolu] cron ecoute port et relance serveur

en fait si je fait ça :

while true; do
  res=`netstat -vtlnp | grep "java"  > /dev/null 2>&1`

  if [ -z $res ]; then
    echo "il faut lancer le prog";
  fi
  sleep 5
done


avec le -z qui test si la chaine est nulle, il lance toujours l'appli car res reste toujours vide même s'il y a une ligne qui sort du grep ....

Stéphane

Hors ligne

#8 Le 26/03/2008, à 17:06

philou8237

Re : [résolu] cron ecoute port et relance serveur

oui normal, >/dev/null 2>&1 supprime les sortie standard et d'erreur.
j'ai fais une grosse fôte
faut rédiger :

while true; do
  netstat -vtlnp | grep "java"  > /dev/null 2>&1
  res=$?

  if [ $res -ne 0 ]; then
    echo "il faut lancer le prog";
  fi
  sleep 5
done

Désolé pour la bourde...
ça devrait mieux marcher

Hors ligne

#9 Le 26/03/2008, à 17:10

sbouli

Re : [résolu] cron ecoute port et relance serveur

excellent !!
ya plus qu'a cronner et à virer le while et sleep wink

Merci !

Stéphane

Hors ligne

#10 Le 27/03/2008, à 17:34

Saito

Re : [résolu] cron ecoute port et relance serveur

Juste en passant, si tu utilises GNU grep, il y a l'option -q qui permet de ne rien afficher, donc tu peux transformer comme ceci:

if ! netstat -vtlnp | grep -q java; then
echo lançage de prog imminente
fi

Aku-Soku-Zan_Shinsengumi

Hors ligne