Contenu | Rechercher | Menus

Upstart

Logo upstart

Upstart est un successeur des scripts system V et se base sur les événements.
Il fonctionne de manière asynchrone : de la même manière qu'il gère le lancement et l'arrêt des services au démarrage et à l'arrêt de la machine, il les supervise pendant que le système tourne.

Upstart est apparu avec Ubuntu 6.10 "Edgy Eft" afin de remplacer sysinit. Dans les versions suivantes, il a vu son rôle étendu et devrait remplacer dans le futur cron, atd, anacron et peut-être inetd.1)

Vu le risque que peut engendrer la mauvaise gestion des services, la plupart des commandes indiquées nécessite les droits administrateur.

Utilisation

Il existe des logiciels qui prennent en charge les scripts Upstart, néanmoins l'outil qui permet de les contrôler ponctuellement se nomme initctl.
Il est généralement utilisé ainsi dans un terminal:

sudo initctl ACTION NomService

  • ACTION sera la commande que l'on souhaite appliquer au dit service:
    • start : démarrer le service
    • stop : arrêter le service
    • restart : relancer le service
    • reload : recharger le service
    • status : connaitre l'état du service
  • NomService est le nom du service a impacter.

Quelle que soit l'action menée sur un service, au prochain démarrage de la machine celui-ci devrait retrouver le status qui lui a été défini par défaut.

Pour une explication plus détaillée et les autres actions possibles n'hésitez pas à consulter le manuel d'initctl.

Exemples

initctl status udev

donnera l'état du service udev ainsi que son PID si celui-ci est actif,

sudo initctl stop tty3

arrêtera la connexion au tty3 ,

sudo initctl restart gdm

relancera le serveur graphique.
L'action restart renverra l' erreur "initctl: Unknown instance" si le service n'est pas en cours de fonctionnement ou est géré pas un script system V.

Des liens vers les commandes principales d'initctl sont installés par défaut. Il s'agit de start, stop, restart et status.
Par exemple sudo restart gdm est équivalent à sudo initctl restart gdm.

Lister les services démarrés

Saisissez dans un terminal :

initctl list

Vous obtenez la liste des services Upstart accompagnés de leur état ainsi que leur pid.

Pour obtenir une liste ordonnée, tapez :

initctl list | sort

Modifier l'exécution d'un service

Contrairement aux scripts system V qui utilisent l'outil update-rc.d, Upstart utilise des fichiers de configuration correspondant aux différents services à manipuler.
Ces fichiers de configuration, qui se trouve dans /etc/init/, permettent d'indiquer les conditions d'activation ou désactivation d'un service ou d'y insérer ses propres scripts.

Ce dossier étant essentiel au bon fonctionnement de votre système, il est conseillé d'en faire une sauvegarde avant toute modification de fichier.
Dans un terminal saisissez:

sudo cp -r /etc/init/ /etc/init.save$(date +%Y%m%d)

Pour désactiver définitivement un service de tous les runlevel, il suffit de renommer le fichier de configuration.
Néanmoins si vous souhaitez modifier l'état d'un service selon certaines conditions, vous devrez modifier le fichier /etc/init/NomService.conf.

Exemples

  • Si vous souhaitez désactiver gdm, dans un terminal saisissez:
sudo mv /etc/init/tty6.conf /etc/init/tty6.conf.noexec

Pour réactiver le service, il faudra faire la manipulation inverse:

sudo mv /etc/init/tty6.conf.noexec /etc/init/tty6.conf
  • Si vous souhaitez ne jamais lancer gdm, plutôt que de renommer le fichier comme indiqué plus avant, il faudra modifier le fichier /etc/init/gdm.conf pour ajouter never à la ligne start on ( comme ceci:
start on (never
          and filesystem
          and started hal
          and tty-device-added KERNEL=tty7
          and (graphics-device-added or stopped udevtrigger))
stop on runlevel [016]
...

Vous pouvez constater que gdm dépend également d'autres événements (fichiers système montés, hal démarré…).

  • Si vous souhaitez pouvoir lancer gdm uniquement après vous être connecté dans une console, modifiez le fichier /etc/init/gdm.conf comme ceci:
start on (runlevel [3]
          and filesystem
          and started hal
          and tty-device-added KERNEL=tty7
          and (graphics-device-added or stopped udevtrigger))
stop on runlevel [0126]
...

Personnaliser un fichier de configuration UpStart

Quand on a besoin de personnaliser un fichier de configuration upstart (.conf), il est préférable de le faire dans un fichier .override que modifier le .conf , celui-ci pouvant être écrasé lors d'une mise à jour évolutive (ex. nouvelle version du service).

Par exemple, pour rajouter une stanza comme un pre-stop à /etc/init/mysql.conf, il convient de créer /etc/init/mysql.override et d'y placer la stanza pre-stop.

Cf. ici (en anglais) pour de plus amples informations.

Logiciels

Vous trouverez sur la page « Services » une liste non exhaustive de logiciels permettant la gestion des scripts Upstart.

Ressources

1) Démon Unix qui permet de gérer les connexions à des services réseau – inetd


Le contenu de ce wiki est sous licence : CC BY-SA v3.0