Lancer une commande au démarrage de Linux

Lancer une commande au démarrage de Linux - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 30-01-2007 à 16:32:08    

Salut à tous,
 
Je dois lancer une commande simple (java sqlwapper, pour démarrer un serveur), mais pour celà je dois modifier l'init.d car d'après ce que j'ai compris c'est là que les service sont lancé au démarrage. Il y'a aussi des fichiers rc en rapport avec le mode de démarrage (2 par défaut, multi user). Quelqu'un sait ou et dans quel fichier je dois mettre ma commande pour que quand je démarre celle ci s'execute automatiquement ?
 
Parce que pour le moment je dois lancer mon serveur à la main après chaque démarrage ...
 
Merci  :jap:

Reply

Marsh Posté le 30-01-2007 à 16:32:08   

Reply

Marsh Posté le 30-01-2007 à 16:41:18    

1) methode simple :
/etc/rc.d/rc.local
pour executer une commande (exemple : synchroniser date/heure

 

2) methode standard system V :
sinon, il faut respecter le system V
créer un script de start/stop/restart/status dans
/etc/rc.d/init.d
ensuite selon le niveau d'execution dans lequel tu va utiliser
ta machine (en regle générale soit : level3 mode texte soit level5 mode graphique)
il faut faire un lien vers le script en question en prefixant par S+numerod'ordre dans /etc/rc.d/rc3.d ou rc5.d
pour que ton serveur s'arrete au reboot ou au halt, il faut placer
un lien en prefixant par un K dans rc0.d et rc6.d


Message édité par memaster le 30-01-2007 à 17:16:49
Reply

Marsh Posté le 30-01-2007 à 16:53:45    

Oulà s'compliquer  :o .
 
Enfait je suis sur ubuntu quand je regarde ce que j'ai dans etc je n'est pas rc.d, par contre si je veut modifier le fichier init.d, le fichier se présente comme celui ci:
 

Citation :

#! /bin/sh
 
PATH=/sbin:/bin:/usr/sbin:/usr/bin
[ -f /etc/default/rcS ] && . /etc/default/rcS
. /lib/lsb/init-functions
 
do_start() {
        if [ -x /etc/rc.local ]; then
                log_begin_msg "Running local boot scripts (/etc/rc.local)"
                /etc/rc.local
                log_end_msg $?
        fi
}
 
case "$1" in
    start)
        do_start
        ;;
    restart|reload|force-reload)
        echo "Error: argument '$1' not supported" >&2
        exit 3
        ;;
    stop)
        ;;
    *)
        echo "Usage: $0 start|stop" >&2
        exit 3
        ;;
esac


 
Es dans celui ci que je dois rajouter ma ligne de commande ?

Message cité 1 fois
Message édité par tease_party le 30-01-2007 à 16:55:02
Reply

Marsh Posté le 30-01-2007 à 17:15:23    

tease_party a écrit :

Oulà s'compliquer  :o .

 



je t'ai donné 2 méthodes :o

 

une simple avec rc.local (mais pour demarrer un serveur c'est faire ça à l'arrache).

 

il faut en principe respecter le standard system V comme décrit
dans la seconde partie de mon précédent post.


Message édité par memaster le 30-01-2007 à 17:16:01
Reply

Marsh Posté le 30-01-2007 à 17:24:12    

Ok enfait j'aimerai bien faire la deuxième solution.
 
Alors partons du fait que je démarrer sur le 2 par défaut, donc les fichiers qui m'interessent ici sont:
/etc/rc2.d
init.d
 
Si j'ai bien compris, je dois créer un fichier qui contient ma commande dans le rc2.d ? Parce que j'ai regardé ce qu'il y'a dans rc2.d et il y'a les script S20... S30... es quelque chose du genre que je dois rajouter dans rc2.d ?
 
Parce que j'ai regardé sur le net mais sa me semble assez flou tout de même...

Reply

Marsh Posté le 30-01-2007 à 17:34:48    

tease_party a écrit :

Ok enfait j'aimerai bien faire la deuxième solution.
 
Alors partons du fait que je démarrer sur le 2 par défaut, donc les fichiers qui m'interessent ici sont:
/etc/rc2.d
init.d
 
Si j'ai bien compris, je dois créer un fichier qui contient ma commande dans le rc2.d ? Parce que j'ai regardé ce qu'il y'a dans rc2.d et il y'a les script S20... S30... es quelque chose du genre que je dois rajouter dans rc2.d ?
 
Parce que j'ai regardé sur le net mais sa me semble assez flou tout de même...


oui c'est ça, sauf que ce sont pas des script mais des liens vers les script de demarrage dans le repertoire /init.d
admettons que ton script s'apellera ton-serveur, il faut créer un lien et uniquement un lien symbolique en prefixant par S40ton-serveur
 
la commande ln -S est ton amie :
man ln

Reply

Marsh Posté le 31-01-2007 à 10:36:58    

