System V, systemd et Upstart

Contrôle des services Linux

Processus init

Le processus init sur les systèmes Linux est communément appelé la mère de tous les processus. Le processus « init » aura toujours un ID de processus de « 1 » (pid de 1), c’est le premier processus démarré par le noyau sur votre système. init est l’abréviation de initialization et est utilisé pour démarrer tous les autres processus et votre niveau d’exécution par défaut. Au fil du temps, de nombreuses distributions ont adopté la norme System V pour la gestion des services, cependant, d’autres distributions sont passées à « Systemd » ou « Upstart ».

SysV – System V

Si votre distribution Linux utilise les normes « SysV », alors init examinera un fichier appelé « /etc/inittab. Ce fichier contient votre niveau d’exécution par défaut sous lequel le système doit démarrer. Par exemple « id:3:initdefault : » lancerait automatiquement tous les scripts dans les structures de répertoires runlevel 3.
Niveau d’exécution 1 – Mode mono-utilisateur
Niveau d’exécution 2 – Identique au niveau d’exécution 3, mais sans NFS
Niveau d’exécution 3 – Mode multi-utilisateurs et réseau
Niveau d’exécution 4 – Inutilisé
Niveau d’exécution 5 – Identique au niveau d’exécution 3, mais avec un bureau graphique (système de fenêtre X)
Pour plus d’informations sur le processus de démarrage : Démarrage de Linux

Exécution de scripts d’init « System V »

Bien souvent, en tant qu’administrateur, vous devrez arrêter, démarrer, redémarrer ou recharger un service/daemon particulier. Pour ce faire, nous utilisons une commande appelée « service ». Cette commande vous permet d’exécuter les scripts « System V » qui sont normalement situés dans le répertoire « /etc/init.d ». En plus de pouvoir démarrer et arrêter un service/daemon, nous pouvons également visualiser l’état actuel.

service command examples

Status Check : Ici, nous demandons l’état actuel du démon « sshd »

# service sshd statusopenssh-daemon (pid 1599) is running...

Vérification de l’état de tous les processus : Exécute tous vos scripts init par ordre alphabétique avec l’option status. Voici un extrait de la sortie de cette commande:

# service --status-allabrt-ccpp hook is installedabrtd (pid 1708) is running...abrt-dump-oops (pid 1716) is running...acpid (pid 1487) is running...atd (pid 1740) is running...auditd (pid 1262) is running...automount (pid 1571) is running...avahi-daemon (pid 1375) is running...Usage: /etc/init.d/bluetooth {start|stop}certmonger (pid 1752) is running...cpuspeed is stoppedcrond (pid 1724) is running...cupsd (pid 1476) is running...dnsmasq is stoppedfirstboot is not scheduled to runhald (pid 1496) is running...

Stop : Ici, nous avons demandé que le démon « sshd » s’arrête. L’option status a également été émise pour vérifier le nouveau statut.

# service sshd stopStopping sshd: # service sshd statusopenssh-daemon is stopped

Start : Cette fois, nous demandons à ce que le « sshd » soit démarré.

# service sshd startStarting sshd: 

Restart : Cette fois, nous allons « rebondir » le démon « sshd » (arrêter puis redémarrer immédiatement).

# service sshd restartStopping sshd: Starting sshd: 

Reload : L’option « reload » est très utile si vous avez apporté des modifications à un fichier de configuration et que vous souhaitez intégrer ces modifications.

# service sshd reloadReloading sshd: 

Upstart

Upstart est un remplacement événementiel du démon « init ». Upstart a été écrit par un ancien employé de la société bien connue qui nous fournit Ubuntu (Canonical). L’idée derrière Upstart était de s’éloigner du processus de démarrage traditionnel où les tâches lancées devaient être terminées avant que la tâche suivante puisse démarrer. Upstart est un système piloté par les événements qui lui permet de répondre aux événements du système de manière asynchrone. Upstart est responsable du démarrage et de l’arrêt des services et des tâches au démarrage et à l’arrêt. Il surveille aussi activement ces services et ces tâches. Upstart est également capable d’exécuter des scripts sysvinit sans modification. Plusieurs distributions ont inclus Upstart en remplacement de System V. Parmi elles, RHEL, CentOS, Fedora. Cependant, beaucoup de ces systèmes sont maintenant passés à « systemd »
Comme nous l’avons vu précédemment, nous pouvons contrôler les services/daemons avec la commande « service » sous System V, cependant, sous Upstart nous utilisons une commande différente. La commande qui est utilisée avec Upstart est « initctl ». Cette commande vous permet de communiquer avec le daemon init. Voici quelques exemples de base de l’utilisation de la commande « initctl ».

exemples de la commande initctl

Vérification de l’état : Cette option demande l’état du travail spécifié.

root@john-desktop:~# initctl status cupscups start/running, process 672

Le nom du travail est donné en premier, suivi du but et de l’état actuels de l’instance, puis du numéro d’identification du processus.
Stop : L’option « stop » spécifie que l’état souhaité doit être « arrêté ».

root@john-desktop:~# initctl stop cupscups stop/waiting

Départ : L’option « start » va démarrer une nouvelle instance du travail spécifié.

root@john-desktop:~# initctl start cupscups start/running, process 3574

Restart : Cette option permettra de redémarrer que le travail spécifié est redémarré. L’instance qui est redémarrée conservera sa configuration originale.

root@john-desktop:~# initctl restart cupscups start/running, process 3606

Reload : Cette option permet de recharger l’instance spécifiée.

root@john-desktop:~# initctl reload cups

List : List demande l’affichage de tous les travaux/instances et de leur état associé. Voici un extrait de la sortie de cette commande:

root@john-desktop:~# initctl listavahi-daemon start/running, process 611mountall-net stop/waitingnmbd stop/waitingpasswd stop/waitingrc stop/waitingrsyslog start/running, process 601tty4 start/running, process 1080udev start/running, process 437upstart-udev-bridge start/running, process 429

Reload Configuration : Cette option demande au démon init de recharger ses fichiers de configuration. Aucun travail n’est redémarré par cette commande.

root@john-desktop:~# initctl reload-configuration cups

Dans des circonstances normales, vous ne devriez pas avoir besoin d’émettre la commande de rechargement ci-dessus car « init » surveille ses répertoires de configuration avec « inotify » et se recharge automatiquement en cas de changement.

systemd

systemd est un autre remplacement de System V. systemd signifie system daemon. Son nom est intentionnellement en minuscules ! systemd a été conçu pour permettre une meilleure gestion des dépendances et avoir la capacité de gérer plus de travail en parallèle au démarrage. systemd supporte l’instantané de votre système et la restauration de l’état de vos systèmes, garde la trace des processus stockés dans ce qui est connu comme un « cgroup » par opposition à la méthode conventionnelle « PID ». systemd est maintenant repris par de nombreuses distributions Linux populaires. Fedora, Mandriva, Mageia, Arch Linux. Il est également prévu que systemd soit inclus dans les nouvelles versions de RHEL (Red hat).
Comme nous l’avons vu avec « System V » et « Upstart », les deux types ont leur propre commande unique pour contrôler les services. Il en va de même pour systemd. La commande qui est utilisée sous systemd est « systemctl ». Vous trouverez ci-dessous quelques exemples de certaines des fonctionnalités de base de la commande « systemctl ».

commande systemd Description
systemctl start mytest.service Démarre le service spécifié
systemctl stop mytest.service Arrête le service spécifié
systemctl status mytest.service Demande l’état du service spécifié
systemctl list-unit-files –type=service Liste les services connus qui peuvent être démarrés ou arrêtés
systemctl restart mytest.service Démarre puis arrête le service spécifié
systemctl reload mytest.service Si elle est prise en charge, elle rechargera les fichiers de configuration
systemctl enable mytest.service Equivalent de chkconfig mytest on
systemctl disable mytest.service Equivalent de chkconfig mytest off
systemctl is-enabled mytest.service Vérifie si le service est configuré pour démarrer dans le niveau d’exécution actuel

.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *