Outils pour utilisateurs

Outils du site


opensuse:script_demarrage

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) :

su
nano /etc/init.d/lescript

Voici un exmple de script de démarrage à adapter à votre convenance :

#!/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

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 :

su
cd /etc/init.d/
chkconfig --add lescript
chkconfig --level 35 lescript on

D'autres commandes utiles

Pour lister les services démarrant :

chkconfig --list

Pour effacer un service du démarrage :

chkconfig --level 35 service off
chkconfig --del service

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 :

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

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 :

su
cd /etc/xinetd.d
nano monservice

et y coller cet exemple à adapter :

service nomservice

{
        flags           = REUSE
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/sbin/nomservice
        log_on_failure  += USERID
        disable         = no
}

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: 2014/05/09 18:57 (modification externe)