INFORMATIQUE / SYSTÈMES / LINUX · FIRST PRINCIPLES

Qui fait tourner les services sous Linux ?

Ton serveur web doit répondre aux visiteurs, même quand personne n'a ouvert de terminal. Qui le démarre ? Qui le redémarre s'il s'arrête ? Et comment lui dire de démarrer au prochain allumage ? C'est ce problème qui nous mène à systemctl.

01 · LE PROBLÈME

Quel problème cherche-t-on à résoudre ?

Imaginons un Raspberry Pi qui héberge un site web. Tu l'allumes : le site doit devenir disponible sans intervention humaine. Tu veux aussi pouvoir arrêter temporairement le serveur pour une maintenance, connaître son état et examiner ses erreurs.

Le besoin fondamental : confier à Linux la gestion du cycle de vie des programmes qui rendent un service en arrière-plan.

02 · PARTIR DE ZÉRO

Du programme au service

  1. Un programme est du code sur le disque ; quand on l'exécute, il devient un processus en mémoire.
  2. Certains processus doivent rester actifs longtemps pour fournir une fonction : serveur SSH, serveur web, base de données… On parle souvent de services.
  3. Il faut un gestionnaire capable de lancer, arrêter, surveiller et configurer leur démarrage. Sur de nombreuses distributions Linux, c'est systemd.
  4. L'administrateur a besoin d'un moyen de parler à ce gestionnaire : c'est le rôle de systemctl, un outil en ligne de commande.
À déduire : systemctl ne contient pas lui-même ton serveur web. Il demande à systemd de gérer une unité, par exemple nginx.service.
03 · VOIR LE MÉCANISME

Qui parle à qui ?

Avance étape par étape dans ce schéma. Les flèches représentent la chaîne de commande, pas le trajet du trafic web.

Administrateurterminal systemctlcommande systemdgestionnaire nginx.serviceservice web 1. Tu veux démarrer un serveur web.
  1. 1. Tu veux démarrer un serveur web.
  2. 2. Tu saisis : sudo systemctl start nginx.
  3. 3. systemctl transmet la demande à systemd.
  4. 4. systemd lance l'unité nginx.service et ses dépendances nécessaires.
Étape 1 sur 4

Nuance : systemd est habituellement le processus d'initialisation (PID 1) sur ces machines. D'autres systèmes d'initialisation existent : systemctl n'est pas universel sur tous les Linux.

04 · EXPÉRIMENTER

Un laboratoire sans risque

Imagine un service nommé demo.service. Clique sur les commandes : la simulation modifie deux propriétés indépendantes. Elle ne touche pas à ton ordinateur.

ÉTAT ACTUELArrêtéLe processus tourne-t-il maintenant ?
AU DÉMARRAGEDésactivéDémarrera-t-il automatiquement au prochain boot ?

Commande : aucune

État initial : service arrêté et non activé au démarrage.

Journal de la simulation
  1. En attente d'une commande.

Modèle volontairement simplifié : on suppose un service valide, sans panne ni dépendances particulières, et des commandes exécutées avec les droits nécessaires. En réalité, un service peut échouer, avoir d'autres états ou être démarré par un déclencheur externe.

05 · APPLIQUER SUR LINUX

Les commandes qui comptent

sudo systemctl start nginx

Démarre le service maintenant.

sudo systemctl stop nginx

Arrête le service maintenant.

sudo systemctl restart nginx

Redémarre le service.

sudo systemctl enable nginx

Configure son démarrage automatique, sans nécessairement le lancer maintenant.

sudo systemctl disable nginx

Retire cette activation automatique, sans arrêter un service déjà en cours.

sudo systemctl enable --now nginx

Active pour les prochains démarrages et démarre immédiatement.

systemctl status nginx

Affiche l'état et des informations récentes.

journalctl -u nginx

Consulte les journaux associés au service (outil distinct de systemctl).

Attention : sur un serveur distant, arrêter ssh.service ou sshd.service peut interrompre ton accès. Le nom exact des unités dépend de la distribution.

06 · VÉRIFIER

QCM : as-tu compris la logique ?

Choisis une réponse par question, puis consulte les explications.

1. Quel est le rôle principal de systemctl ?
2. Après sudo systemctl start demo, sans enable, que sait-on ?
3. Un service tourne déjà. Que fait normalement disable ?
4. Tu veux lancer maintenant un service et au prochain démarrage. Que choisir ?
5. Quel outil consulter pour investiguer les logs d'un service ?
À retenir : un service est une fonction assurée par un ou plusieurs processus ; systemd peut gérer son cycle de vie ; systemctl est le moyen courant de lui donner des ordres. start ≠ enable : « maintenant » et « au démarrage » sont deux questions différentes.
07 · RELIER LES IDÉES

Ce que cette idée éclaire

Les notions de processus, service et systemd sont les voisins directs de cet article. Elles figurent aussi dans le graphe 3D de Bash World comme pistes d'exploration.

Explorer les liens dans le graphe →