1. La philosophie de la ligne de commande Linux
Sous Linux, tout se fait avec du texte : vous tapez une commande, le système l'exécute et affiche le résultat. C'est puissant parce que vous pouvez combiner des commandes, automatiser des tâches, et administrer votre serveur à distance depuis n'importe quel terminal dans le monde.
La structure d'une commande Linux :
commande options arguments
| | |
ls -la /var/www- Commande : l'action à effectuer (
ls,cd,rm...) - Options : modifient le comportement, précédées de
-ou--(-l,--help) - Arguments : ce sur quoi la commande agit (fichier, dossier, texte...)
Astuce indispensable : Appuyez sur Tab pour auto-compléter les noms de fichiers et commandes. Appuyez sur les flèches ↑ et ↓ pour naviguer dans l'historique de vos commandes précédentes.
2. Navigation dans les dossiers
# Afficher le dossier courant (Print Working Directory)
pwd
# Résultat : /home/mon-user
# Lister les fichiers du dossier courant
ls
# Lister avec les permissions, taille et date (-l = long, -a = tous les fichiers dont cachés)
ls -la
# Lister un dossier spécifique
ls -la /var/www/
# Changer de dossier
cd /var/www/html
# Remonter d'un niveau
cd ..
# Aller directement dans votre dossier personnel
cd ~
# ou simplement
cd
# Aller dans le dernier dossier visité
cd -Les chemins en Linux :
/= racine du système (tout part de là)~= votre dossier personnel (/home/mon-user).= dossier courant..= dossier parent
3. Gestion des fichiers et dossiers
# Créer un fichier vide
touch mon-fichier.txt
# Créer un dossier
mkdir mon-dossier
# Créer plusieurs dossiers imbriqués en une fois (-p = parents)
mkdir -p /var/www/monsite/public/images
# Copier un fichier
cp source.txt destination.txt
# Copier un dossier entier (-r = récursif)
cp -r mon-dossier/ copie-du-dossier/
# Déplacer (ou renommer) un fichier
mv ancien-nom.txt nouveau-nom.txt
mv fichier.txt /var/www/html/
# Supprimer un fichier
rm fichier.txt
# Supprimer un dossier et tout son contenu (-r = récursif)
rm -r mon-dossier/
# Supprimer sans confirmation (-f = force) - ATTENTION, irréversible
rm -rf mon-dossier/rm -rf est irréversible. Il n'y a pas de corbeille sous Linux en ligne de commande. Un rm -rf /var/www/ supprime définitivement tout votre site. Vérifiez toujours votre commande avant d'appuyer sur Entrée.
4. Lire et éditer des fichiers
# Afficher le contenu d'un fichier
cat fichier.txt
# Afficher avec numéros de lignes
cat -n fichier.txt
# Lire un long fichier page par page (q pour quitter, espace pour avancer)
less fichier.txt
# Afficher les 10 premières lignes
head fichier.txt
# Afficher les 10 dernières lignes
tail fichier.txt
# Suivre un fichier en temps réel (très utile pour les logs)
tail -f /var/log/nginx/access.log
# Chercher un texte dans un fichier
grep "erreur" fichier.log
# Chercher sans distinguer majuscules/minuscules (-i)
grep -i "error" fichier.log
# Chercher dans tous les fichiers d'un dossier (-r = récursif)
grep -r "mot-de-passe" /var/www/
# Éditer un fichier avec nano (plus simple)
nano fichier.txt
# Ctrl+X pour quitter, Y pour sauvegarder
# Éditer avec vim (plus puissant, courbe d'apprentissage plus raide)
vim fichier.txt
# i pour entrer en mode insertion, Esc puis :wq pour sauvegarder et quitter5. Permissions et propriétés
Chaque fichier Linux a des permissions pour trois types d'utilisateurs : le propriétaire, le groupe, et tous les autres.
# Voir les permissions d'un fichier
ls -la fichier.txt
# Résultat : -rw-r--r-- 1 root root 1234 Jan 15 10:00 fichier.txt
# ^^^^^^^^^^^ propriétaire
# | r = lecture (read)
# | w = écriture (write)
# | x = exécution (execute)
# Changer les permissions
chmod 644 fichier.txt # Propriétaire: lecture+écriture, autres: lecture seule
chmod 755 mon-dossier/ # Dossier accessible et exécutable par tous
chmod 600 .env # Uniquement le propriétaire peut lire et écrire
chmod +x script.sh # Rendre un script exécutable
# Changer le propriétaire d'un fichier
chown mon-user fichier.txt
# Changer propriétaire et groupe
chown mon-user:mon-groupe fichier.txt
# Changer récursivement pour tout un dossier
chown -R www-data:www-data /var/www/html/| Permission | Valeur | Signification |
|---|---|---|
rw-r--r-- |
644 | Fichier normal (lisible par tous, éditable par le propriétaire) |
rwxr-xr-x |
755 | Script ou dossier (exécutable/traversable par tous) |
rw------- |
600 | Fichier privé (clé SSH, .env) |
rwx------ |
700 | Dossier privé |
6. Gestion des processus et services
# Voir tous les processus en cours
ps aux
# Chercher un processus spécifique
ps aux | grep nginx
# Voir les processus en temps réel (interface interactive)
top
# Appuyez sur q pour quitter, P pour trier par CPU, M pour trier par RAM
# Version améliorée de top (à installer)
htop
# Tuer un processus par son PID (numéro de processus)
kill 1234
# Forcer l'arrêt d'un processus récalcitrant
kill -9 1234
# Tuer tous les processus d'un programme
pkill nginx
# ── Systemd (gestion des services) ──────────────────────────────
# Voir l'état d'un service
systemctl status nginx
# Démarrer un service
systemctl start nginx
# Arrêter un service
systemctl stop nginx
# Redémarrer un service
systemctl restart nginx
# Recharger la config sans redémarrer
systemctl reload nginx
# Activer un service au démarrage du serveur
systemctl enable nginx
# Désactiver un service au démarrage
systemctl disable nginx
# Voir tous les services actifs
systemctl list-units --type=service --state=active7. Réseau et connectivité
# Voir les interfaces réseau et adresses IP
ip a
# ou (plus ancien)
ifconfig
# Voir les connexions réseau actives et ports en écoute
ss -tulpn
# -t = TCP, -u = UDP, -l = en écoute, -p = processus, -n = numérique
# Tester si un hôte est joignable
ping google.com
ping -c 4 google.com # Seulement 4 pings
# Tracer le chemin réseau jusqu'à un hôte
traceroute google.com
# Voir le DNS résolu pour un domaine
nslookup mondomaine.fr
dig mondomaine.fr
# Télécharger un fichier depuis internet
wget https://exemple.com/fichier.zip
curl -O https://exemple.com/fichier.zip
# Afficher le contenu d'une URL
curl https://api.exemple.com/status
# ── UFW (pare-feu) ───────────────────────────────────────────────
systemctl status ufw # État du pare-feu
ufw status # Règles actives
ufw allow 80/tcp # Autoriser le port 80
ufw deny 3306 # Bloquer le port MySQL
ufw delete allow 80/tcp # Supprimer une règle8. Gestion des paquets (Debian/Ubuntu)
# Mettre à jour la liste des paquets disponibles
apt update
# Installer les mises à jour système
apt upgrade -y
# Installer un paquet
apt install nginx -y
# Supprimer un paquet (garde les configs)
apt remove nginx
# Supprimer un paquet ET ses fichiers de config
apt purge nginx
# Supprimer les paquets inutilisés
apt autoremove
# Chercher un paquet
apt search nom-du-paquet
# Voir les infos d'un paquet
apt show nginx
# Voir les paquets installés
dpkg -l9. Espace disque et mémoire
# Voir l'espace disque disponible (-h = human readable)
df -h
# Voir la taille d'un dossier
du -sh /var/www/
# Voir les 10 plus gros dossiers
du -h /var/ | sort -rh | head -10
# Voir la mémoire RAM utilisée
free -h
# Voir l'utilisation des ressources en temps réel
top
htop # Version améliorée
# Voir l'uptime du serveur
uptime
# Informations système
uname -a
# Version de la distribution
cat /etc/os-release10. Logs et débogage
# Voir les logs système
journalctl
# Logs d'un service spécifique
journalctl -u nginx
# Logs d'un service en temps réel
journalctl -u nginx -f
# Logs depuis le dernier démarrage
journalctl -b
# Logs des X dernières minutes
journalctl --since "10 minutes ago"
# Logs Nginx
tail -f /var/log/nginx/access.log # Accès
tail -f /var/log/nginx/error.log # Erreurs
# Logs SSH
tail -f /var/log/auth.log
# Logs système généraux
tail -f /var/log/syslog11. Commandes utilitaires indispensables
# Exécuter une commande en tant que root
sudo ma-commande
# Devenir root temporairement
sudo -i
# ou
sudo su -
# Voir l'historique de vos commandes
history
# Rechercher une commande dans l'historique
history | grep nginx
# Effacer l'écran
clear
# ou Ctrl+L
# Afficher la date et l'heure
date
# Créer un alias (raccourci de commande)
alias ll='ls -la'
alias maj='apt update && apt upgrade -y'
# Pour le rendre permanent, ajoutez-le dans ~/.bashrc
# Passer plusieurs commandes en une ligne
apt update && apt upgrade -y && apt autoremove
# && = exécute la suivante seulement si la précédente réussit
# ; = exécute toujours la suivante
# Rediriger la sortie d'une commande vers un fichier
ls -la > liste-fichiers.txt # Écrase le fichier
ls -la >> liste-fichiers.txt # Ajoute à la fin
# Passer la sortie d'une commande à une autre (pipe)
ps aux | grep nginx
cat access.log | grep "404" | wc -l # Compter les erreurs 404
# Trouver un fichier
find / -name "nginx.conf" 2>/dev/null
find /var/www -name "*.php" -mtime -7 # Fichiers PHP modifiés ces 7 derniers jours
# Voir quelle commande est exécutée
which nginx
which python3
# Aide sur une commande
man ls # Manuel complet
ls --help # Aide courte12. Raccourcis clavier du terminal
| Raccourci | Action |
|---|---|
Tab |
Auto-complétion |
↑ / ↓ |
Navigation dans l'historique |
Ctrl+C |
Annuler la commande en cours |
Ctrl+Z |
Suspendre la commande en cours |
Ctrl+L |
Effacer l'écran |
Ctrl+A |
Aller au début de la ligne |
Ctrl+E |
Aller à la fin de la ligne |
Ctrl+R |
Rechercher dans l'historique |
Ctrl+D |
Déconnexion (équivalent de exit) |
Vous avez maintenant les bases. Linux se maîtrise avec la pratique - n'hésitez pas à expérimenter sur votre VPS. En cas de doute sur une commande, tapez man nom-commande pour accéder au manuel complet, ou nom-commande --help pour un résumé rapide.