Système Linux

Contrôler Linux en mode commande

Linux est avant tout un shell. Découvrez le jeu de commandes usuelles réservé aux utilisateurs, puis les commandes plus sensibles nécessitant les privilèges super-utilisateur (root). Apprenez à gérer fichiers, paquets, utilisateurs et processus.

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.local

Une fois connecté, quelques commandes suffisent à prendre la mesure de la machine :

CommandeRôle
whoamiAffiche l'utilisateur actuellement connecté
hostnameAffiche le nom de la machine
pwdAffiche le répertoire courant (print working directory)
dateAffiche la date et l'heure système
uname -aAffiche 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/Linux

Ce 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 (touche q pour quitter) ;
  • <commande> --help affiche 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épertoireContenu
/Racine de l'arborescence
/bin, /usr/binCommandes de base utilisables par tout utilisateur
/sbin, /usr/sbinCommandes d'administration système (réservées à root)
/etcFichiers de configuration du système et des services
/homeRépertoires personnels des utilisateurs
/rootRépertoire personnel de l'utilisateur root
/varDonnées variables : journaux (/var/log), files d'attente, caches
/tmpFichiers temporaires, effacés au redémarrage
/usrApplications et données non essentielles au démarrage minimal
/optLogiciels tiers installés manuellement
/devFichiers représentant les périphériques matériels
/procSystè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/syslog si 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édent

Un 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.