Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
💥 Les 22 & 23 novembre : Accès 100% GRATUIT
à la Bibliothèque Numérique ENI. Je m'inscris !
  1. Livres et vidéos
  2. Vade-mecum de l'informatique contemporaine
  3. mecum de l'informatique contemporaine
Extrait - Vade-mecum de l'informatique contemporaine (TCP, SOA, Linux, Python, Docker, HDFS, RDF, Adam, OWASP, KPI, UML, Scrum…)
Extraits du livre
Vade-mecum de l'informatique contemporaine (TCP, SOA, Linux, Python, Docker, HDFS, RDF, Adam, OWASP, KPI, UML, Scrum…)
2 avis
Revenir à la page d'achat du livre

Linux, Shell, Conteneurs, WSL - quésako ?

En guise d’introduction

Dans ce chapitre, nous allons nous concentrer sur ce qui compose mainstream des environnements de travail des développeurs actuels. Votre contexte professionnel sera sans doute différent, mais les éléments suivants font partie intégrante de la culture commune des développeurs actuels en termes de système d’exploitation.

Vous trouverez une liste d’instructions Linux de base, accompagnée de petits exemples syntaxiques au chapitre Aide-mémoire, à la fin de l’ouvrage.

Nous allons donc nous concentrer sur Linux et « ses amis », d’autant que macOS et Windows (via WSL ou Docker) s’avèrent souvent utilisés comme postes de travail pour développer des applications sur Linux !

L’élégance de Linux réside dans sa versatilité, que ce soit sur des ordinateurs de bureau ou pour alimenter des serveurs ou des systèmes embarqués. Il excelle en termes de stabilité et de sécurité, ce qui en fait le choix préféré pour les environnements critiques.

L’interface en ligne de commande (CLI/shell) de Linux est de plus en plus populaire. Ses systèmes de gestion de paquets/logiciels, tels que apt, snap, yum et pacman, simplifient l’installation et la mise à jour des logiciels dans de bonnes conditions...

Survivre avec Linux - Le minimum à savoir

1. Points de repère

La commande la plus utilisée de Linux, ls, permet de lister les fichiers et les répertoires non cachés.

ls 
 
bin  boot  dev  etc  home  lib  lib32  lib64  libx32  media  
mnt   opt  proc  root  run  sbin  srv  sys  tmp  usr  var 

Ce dont nous retiendrons au quotidien les éléments suivants.

Dossier

Contenu

bin

Binaires (exécutables) des programmes système et commandes utilisateur.

boot

Démarrage du système, chargeur d’amorçage (bootloader), configuration du noyau.

etc

Configuration du système et des applications.

home

Répertoire personnel de l’utilisateur actuel !

lib x

Bibliothèques partagées.

opt

Packages logiciels optionnels installés par l’utilisateur ou par des applications tierces.

root

Répertoire personnel de l’utilisateur root (super-utilisateur).

tmp

Répertoire temporaire où les applications peuvent stocker des fichiers temporaires. Les fichiers dans ce répertoire sont généralement supprimés lors du redémarrage du système.

usr

Fichiers et programmes utilisés par les utilisateurs, tels que les applications installées, les bibliothèques…

var

Données variables, telles que les fichiers journaux (logs), les fichiers de base de données, les fichiers de cache, etc.

En utilisant la commande cd (change directory), nous allons nous placer dans notre propre espace home, qui n’est pas celui de nos camarades.

cd home/ 

Le / n’est ici pas obligatoire, mais permet d’attirer votre attention sur la structure des chemins d’accès en Linux.

Dans notre espace, nous allons maintenant créer un dossier, puis le supprimer.

mkdir provisoire/ 
ls 

Ce qui donne :

provisoire 

Détruisons ce répertoire :

rmdir provisoire/ 
ls 

Il n’y a plus rien dans notre home !

 

Voici d’autres commandes du quotidien :

  • À partir d’un dossier, cd .. vous permet remonter d’un niveau dans sa hiérarchie. 

  • L’instruction cd ~ vous permet d’atteindre...

Daemons (divinités ou démons) et cron

Sans doute vous êtes-vous déjà interrogé sur la façon dont votre système « attend » les diverses sollicitations avant de les traiter ou comment faire pour qu’il effectue des tâches sans votre intervention ?

C’est l’objet du daemon !

