Je m'approprie l'environnement Linux
Pourquoi la ligne de commande reste incontournable
Sur un poste de bureau, l'interface graphique suffit à la plupart des usages. Sur un serveur, la donne change : la majorité des machines Linux que vous administrerez n'auront jamais d'écran ni de souris branchés dessus. Vous vous connecterez à distance, en général en SSH, et tout ce que vous ferez passera par un shell — l'interpréteur de commandes qui traduit ce que vous tapez en actions système.
Ce n'est pas un choix esthétique. La ligne de commande est reproductible (une commande se copie, se scripte, s'automatise), économe en ressources (pas d'interface graphique à charger sur un serveur qui doit consacrer sa mémoire et son CPU aux applications qu'il héberge) et universelle : les mêmes commandes fonctionnent en console locale, en SSH, ou dans un script exécuté automatiquement à 3 h du matin. C'est cette maîtrise du shell que vous allez construire dans ce chapitre, avant d'aborder les commandes utilisateur puis les commandes root dans les chapitres suivants.
Chez l'ESN Green Data, détachée sur le salon TechByte pour surveiller des serveurs Linux hébergeant des applications d'intelligence artificielle, cette compétence est le point de départ de tout : avant de diagnostiquer une lenteur ou de redémarrer un service, il faut savoir se connecter, se repérer et lire l'état de la machine — sans interface graphique, souvent depuis un poste distant.
Anatomie d'une commande
Une commande shell suit toujours la même structure :
commande [options] [arguments]- la commande est le nom du programme à exécuter (
ls,cat,systemctl…) ; - les options modifient son comportement ; elles existent sous forme courte (
-l) ou longue (--all), et peuvent se combiner (ls -laéquivaut àls -l -a) ; - les arguments sont les éléments sur lesquels la commande agit (un fichier, un répertoire, un nom de service).
Le shell affiche un prompt avant chaque commande, qui varie selon vos privilèges :
green-data@techbyte-srv01:~$Le symbole $ en fin de prompt indique un compte utilisateur standard. Vous croiserez aussi le symbole #, réservé au compte root — le super-utilisateur aux pouvoirs quasi illimités. Retenez déjà cette distinction visuelle : elle vous évitera bien des frayeurs, et sera au cœur du chapitre 5 de ce cours.
Se connecter et se repérer sur un serveur
Pour administrer un serveur distant, la connexion se fait généralement via SSH (Secure Shell) :
ssh green-data@techbyte-srv01.localUne fois connecté, quelques commandes suffisent à prendre la mesure de la machine :
| Commande | Rôle |
|---|---|
whoami | Affiche l'utilisateur actuellement connecté |
hostname | Affiche le nom de la machine |
pwd | Affiche le répertoire courant (print working directory) |
date | Affiche la date et l'heure système |
uname -a | Affiche le noyau, l'architecture et des informations système |
$ whoami
green-data
$ hostname
techbyte-srv01
$ uname -a
Linux techbyte-srv01 6.8.0-generic #1 SMP x86_64 GNU/LinuxCe réflexe de vérification — qui suis-je, sur quelle machine, avec quel noyau — est la première chose à faire en arrivant sur un serveur inconnu du salon TechByte : il évite de lancer une commande sensible sur la mauvaise machine.
Trouver de l'aide sans quitter le terminal
Aucun administrateur ne connaît toutes les options de toutes les commandes par cœur. Trois réflexes suffisent :
man <commande>ouvre le manuel complet de la commande, avec description, options et exemples (toucheqpour quitter) ;<commande> --helpaffiche un résumé rapide des options, directement dans le terminal ;info <commande>propose une documentation plus détaillée pour certains outils GNU, sous forme de pages navigables.
$ man ls
LS(1) User Commands LS(1)
NAME
ls - list directory contents
...Prenez l'habitude de consulter man avant de deviner une option : c'est plus fiable qu'une recherche web, et ça fonctionne même sans accès Internet sur un serveur isolé.
La hiérarchie du système de fichiers (FHS)
Sous Linux, tout part d'une racine unique, notée / — contrairement à Windows et ses lettres de lecteur (C:, D:). Chaque périphérique, chaque partition vient se greffer quelque part dans cette arborescence unique. Cette organisation suit une norme, le Filesystem Hierarchy Standard (FHS), que la plupart des distributions respectent.
| Répertoire | Contenu |
|---|---|
/ | Racine de l'arborescence |
/bin, /usr/bin | Commandes de base utilisables par tout utilisateur |
/sbin, /usr/sbin | Commandes d'administration système (réservées à root) |
/etc | Fichiers de configuration du système et des services |
/home | Répertoires personnels des utilisateurs |
/root | Répertoire personnel de l'utilisateur root |
/var | Données variables : journaux (/var/log), files d'attente, caches |
/tmp | Fichiers temporaires, effacés au redémarrage |
/usr | Applications et données non essentielles au démarrage minimal |
/opt | Logiciels tiers installés manuellement |
/dev | Fichiers représentant les périphériques matériels |
/proc | Système de fichiers virtuel donnant accès à l'état du noyau et des processus en cours |
Cette carte mentale est ce qui vous permettra, sur n'importe quelle distribution, de savoir où chercher : un problème de configuration se règle dans /etc, un espace disque qui se remplit anormalement vite se surveille souvent du côté de /var/log.
Chemins absolus et relatifs
Un chemin peut s'exprimer de deux façons :
- chemin absolu : il part toujours de la racine
/, par exemple/var/log/syslog; - chemin relatif : il part de l'endroit où vous vous trouvez, par exemple
log/syslogsi vous êtes déjà dans/var.
Deux raccourcis reviennent sans cesse :
$ cd . # reste dans le répertoire courant
$ cd .. # remonte au répertoire parent
$ cd ~ # revient dans votre répertoire personnel (home)
$ cd - # revient au répertoire précédentUn chemin absolu fonctionne toujours, quel que soit l'endroit où vous êtes — c'est la valeur sûre dans un script ou une documentation d'intervention.
Variables d'environnement
Le shell garde en mémoire des informations sous forme de variables d'environnement, consultables avec echo en préfixant leur nom d'un $ :
$ echo $HOME
/home/green-data
$ echo $USER
green-data
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/bin$HOME pointe vers votre répertoire personnel, $USER contient votre nom d'utilisateur, et $PATH liste les répertoires dans lesquels le shell cherche les exécutables quand vous tapez une commande — c'est grâce à $PATH que taper ls suffit, sans avoir à écrire /usr/bin/ls en entier. La commande env affiche l'ensemble des variables actives d'un coup.
Le shell par défaut : bash
Sur la quasi-totalité des distributions Debian et Ubuntu, le shell par défaut est bash (Bourne Again Shell). Il lit sa configuration dans des fichiers propres à chaque utilisateur, notamment ~/.bashrc pour les sessions interactives. Vous apprendrez à personnaliser ces fichiers — alias, variables, invite de commande — dans le chapitre suivant, une fois votre serveur installé.
Retenez pour l'instant l'essentiel : un shell, un prompt qui vous dit qui vous êtes, une arborescence unique dont vous connaissez désormais les grands repères, et les bons réflexes pour trouver de l'aide sans jamais rester bloqué. C'est le socle sur lequel reposent toutes les commandes que vous allez maintenant découvrir.