Ah ouais ok, jv'iens de capter un truc..

 

Donc enfait, dans mon init.d je crée un fichier qui contient ma commande, et ensuite avec le ln -s je fais un liens symbolique dans mon rc2.d ? genre :

Citation :

ln -s   /etc/init.d/sqlwapper   /etc/rc2.d/S40sqlwapper

 

EDIT: Bon enfait mon script doit lancer un fichier java présent dans un dossier du disque. Es qu'il est possible de lancer un fichier java par l'intermédiaire du script ?


Message édité par tease_party le 31-01-2007 à 10:56:01
Reply

Marsh Posté le 31-01-2007 à 11:05:59    

Sous Ubuntu (et Debian) il y a un exemple  de script dans /etc/init.d/skeleton.  
 
Il existe aussi un script, update-rc.d , qui gère les liens symboliques.
 


---------------
C'est pas bon, Neriki, tu recommences à glander, là. :o
Reply

Marsh Posté le 01-02-2007 à 11:14:11    

Ok bon j'ai avancé un peu par contre j'ai un problème.
 
J'ai créer mon script dans l'init.d que voici:
 

Citation :

#! /bin/sh
case "$1" in
        start|"" )
                $CLASSPATH = /usr/lib/jvm/java-1.5.0-sun/ext/mysql-connector-java-5.0.3-bin.jar:.
                cd /etc/SqlWrapper/
                java SqlWrapper
                ;;
        stop)
                pid=`ps -aux | grep 'java SqlWrapper' | cut -b11,12,13,14`
                kill -9 $pid
                ;;
        restart)
                echo "Redémarrage du serveur : "
                echo ""
                 sh $0 stop
                 sh $0 start
                echo ""
                echo "Serveur redémarré."
                ;;
        *)
echo "Usage: sqlwrapper-script [start|stop|restart]" >&2
exit 3


 
Ensuite je fais le liens symbolique
ln -s ../init.d/sqlwrapper-script /etc/rc2.d/S99sqlwrapper-script
 
Mon service fonctionne (start stop restart). Si je lance le serveur direct genre /etc/init.d/sqlwrapper-script start le serveur se lance et je peu lancer des requêtes sur le serveur. En revanche quand je redémarre le PC, le service se lance ok, je me connecte au serveur "telnet... machin" mais je n'arrive pas à envoyer de requête SQL...
 
Alors que j'arrive bien à l'envoyer quand je le lance de la manière "start"... Quelqu'un à une idée je capte rien.

Reply

Marsh Posté le 02-03-2007 à 12:12:14    

merci pour le tuto je m'en suis servi pour lancer mon serveur xampp (serveur php,mysql,proftpd...) au demarrage et je me suis permis d'ajouter une petite modif qu'un collégue ma montrer pour activer et désactiver le lancement au démarage en utilisant le chkconfig.
l'amélioration :
 
suprimer d'abord le lien symbolique si vous l'avez déja créer
#rm -f /etc/rc5.d/s99lampp (changer s99lampp par le nom du lien quavous avez donné)
 
modifier le code dans le /etc/init.d/lampp (je fait la démo en utilisant mon script)
#! /bin/sh
  #
  # lampp
  #
  # chkconfig: 2345 99 99
  # description: Lampp Daemon \
  # processname: lampp
         LAMPP=/opt/lampp/lampp
 
         case "$1" in
         start|"" )
         $LAMPP start
         echo "Serveur LAMP demarrer"
         ;;
         stop)
         $LAMPP stop
         echo "Serveur LAMP arreter"
         ;;
         restart)
         echo "Redémarrage du serveur : "
         echo ""
         $LAMPP stop
         $LAMPP start
         echo ""
         echo "Serveur redémarré."
         ;;
         *)
         echo "Usage: lampp [start|stop|restart]" >&2
         exit 3
esac
 
ca a l'aire de simple commentaires ce qui a été ajouté au debut mais apparament non  la ligne # chkconfig: 2345 99 99 permet de définir les niveaux dans lequel vont démarrer notre fameux lampp c'est a dire en activant le chkconfig il va creer des liens symboliques automatiquement dans le rc2 rc3 ... les 99 99 je ne sais pas trop a quoi ca sert (si quelqu'un connait il peux tjs noi aider a mieux comprendre :-) )
 
on tape la commande pour que chkconfig prend en charge le lampp:
# chkconfig --add lampp
 
Activer le demarrage automatique  
# chkconfig lamp on
(desactivation off) :) on ne sait jamais...  
 
voir l'état :
chkconfig --list | grep lampp
 
 
POUR CEUX PAS N'ONT PAS COMPRIS TROP A QUOI CA SERT... puisque ca avait l'aire de donné n'importe quoi quand je relit
c'est une amélioration du script précédant pour activer et désactiver le démarrage automatique.


Message édité par hajjam le 02-03-2007 à 12:29:38
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed