Restarter sous Linux
Bonjour à tous. Ayant remarqué qu'il n'y avait pas de restarter proposé pour Linux, je me permet de proposer le mien Hihi

PS : Dans ce post, je considère que vous êtes dans le dossier contenant les exécutables de votre serveur.

1) Créer le programme de lancement
• Cette étape est techniquement inutile mais elle est préférable. Cela permet juste de mieux clarifier les fichiers dans le cas où vous auriez plusieurs arguments à mettre pour votre serveur. Si jamais vous sautez cette étape, pensez bien à remplacer "sh startm" par "./mangos-worldd", même chose pour realmd (en changeant "worldd" par "realmd")

Créez un fichier nommé "startm" contenant ceci :
Code :
./mangos-worldd
Et un fichier nommé "startr" contenant ceci :
Code :
./mangos-realmd

2) Créer le restarter
Créez un fichier nommé "restarter-worldd" et mettez ceci :
Code :
#! /bin/bash

while true
do
  PID=$(pidof mangos-worldd)
  if (( PID < 1 ))
  then
        sh startm
        echo "Le serveur a crashé."
        echo "Redémarrage..."
  fi

  sleep 5
done

Créez un fichier nommé "restarter-realmd" et mettez ceci :
Code :
#! /bin/bash

while true
do
  PID=$(pidof mangos-realmd)
  if (( PID < 1 ))
  then
        sh startr
        echo "Le serveur a crashé."
        echo "Redémarrage..."
  fi

  sleep 5
done

Il faut ensuite permettre au système d'exploitation d’exécuter ces fichiers (merci à et65 pour le rappel) :
Code :
chmod 755 restarter-*

Explications : Tant que le programme sera lancé, votre machine vérifiera toutes les 5 secondes si le serveur est en marche ou pas. Si il ne l'est pas, elle le lance. Pratique, isn't it ? Clin

3) Lancer le restarter
Exécutez ceci dans un terminal :
Code :
screen -AdmS mangos ./restarter-worldd
screen -AdmS realmd ./restarter-realmd

Et voilà ! Votre restarter est maintenant lancé et votre serveur peut crasher en paix ! Heureux

PS : Vous pouvez voir l'état du serveur monde en faisant "screen -r mangos" (ou "screen -r realmd" pour voir l'état du serveur de connexion); CTRL A+D pour en sortir.
Justement j'en cherchais un.
Bravo ! Clin
Ne pas oublier de spécifier qu'il faut se placer dans le bon dossier pour pouvoir bien lancer les serveurs Clin
Un petit
Citation :#!/bin/bash

while :; do
/home/dernise/core/bin/./mangos-worldd
sleep 1
done
ne suffit pas ?
(07-08-2010 15:35)Dernise a écrit :  Un petit
Citation :#!/bin/bash

while :; do
/home/dernise/core/bin/./mangos-worldd
sleep 1
done
ne suffit pas ?

Non. En faisant ça, tout ce que tu arriveras à faire c'est lancer un nombre incalculable de fois ton serveur. Et sans screen, tu ne pourras pas fermer ta console ssh sans fermer en même temps mangos-world.
Ouai mais je le lance dans un screen x)
Bon ok je prends le tien Huh
Je vais peut etre poser une question bete, mais en cas de freez, fonctionne t'il?
(07-08-2010 15:35)Dernise a écrit :  Un petit
Citation :#!/bin/bash

while :; do
/home/dernise/core/bin/./mangos-worldd
sleep 1
done
ne suffit pas ?

Si ça suffit, mais tu n'auras pas d'accès à la console du serveur.
D'où l'intérêt d'utiliser screen, mais si tu lance avec screen de la même manière, tu vas le lancer en de nombreux exemplaires.

La solution donnée est donc meilleure.

En cas de freeze, il y a un anti freeze intégré à mangos, s'il est activé, il coupe le royaume, et donc le restarter marchera.
Si le serveur doit être redémarré via la commande ingame va t-il se relancer deux fois?
A quoi sert le PID?
PID c'est Process ID je crois.

Retourner en haut Accueil