Un daemon est un processus ou un service en arrière-plan qui s’exécute en continu sur un système informatique, généralement sans aucune interaction directe avec l’utilisateur (« il tourne en arrière-plan »).

Voici quelques caractéristiques de daemons.

  • Processus en arrière-plan : généralement lancés automatiquement lorsque le système informatique démarre et continuent de s’exécuter jusqu’à ce que le système soit éteint (sauf si vous créez votre propre daemon…). 

  • Fonctions variées : gestion de périphériques matériels (par exemple, le daemon d’impression), gestion de services réseau (par exemple, le daemon de serveur web), surveillance d’événements système (par exemple, le daemon de journalisation système)…

  • Planification : certains daemons sont responsables de la planification des tâches et de leur exécution à...

Suggestions pour une utilisation plus professionnelle de Linux

Vous trouverez ici quelques pratiques ou outils que les auteurs se plaisent à utiliser. Elles supposent parfois d’avoir installé différents packages, dont certains sont disponibles dans le conteneur Kali que nous évoquons dans ce chapitre.

1. Apprendre le shell bash

Un shell Linux est un programme qui permet à l’utilisateur d’interagir avec le système d’exploitation Linux en utilisant des commandes textuelles. bash est le shell le plus diffusé.

Vous trouverez une liste d’instructions bash accompagnée de petits exemples syntaxiques au chapitre Aide-mémoire, à la fin de l’ouvrage. 

Le shell bash est très documenté, pourtant vous trouverez sans doute utile de disposer d’un petit outil de débogage comme : https://www.shellcheck.net/.

Voici le code d’un script bash qui compte les fichiers cachés dans un répertoire.

#!/bin/bash 
 
# Demander le nom d'un dossier 
read -p "Entrez le nom d'un dossier : " dossier  
 
# Fonction récursive pour compter les fichiers cachés 
# dans un dossier et ses sous-dossiers 
compter_fichiers_caches() { 
    dossier_actuel="$1" 
    compteur=0  
 
    # Parcourir tous les fichiers dans le dossier actuel  
    for fichier in "$dossier_actuel"/*; do 
        if [[ "$fichier" == .* ]]; then  
            # Vérifier si le fichier est caché  
            if [[ -f "$fichier" ]]; then 
                compteur=$((compteur + 1))  
            fi 
        fi  
        # Vérifier si le fichier est un dossier  
        if [[ -d "$fichier" ]]; then  
            #...

Conteneurs et Docker

1. Docker, VM, services, en bref

a. Démarrer avec Docker

Docker est une technologie de conteneurisation. La conteneurisation vise à virtualiser les processus. Ainsi, un processus conteneurisé s’exécute dans un environnement optimisé à ses fins, mais en utilisant les ressources système de l’ordinateur hôte.

Il existe d’autres technologies de conteneurisation plus difficiles à appréhender comme LXC (LXC fournit des conteneurs de système de niveau inférieur, très performants, tandis que Docker met l’accent sur les conteneurs d’applications avec une interface conviviale et un écosystème d’outils particulièrement riche).

Docker est disponible sous Windows, Linux, macOS, etc. On peut utiliser Docker dans un conteneur Docker ou dans une machine virtuelle sans faire s’écrouler les performances de l’ensemble, ce qui permet de travailler avec Docker sur des configurations positionnées sur le cloud.

Au sein d’un conteneur, vous pouvez loger de « gros » services, comme un serveur http Apache, ou de « petits » services, comme des microservices souvent portés par des API (Application Programming Interface) permettant à différentes applications logicielles de communiquer et d’interagir entre elles. Les API définissent les méthodes et les formats de données que les applications peuvent utiliser pour demander et échanger des informations.

Un conteneur Docker cherche à n’utiliser qu’un minimum de ressources logicielles, à savoir tout ce qui lui permet de fournir le service. Plus les technologies de conteneurisation évoluent, plus elles « se branchent » au plus près du hardware pour ne pas être ralenties par les caractéristiques de l’hôte qui les abrite.

Docker n’est donc pas une technologie de machine virtuelle (VM). En effet, avec une technologie de machine virtuelle comme VirtualBox, VMWare ou WSL, un seul ordinateur, l’hôte, peut exécuter plusieurs instances de VM (Virtual Machine), les invités. Chaque invité utilise un grand fichier sur le disque pour définir son système d’exploitation et de fichiers isolé et s’exécute...