Lancer une commande au démarrage de Linux - Codes et scripts - Linux et OS Alternatifs
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
Marsh Posté le 30-01-2007 à 16:53:45
Oulà s'compliquer .
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 |
Es dans celui ci que je dois rajouter ma ligne de commande ?
Marsh Posté le 30-01-2007 à 17:15:23
tease_party a écrit : Oulà s'compliquer . |
je t'ai donné 2 méthodes
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.
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...
Marsh Posté le 30-01-2007 à 17:34:48
tease_party a écrit : Ok enfait j'aimerai bien faire la deuxième solution. |
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
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 ?
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.
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 |
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.
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.
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