Linux mascot on a desk next to a laptop.
Agence web » Actualités du digital » Les connaissez-vous tous?

Les connaissez-vous tous?

Linux bénéficie de l'éthique fortement privée de la conception UNIX. Les programmes communiquent via du texte, vous pouvez les combiner via des pipelines, et ils font bien une chose. Au-delà de cela, cependant, les programmes peuvent agir très différemment et présenter de nombreux comportements différents.

Processus de fond

Un système d'exploitation multitâche, comme Linux, gère simultanément de nombreux programmes différents. Ceux qui s'exécutent sans l'utilisateur qui les contrôlent directement sont appelés processus d'arrière-plan. Il n'y a vraiment qu'un seul type de processus de fond, communément appelé «démon».

1. Daemon

Le terme «démon» est étrange, mais cela signifie simplement «processus de fond». Un démon utilise généralement des astuces pour continuer à fonctionner, tout ce qui se passe d'autre sur le système. Par exemple, il débutera une copie de lui-même qui fonctionne indépendamment du shell. Des services comme INETD ou Launchd peuvent le faire au nom d'un programme et sont eux-mêmes des démons.

Les Daemons terminent souvent leur nom avec «D», par exemple HTTPD (le serveur Web Apache), INETD (Daemon Internet Service) et SystemD.

Si un programme externe – ou l'utilisateur – doit communiquer avec un démon, il le fait généralement en envoyant un signal demandant au démon de redémarrer ou de recharger sa configuration, par exemple. Vous pouvez utiliser l'outil PS pour découvrir ce que les Daemons fonctionnent sur votre système.

Interface de ligne de commande

La plupart des programmes Linux ont une interface de ligne de commande, ce qui signifie que vous les utilisez en tapant des commandes de texte. Ce sont les programmes terminaux les plus courants et, généralement, les plus faciles à utiliser. Ces programmes commencent généralement, fonctionnent rapidement, puis s'arrêtent une fois qu'ils ont terminé.

2. Cantrip

Le type de programme le plus simple – innocent « Cantrip » – agira simplement sans entrée ni sortie. Ces programmes fonctionnent souvent sur des fichiers ou effectuent des tâches sysadmin connexes. Le programme RM, qui supprime un fichier, est un exemple typique:

        rm myfile.txt

Si le fichier existe, RM le supprimera et votre terminal imprimera votre invite sur la ligne suivante, en attendant le prochain programme ou commande:

La commande RM a des options pour contrôler la façon dont il s'exécute, mais sa simplicité réside dans son manque d'entrée et de sortie.

3. Filtre

De nombreux programmes Linux sont le contraire complet: ils nécessitent des entrées et produisent la sortie. Souvent, ces programmes modifient leur contribution d'une manière ou d'une autre, et il y en a beaucoup: couper, tête, tri, uniq, etc.

La commande grep montre la signification du filtre particulièrement bien: elle scanne chaque ligne d'entrée, la reproduisant en tant que sortie si elle remplit une certaine condition. Dans le cas de Grep, la condition est une expression régulière qui correspond à un certain modèle de texte:

Les filtres sont excellents pour manipuler les données et sont couramment utilisés dans les pipelines qui enchaînent plusieurs commandes pour effectuer une tâche complexe. Vous pouvez même combiner ces outils pour créer une base de données rudimentaire.

4. Évier

Contrairement aux filtres, il y a très peu de lavabos. Ce type de programme prend des entrées, mais ne produit aucune sortie – du moins, pas de sortie à l'écran dans votre terminal. Un exemple est LPR, l'imprimante de ligne, qui imprime un fichier ou une entrée standard sur papier.

Les puits passent souvent vers des médias autres que l'écran, comme le programme ESPEAK qui convertit le texte en parole audio.

5. Source

Le programme LS utilise diverses approches pour répertorier les fichiers, mais il ne traite jamais les entrées standard. Dans son cas le plus simple, LS n'a même pas besoin d'arguments:

        ls

Par défaut, LS fonctionne sur le répertoire actuel, en imprimant son contenu. Vous pouvez afficher les détails d'un répertoire, d'un fichier ou d'un ensemble de fichiers différents en passant des arguments en ligne de commande:

        ls /tmp
