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.
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.
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.
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.
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.
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 :
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.
Étant donné que l’accès aux composants est maintenant disponible, des services sont lancés pour :
Ici, différents systèmes INIT entrent en jeu :
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.
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.
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.
rat@khamsin <Concept-UX> $ ls -l /tmp
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 « # ».
Ce principe fonctionne avec toutes les commandes sur tous les systèmes 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.
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 ».
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.
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é.
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.
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é.
Commentaire