LinuxPedia

Wiki libre et indépendant dédié à GNU-Linux et BSD.

Outils pour utilisateurs

Outils du site


opensuse:script_demarrage

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

opensuse:script_demarrage [2018/11/17 13:54] (Version actuelle)
Ligne 1: Ligne 1:
 +====== Lancer un script au démarrage ======
  
 +===== Introduction =====
 +
 +Pour lancer un programme au démarrage, on utilise des scripts sous linux. Il existe différentes façons de démarrer/​configure ces scripts au démarrage, suivant l'​utilisation que l'on désire.
 +Pour les programmes ne nécessitant pas d'​être lancés en tant que super-utilisateur,​ voir la section "​lancer un script automatiquement sous KDE".
 +Pour ceux nécessitant d'​être lancés par le super-utilisateur,​ voir la section "​configurer un démon au démarrage"​ et ses différentes sous-sections.
 +
 +
 +===== Lancer un script automatiquement sous KDE =====
 +
 +Lors de l'​installation d'un programme, le script permettant de le lancer se trouve généralement dans /usr/bin. Il suffit donc de créer un lien symbolique dans ~/​.Kde4/​Autostart/​ vers ce script pour démarrer ce programme : 
 +
 +''​ln -s /​usr/​bin/​votre_programme /​home/​votre_user/​.Kde4/​Autostart/''​
 +
 +===== Configurer un démon au démarrage =====
 +
 +Il existe plein de façons différentes pour configurer un démon au démarrage mais avant une petite explication sur comment Linux gère les démons au démarrage .
 +Il faut savoir que le premier programme à se lancer se nomme “init”. Ce dernier peut etre appele dans plusieurs niveaux d'​exécutions (runlevel en anglais). ​
 +
 +Chaque niveau d'​exécution a son utilité propre. Ce qu'il faut retenir c'est que plus le niveau est bas moins le système propose de fonctionnalités. Quelle est l'​utilité ? Et bien si une fonctionnalité refuse de se lancer et bloque le démarrage de la station, l'​administrateur va passer à un level inférieur dans lequel cette fonctionnalité n'​existe pas et ainsi pouvoir corriger le problème. ​
 +
 +Par défaut le niveau d'​exécution est 5. Celui permet de tout faire : accès au réseau, utilisation de X et beaucoup d'​autre…
 +
 +==== Prérequis ====
 +
 +
 +Un script à lancer au démarrage, on l'​appellera '​lescript'​. Pour les programmes installés, il se trouvera généralement dans /usr/bin ou /usr/sbin.
 +
 +Puis, on crée un script dans /etc/init.d permettant de lancer ce script avec les paramètres "​start"​ "​stop"​... (il faut savoir que pour de nombreux programmes, ce script dans /etc/init.d est fournit automatiquement avec l'​installation donc pensez à vérifier avant de le créer) :
 +
 +<​code>​su
 +nano /​etc/​init.d/​lescript</​code>​
 +
 +Voici un exmple de script de démarrage à adapter à votre convenance : 
 +
 +<​code>#​!/​bin/​bash
 +
 +source /​etc/​sysconfig/​rc
 +source $rc_functions
 +case "​$1"​ in
 + start)
 + echo "​Starting lescript..."​
 + loadproc /​usr/​sbin/​lescript
 + ;;
 + stop)
 + echo "​Stopping lescript..."​
 + killproc /​usr/​sbin/​lescript
 + ;;
 + reload)
 + echo "​Reloading lescript..."​
 + killall -HUP lescript
 + ;;
 + restart)
 + $0 stop
 + sleep 1
 + $0 start
 + ;;
 + status)
 + statusproc /​usr/​sbin/​lescript
 + ;;
 + *)
 + echo "​Usage:​ $0 {start|stop|reload|restart|status}"​
 + exit 1
 + ;;
 +esac
 +</​code>​
 +
 +On le modifie à notre convenance.
 +
 +Voila, maintenant on dispose d'un script de service dans /​etc/​init.d. Mais comment l'​activer?​
 +
 +==== En mode graphique ====
 +
 +C'est on ne peut plus simple :
 +
 +On lance YAST -> Système -> Editeur de niveau de configuration -> utilisation avancée et là on coche les niveaux à partir desquels le script doit être lancé (3 et 5 généralement).
 +
 +==== Avec chkconfig ====
 +
 +Dans une console : 
 +
 +<​code>​su
 +cd /​etc/​init.d/​
 +chkconfig --add lescript
 +chkconfig --level 35 lescript on</​code>​
 +
 +
 +D'​autres commandes utiles
 +
 +Pour lister les services démarrant :
 +
 +<​code>​chkconfig --list</​code>​
 +
 +Pour effacer un service du démarrage : 
 +
 +<​code>​chkconfig --level 35 service off</​code>​
 +
 +
 +<​code>​chkconfig --del service</​code>​
 +
 +==== A la main ====
 +
 +Le principe est de créer des liens symboliques de /​etc/​init.d/​lescript dans /etc/rcX.d. (X étant le niveau d'​exécution du script), avec comme règle de créer ces liens symboliques avec un nom commençant par S (comme Start, au démarrage) et K (comme Kill, à la fermeture de la machine), puis un numero de 1 à 99 d'​ordonnance qui correspond à l'odre dans lequel sont lancés les scripts d'un même niveau d'​ordonnancement.
 +
 +Si vous voulez être sûr que votre script n'​engendrera pas de conflit de ressources non activés je vous conseille de le mettre dans le rc3.d et rc5.d.
 +
 +Ainsi les liens devront se nommer par exmple "​S99lescript"​ et "​k99lescript"​
 +
 +En console : 
 +
 +<​code>​su
 +ln -s /​etc/​init.d/​lescript /​etc/​rc.d/​rc3.d/​S99lescript  ​
 +ln -s /​etc/​init.d/​lescript /​etc/​rc.d/​rc3.d/​K99lescript
 +ln -s /​etc/​init.d/​lescript /​etc/​rc.d/​rc5.d/​S99lescript ​
 +ln -s /​etc/​init.d/​lescript /​etc/​rc.d/​rc5.d/​K99lescript</​code>​
 +
 +==== Avec xinetd ====
 +
 +=== Petite introduction sur xinetd ===
 +
 +
 +Le démon xinetd est un super-service enveloppé par TCP permettant de contrôler l'​accès à un sous-réseau de services réseau populaires parmi lesquels figurent FTP, IMAP et Telnet. Il permet également de spécifier des options de configuration spécifiques aux services en matière de contrôle d'​accès,​ journalisation améliorée,​ liaison, redirection et de contrôle d'​utilisation des ressources. ​
 +
 +Lorsqu'​un hôte client essaie de se connecter à un service réseau contrôlé par xinetd, le super-service reçoit la requête et vérifie l'​existence de toute règle de contrôle d'​accès des enveloppeurs TCP. Si l'​accès est autorisé, xinetd vérifie non seulement que la connexion est bien autorisée selon ses propres règles d'​accès pour ce service mais que le service n'​utilise pas plus de ressources que la quantité qui lui est attribuée et qu'il ne commet aucune infraction aux règles définies. Il démarre alors une instance du service demandé et lui cède le contrôle de la connexion. Une fois la connexion établie, xinetd n'​interfère plus dans le processus de communication entre l'​hôte client et le serveur.
 +
 +=== Utiliser xinetd ===
 +
 +Tout d'​abord,​ vérifier que xinetd est lancé automatiquement au démarrage (YAST -> Système -> éditeur de niveau d'​exécution).
 +
 +Pour que xinetd gère un nouveau service, il faut aller dans le répertoire /​etc/​xinetd.d et y créer un fichier correspondant au service utilisant le super-service : 
 +
 +<​code>​su
 +cd /​etc/​xinetd.d
 +nano monservice</​code>​
 +
 +et y coller cet exemple à adapter : 
 +
 +service nomservice
 +<​code>​{
 +        flags           = REUSE
 +        socket_type ​    = stream
 +        wait            = no
 +        user            = root
 +        server ​         = /​usr/​sbin/​nomservice
 +        log_on_failure ​ += USERID
 +        disable ​        = no
 +}</​code>​
 +
 +Le fichier /​etc/​xinetd.conf contient les paramètres généraux du super-service.
 +Pour de plus amples informations sur xinetd, se référer au page de documentation ^^.
opensuse/script_demarrage.txt · Dernière modification: 2018/11/17 13:54 (modification externe)