Robotique-Projet
Bonjour et bienvenu sur le forum ROBOTIQUE-PROJET

Merci de nous rejoindre, pour avoir accès aux forum en entier,

il suffis juste de s'inscrire sa prends 2 minutes, et bien sur de faire sa

présentation, au plaisir de se croisé sur le forum.
Robotique-Projet

Forum sur la Robotique & Informatique & Programmation


Vous n'êtes pas connecté. Connectez-vous ou enregistrez-vous

Voir le sujet précédent Voir le sujet suivant Aller en bas  Message [Page 1 sur 1]

1 Faire un Démon sous LINUX. le Jeu 18 Avr - 19:05

Black Styles

avatar
Membre
Membre
Bonjour à tous,

Vous est-il déjà arrivé automatiser toutes vos tâches? J'entends par là au démarrage même de la machine, vous verriez tous vos scripts se lancer, automatiquement, sans avoir à lancer la session et se connecter en root pour enfin exécuter son script... ça ne vous tenterais pas?

[Demon] désigne un type de programme informatique, un processus qui s'exécute en arrière-plan plutôt que sous le contrôle direct d'un utilisateur.

Infos Demon signifie: Disk and Execution MONitor (ont peut utiliser aussi l'écriture Deamon pour Disk And Execution MONitor)

Pourquoi réaliser un demon? Quel sont les pré-requis?

Pourquoi faire un demon?
Evidemment, ont pourrais se demander pourquoi faire un demon.
Imaginez simplement que vous avez un tout petit serveur pour votre famille, pour vos amies, ou même un serveur de communication vocale. Ce serveur tourne sous Linux et à chaque fois que vous démarrer le serveur, il faut entrer un login, mot de passe, puis lancer le terminal, s'identifier en tant que root et -- enfin -- lancer le script au démarrage.
Et bien le demon permet de lancer un script avec toutes les autorisations néccessaires, avant d'ouvrir sa session.

? Donc, j'aurai juste à démarrer l'ordinateur, et mon serveur se lancera tout seul?

Oui ^^

Quels sont les pré-requis?
Tout d'abord, il faut le script d'exécution. C'est un programme qui se charge de démarrer le serveur.

Exemple
1 - #!/bin/bash
2 - /ect/init.d/apache start


Infos Attention, le /etc/init.d/apache start est à lire informatif, apache s'enrefistre à l'installation dans le init.d !

Il faut ensuite l'accès au compte root.

Et enfin, il faut deux-trois connaissances.
La plupart des serveurs demande des accès au compte root, et le plus souvent vous n'avez pas besoin d'être derrière tout le temps; vous le démarrez et le réduisez en tâche de fond.

Dans ce toturiel, on abordera le dossier init.d qui contient tous les scripts demons.

Ont parlera aussi d'une variable $PATH. C'est une liste de répertoire qui permettent à l'utilisateur de faire directement des commandes sans se déplacer dans le dossier de l'exécutable.
Exemple:

man
Cette commande s'appélle en fait /usr/bin/man. Et c'est grâce aux variables d'environnement ($PATH) que vous utiliser man au lieu de /usr/bin/man : elle contient en fait une liste de dossiers (dont /usr/bin/).

Voilà, vous avez normalement les connaissances néccessaires pour créer un jolie demon. ^^

Maintenant au TRAVAIL!

Pour réaliser un démon, tout se passe dans se dossiers: /etc/init.d/ et /usr/bin/

Créez un tout petit programme en shell qui lance votre serveur, si ceçi n'est pas déjà fait. Sous certains programmes (TeamSpeak), un programme dit startscript est déjà présent.

Lancer un terminal.
Entrez-y la commande pour avoir accès aux droits root:

sudo-s

Entrez le mot de passe (le mot de passe root.)

? Pour ce tutoriel, nous prendrons exemple de serveur avec <> (en shell, pas besoin d'extensions, bien que çelà ne change rien ^^).

Localisez votre script de démarrage et copiez-le dans /usr/bin :

cp /dir1/dir2/launcher /usr/bin/launcher

Ceci est valable pour tout types de fichiers (Python, shell, etc.).

La suite un peu plus complexe, il faut créez un programme de lancement automatique situé dans /etc/init.d/.

! Mais je sais pas faire ça, moi!

C'est là que Linux est bien gentil, il nous fournit un squelette, un cadre: skeleton.
Donc copiez le skeleton dans votre script avec:

cp /etc/init.d/skeleton /etc/init.d/launcher

Puis ont édite se stratscript:

[coolor=red]gedit /etc/init.d/launcher[/color]

Ou sous KDE:

kate /etc/init.d/launcher

Là, plein de choses s'affichent, mais seulement quelques-une sont importantes:

PATH=/usr/sbin:/usr/bin:/sbin:/bin
DESC="Description du service"
NAME=nomdudemon
DAEMON=/usr/bin/$NAME
DAEMON_ARGS="--options args"
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

* PATH: il ne faut pas toucher à cette ligne, c'est la liste des PATH

* DESC: mettez une courte déscritpion dans votre launcher.

* NAME: mettez le nom de votre exécutable (ici, launcher).

* DEAMON: on n'y touche pas (c'est là que se situe votre script)

* DEAMON_ARGS: les options de lancement (quand vous lancez la commance, il est possible que vous ayez à mettre des paramètres)

* PIDFILE: on laisse.

* SCRIPTNAME: on laisse.

Info La variable PATH est:
Citation: CCM
Ce sont les répertoires dans lesquels le shell cherche la commande qu'on écrit au clavier.

Elle permet de faire la commande ifconfig et non /sbin/ifconfig

Vous remplissez avec vos paramètres comme çi-dessous.
Un exemple avec un script <> dans /usr/bin :

PATH=/usr/sbin:/usr/bin:/sbin:/bin
DESC="Un launcher de mon serveur"
NAME=launcher
DAEMON=/usr/bin/$NAME
DAEMON_ARGS="-option valeur"
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME


Nous allons maintenant passer à << l'enregistrement >> de votre demon.

? Hé, mais tu oublies de rendre le script exécutable! Ce n'est qu'un fichier texte pour le moment!

Ooooups, autant pour moi. ^^

chmod +x /etc/init.d/launcher

Update-rc.d

Le programme qui va gérer tous les demons (et bien plus) est << update-rc.d >>

Mais que fait-il exactement?
Il crée plusieurs liens depuis /etc/rc0.d/launcher vers /etc/init.d/launcher.

Citation: Man update-rc.d traduit

Update-rc.d met à jour automatiquement les liens vers les scripts d'initiasation de type System-V dont le nom est /etc/rcrunlevel..d/ NN nom vers les scripts /etc/init.d/name. Ils sont lancé par init quand on change de niveau fonctionnement et sont généralement utilisé pour démarer ou arréter des services tels que les demons. << runlevel >> est l'un des niveaux de fonctionnement autorisé par init, 0123456789S, et << NN >> est le code à deux chiffres utilisé par init pour décider de l'ordre d'exécution des scripts.

Indexation et autres

Vous êtes presque arrivés à la fin. Maintenant, Il faut << enregistré >> votre script pour qu'il soit pris en compte.

Tapez

update-rc.d launcher defaults

update-rc.d pour mettre à jour,
launcher pour le nom de votre script,
defaults option par défaut: placement en bout de fil d'attente, pour éviter les conflits

Normalement update-rc.d vous répond (il se peut que le message diffère) :

Adding system startup for /etc/init.d/launcher ...
/etc/rc0.d/K20launcher -> ../init.d/launcher
/etc/rc1.d/K20launcher -> ../init.d/launcher
/etc/rc6.d/K20launcher -> ../init.d/launcher
/etc/rc2.d/S20launcher -> ../init.d/launcher
/etc/rc3.d/S20launcher -> ../init.d/launcher
/etc/rc4.d/S20launcher -> ../init.d/launcher
/etc/rc5.d/S20launcher -> ../init.d/launcher

Vous pouvez maintenant exécuter votre script avec /etc/init.d/launcher start ou /etc/init.d/launcher stop.













_________________
Mon YouTube: http://www.youtube.com/blackstyles03
Mon Twitter: @BlackStyles1
R-P Dance Radio: http://r-p-dance-la-radio-de-drivers.playtheradio.com/index.cfm
The Monster HardCore
Débutant en Informatique & Gamer à éxpèrience modérer.
Futur Gendarme Auxiliaire (Volontaire).
Fan de Catch depuis toujours.
WWE ==> http://www.wwe.fr/
TNA Impact Wrestling ==> http://www.impactwrestling.com/
Et Fan de Lutte Libre (UFC).
UFC ==> http://www.ufc.com/
http://le-monde-noir.lebonforum.com/

Voir le sujet précédent Voir le sujet suivant Revenir en haut  Message [Page 1 sur 1]

Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum