Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1419 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Lancer une commande au démarrage de Linux

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Lancer une commande au démarrage de Linux

n°882464
tease_part​y
TT un jour, TT toujours
Posté le 30-01-2007 à 16:32:08  profilanswer
 

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:

mood
Publicité
Posté le 30-01-2007 à 16:32:08  profilanswer
 

n°882467
memaster
ki a volé mon 62?
Posté le 30-01-2007 à 16:41:18  profilanswer
 

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
n°882469
tease_part​y
TT un jour, TT toujours
Posté le 30-01-2007 à 16:53:45  profilanswer
 

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
n°882475
memaster
ki a volé mon 62?
Posté le 30-01-2007 à 17:15:23  profilanswer
 

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
n°882478
tease_part​y
TT un jour, TT toujours
Posté le 30-01-2007 à 17:24:12  profilanswer
 

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...

n°882480
memaster
ki a volé mon 62?
Posté le 30-01-2007 à 17:34:48  profilanswer
 

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

n°882646
tease_part​y
TT un jour, TT toujours
Posté le 31-01-2007 à 10:36:58  profilanswer
 

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
n°882662
neriki
oenologue
Posté le 31-01-2007 à 11:05:59  profilanswer
 

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
n°883009
tease_part​y
TT un jour, TT toujours
Posté le 01-02-2007 à 11:14:11  profilanswer
 

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.

n°891675
hajjam
Posté le 02-03-2007 à 12:12:14  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Lancer une commande au démarrage de Linux

 

Sujets relatifs
[RH Linux] Distrib CentOS. Vous êtes maso ? Venez ici !Nouveau dans le monde de Linux
Comment sauvegarder une base linux ?commande pout faire la liste des /dev/
Avec Metisse, Mandriva renouvelle le bureau 3D de Linuxinstall wanadoo sur linux
VA LinuxDemande conseil pour install linux
[Commande] sauvegarder config réseauComment lancer une commande au demarrage de Linux !
Plus de sujets relatifs à : Lancer une commande au démarrage de Linux


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR