Systèmes d’exploitation Unix : Bases, ligne de commande et outils pour Linux, macOS et BSD

Si Unix peut être qualifié de dinosaure dans le monde de l’IT – il reste à la pointe de la modernité. Ce qui avait commencé dans les années 70 comme un système multi-utilisateur et multitâche répond aujourd’hui encore aux exigences les plus élevées en matière de cloud, d’IA et d’IoT. Grâce à un développement continu, les concepts éprouvés restent actuels et performants. Dans cet article, vous découvrirez les bases, le travail avec la ligne de commande et les outils essentiels de Linux, macOS et BSD.

Auteur / Autrice Renato Testa
Date 19.03.2025
Temps de lecture 9 Minutes

Ouverture, interfaces transparentes et code source bien documenté font d’Unix une base fiable pour des soutions informatiques innovantes, malgré son âge avancé de plus de 50 ans. Les systèmes Unix suivent tous le même principe : afin de travailler efficacement sur des systèmes Linux, BSD ou macOS, il faut utiliser les commandes et les Shells.

Le principe Unix

La communauté Unix

Les systèmes Unix – en particulier Linux, BSD et OpenSolaris – sont développés par une communauté soudée qui entretient une culture. D’un côté, il est question de la manière dont le logiciel est développé et exploité, et de l’autre côté de la manière de communiquer et de collaborer. Les spécialistes Unix ne connaissent pas le concept de cloisonnement propriétaire.

Le design Unix

Unix a été développé comme système purement multi-utilisateur et multitâche. Ainsi, la sécurité et l’exclusion mutuelle sont intégrées depuis de début. L’utilisateur A ne peut par définition pas avoir accès aux données de l’utilisateur B. Un processus A ne peut pas avoir accès aux ressources du processus B ou du système. Ce principe a été constamment développé depuis plus de 50 ans.

Transparence grâce à l’open source

La plupart des systèmes Unix sont totalement disponibles en code source. Tout peut être facilement reproduit afin de minimiser les risques d’erreurs, même les programmes binaires peuvent être débogués sans encombre. Les fichiers journaux ou de configuration sont des fichiers texte qui peuvent être parcourus et traités avec des outils courants. Les connexions réseau peuvent être analysées avec des outils comme tcpdump ou wireshark.

Les ingrédients du noyau Unix

Lors du démarrage d’un système Unix, un bootloader charge le noyau, c’est-à-dire le nœud central du système d’exploitation. Le noyau reconnait le matériel à disposition (par exemple le processeur, la mémoire, les disques durs) et charge les modules nécessaires afin que ces composants puissent être utilisés.

Le noyau fonctionne selon deux modes :

  • Le mode noyau : les opérations sont exécutées de manière privilégiée, par exemple l’accès à un fichier ou un sous-système
  • Le mode utilisateur : Les données sont préparées, calculées ou formatées, mais sans accès direct aux zones critiques du système.

Ce principe assure la stabilité et la sécurité du système.

Alors que le noyau GNU/Linux intègre presque tout dans des modules (Kernelspace), macOS et BSD fonctionnent différemment avec un noyau allégé comportant moins de modules. Pour cela, différents composants sont traités dans l’espace utilisateur.

À la fin, le noyau lance un service qui continue à « démarrer » ou à initialiser le système.

Le système INIT

Étant donné que l’accès aux composants est maintenant disponible, des services sont lancés pour :

  • Accéder aux données – systèmes de fichiers, bases de données, sécurité des données
  • Utiliser des services réseau comme le web, les e-mails, internet …
  • Utiliser des services locaux pour garantir l’intégrité du système
  • Afficher une interface utilisateur pour accéder (localement ou à distance) au système

Ici, différents systèmes INIT entrent en jeu :

  • Systemd -> Linux
  • Launchd -> macOS
  • Init -> BSD

Interface utilisateur

En tant que poste de travail, l’interface utilisateur peut être graphique, mais pour les serveurs, l’IoT, les systèmes embarqués, les conteneurs ou les machines virtuelles, celui-ci est basé sur du texte. Un système Unix peut toujours être atteint au moins par la console. Si on le souhaite, les systèmes peuvent également proposer cette interface utilisateur via une connexion réseau ou d’autres interfaces et toujours avec une authentification.

Le Shell : le centre de contrôle d’un système Unix

En ce qui concerne les accès basés sur du texte, un Shell est lancé après une authentification réussie. Le Shell est un interpréteur de commande puissant qui dispose d’une multitude de commandes très efficaces.

Le pouvoir des commandes Unix

En combinaison avec le Shell, les commandes peuvent faire à peu près tout ce qu’il faut pour configurer, installer, administrer, surveiller, mettre à jour, automatiser et dépanner le système Unix.

Invite de commande

rat@khamsin <Concept-UX> $ ls -l /tmp
  1. « rat@khamsin <Concept-UX> $ » ->

Une invite de commande (Shell). On y trouve des informations telles que :

User@Host <Act. Répertoire> $

Le « $ » indique qu’il s’agit d’un utilisateur normal. Les utilisateurs privilégiés sont indiqués par un « # ».

  1. « ls » -> la commande qui doit être exécutée
  2. «  -l » -> une option. « ls » doit générer un long listing (avec de nombreux détails)
  3. « /tmp » -> « ls » doit afficher le contenu du répertoire « /tmp/ »

Ce principe fonctionne avec toutes les commandes sur tous les systèmes Unix.

Le principe des commandes Unix

Les commandes sont de petits programmes (le plus souvent programmé en C), qui font exactement une chose. Ils écrivent des outputs sur STDOUT (termina par défaut), les messages d’erreur sur STDERR (terminal par défaut) et lisent depuis STDINPUT (clavier par défaut). Si les commandes respectent ces règles, elles peuvent être combinées à volonté dans le Shell.

Combiner des commandes Unix

Si on combine des commandes dans le Shell avec l’opérateur pipe (caractère |), le Shell relie le STDOUT de la commande de gauche avec le STDIN de la commande de droite :

rat@khamsin <Concept-UX> $ ls -a /tmp | wc -l

L’output de « ls -a /tmp » est utilisé comme input pour « wc -l ». «wc -l » compte le nombre de lignes dans le fichier « ls -a /tmp». Le nombre qui est retourné est le nombre de fichiers dans le répertoire « /tmp ».

Les bons outils

Outre les commandes, les utilisateurs ont à leur disposition un très grand nombre d’outils puissants. Ces outils utilisent les mêmes canaux standards (STDIN, STDOUT et STDERR) que les commandes.

Nombre de ces outils trouvent leur racine dans les années 70 et les premières versions d’UNIX.

Une boîte à outils complète

Les outils permettent de traiter des streams et des flux de données. Un stream peut être un fichier ou l’output d’une commande.

Exemple :

rat@khamsin <Concept-UX> $ grep '^rat:' /etc/passwd

rat:x:1000:1000:Renato Testa:/home/rat:/bin/bash

Dans cet exemple, « grep » recherche dans le fichier « /etc/passwd » les lignes qui commencent par « rat: ».

rat@khamsin <Concept-UX> $ ps aux | grep 'bash$' 

rat 261791 0.0 0.0 224376 5600 pts/2 Ss+ Jan07 0:00 bash

rat 262430 0.0 0.0 224376 5280 pts/4 Ss Jan07 0:00 bash

rat 1721126 0.0 0.0 224228 5440 pts/1 Ss 10:47 0:00 -bash

Dans cet exemple, « grep » recherche dans le stream créé par « ps aux » les lignes qui se terminent par « bash ».

Avec « grep » nous n’avons vu qu’un outil parmi d’autres, mais un outil qui est toutefois très fréquemment utilisé.

Créer ses propres outils

Grâce à des scripts Shell, il est possible de créer ses propres outils sans trop d’efforts pour effectuer des tâches spécifiques ou répétitives de manière efficace et fiable.

Fun et créativité grâce aux outils Unix

Un principe également important est d’avoir du plaisir à travailler. Et si nous voulons que notre travail soit un plaisir, nous avons besoin d’outils adéquats. Avec un système Unix, nous avons à notre disposition un atelier entièrement équipé et pouvons laisser libre cours à notre créativité.


Auteur / Autrice

Renato Testa

Renato Testa travaille dans le monde de l’IT et d’Unix depuis plus de 25 ans. Il a commencé à donner les premiers cours Linux chez Digicomp dans les années 90. Ses spécialités sont la programmation et l’administration de systèmes Unix et Linux. Dans le cadre de différents événements chez Digicomp, il a donné des conférences sur des thèmes tels que les HA-firewalls, OpenSolaris ou les clusters Linux. Depuis 2014, il s’est spécialisé sur le thème du DevOps dans différents projets cloud. Renato Testa est formateur chez Digicomp depuis 1994 et détenteur de la certification FSEA.

Commentaire