Upstart a été développé par Canonical, c'était donc l'implémentation d'init sur Ubuntu pendant un certain temps ; cependant, sur les installations Ubuntu modernes, systemd est maintenant utilisé. Upstart a été créé pour améliorer les problèmes rencontrés avec SysV, tels que les processus de démarrage stricts, le blocage des tâches, etc. Le modèle piloté par les événements et les tâches d'Upstart lui permet de réagir aux événements au fur et à mesure qu'ils se produisent.
Pour savoir si vous utilisez Upstart, si vous possédez un répertoire /usr/share/upstart, c'est un très bon indicateur.
Les tâches (Jobs) sont les actions qu'Upstart exécute, et les événements (Events) sont des messages reçus d'autres processus pour déclencher des tâches. Pour voir une liste des tâches et leur configuration :
pete@icebox:~$ ls /etc/init
acpid.conf mountnfs.sh.conf
alsa-restore.conf mtab.sh.conf
alsa-state.conf networking.conf
alsa-store.conf network-interface.conf
anacron.conf network-interface-container.conf
À l'intérieur de ces configurations de tâches, vous trouverez des informations sur comment et quand démarrer les tâches.
Par exemple, dans le fichier networking.conf, il pourrait être écrit quelque chose d'aussi simple que :
start on runlevel [235]
stop on runlevel [0]
Cela signifie qu'il commencera à configurer le réseau au niveau d'exécution (runlevel) 2, 3 ou 5 et arrêtera le réseau au niveau d'exécution 0. Il existe de nombreuses façons d'écrire le fichier de configuration, et vous le découvrirez en examinant les différentes configurations de tâches disponibles.
La manière dont Upstart fonctionne est la suivante :
- D'abord, il charge les configurations des tâches depuis
/etc/init. - Une fois qu'un événement de démarrage se produit, il exécute les tâches déclenchées par cet événement.
- Ces tâches généreront de nouveaux événements, et ces événements déclencheront d'autres tâches.
- Upstart continue de faire cela jusqu'à ce qu'il ait terminé toutes les tâches nécessaires.