ls /etc/passwd
ls ~/.*

6. Compilateur

Un compilateur est, de loin, le type de programme CLI le plus compliqué, généralement réservé à la programmation. Un compilateur fonctionnera comme n'importe quel autre programme, mais il peut prendre plus de temps pour terminer car son travail peut être assez impliqué.

Leurs noms se terminent souvent par «C» pour «Compiler», CC, Javac ou Rustc. Un compilateur est un peu comme un cantrip, mais il fonctionne toujours avec les fichiers, transformant un type de données en une autre.

Le compilateur C, CC, démontre le comportement typique d'un compilateur:

        cc file1.c file2.c -o program

Cette commande exécute le compilateur avec deux fichiers – file1.c et file2.c – Générant un troisième fichier nommé programme. Ici, l'argument «-o» signifie «Fichier de sortie».

Il est important de noter qu'un compilateur peut trouver des fichiers supplémentaires, selon sa tâche ou la langue sous-jacente. Un programme C comme File1.c peut inclure un fichier d'en-tête (par exemple file1.h) que le compilateur localisera et utilisera pour générer le programme final, même s'il n'est pas explicitement nommé lorsque vous exécutez la commande.

Cela fait partie de ce qui rend les compilateurs si compliqués: ils peuvent faire beaucoup de choses dans les coulisses sans avoir à être directement chargé de le faire.

Programmes interactifs

Les programmes précédents s'exécutent tous de manière non interactive. Lorsque vous les exécutez, vous n'avez pas de contrôle direct sur leur fonctionnement. Les deux derniers types de programmes sont très différents.

7. ligne par ligne

La forme d'interaction la plus simple est une ligne à la fois. Au début de l'histoire de l'UNIX, ces commandes étaient assez courantes car elles fonctionnaient sur des télétypes: les machines à écrire glorifiées qui exploitaient une ligne à la fois.

De nos jours, ces programmes ont vraiment l'impression d'être «de nom interactifs uniquement», mais dans les années 1960, ils étaient assez révolutionnaires. Si vous êtes courageux, vous pouvez revivre le vieux temps avec l'éditeur de texte original, Ed:

Cette transcription ED affiche des commandes qui écrivent le texte « Hello World » dans un fichier nommé foo.txt. Certaines de ces lignes sont tapées par l'utilisateur: «A» est une commande pour ajouter du texte à un tampon, «, P» ​​imprime le tampon actuel et «W» écrit le tampon dans un fichier. Après écriture, Ed rapporte le nombre d'octets écrits, dans ce cas 13.

Si vous vous souvenez d'une chose à propos d'ED, ce devrait être la commande «Q» qui quitte le programme. Il n'enregistrera aucun nouveau texte que vous avez entré, mais si vous avez déjà été accidentellement exécuté, en tapant «Q» suivi de l'entrée vous permettra de le quitter le plus rapidement possible!

Comme vous pouvez le voir, l'édition de texte en ligne est un processus ardu qui peut être sujet aux erreurs. Le programme ED peut être utile en cas d'urgence, mais les programmes ligne par ligne sont généralement obsolètes.

8. TUI

Une bien meilleure alternative pour les programmes interactifs, en particulier pour les éditeurs de texte, est l'interface TUI Style: Text-User. Le nom distingue ces programmes des applications GUI, qui utilisent des graphiques pour atteindre plus ou moins le même type de résultat: un programme vraiment interactif.

L'éditeur de texte, VIM, est toujours fortement basé sur des commandes, mais vous pouvez l'utiliser pour sauter dans un fichier texte, rechercher du texte, supprimer des morceaux entiers et voir tout se passant à l'écran, en temps réel. Les TUIS modernes utilisent largement les caractères de couleur et de coffre pour approximer une interface graphique:


Bien que vous ne verrez pas toujours des références à ces types de programmes, il est utile de savoir qu'ils existent et de comprendre ce qu'ils font. Chaque type a des forces particulières et peut être utilisé dans certains contextes pour atteindre une variété de tâches.

★★★★★