Linux est le système d'exploitation de référence pour les serveurs et l'infrastructure IT. Cette section couvre les commandes essentielles et les bonnes pratiques d'administration système.
# Navigation
pwd # Afficher le répertoire actuel
ls # Lister les fichiers
ls -la # Liste détaillée avec fichiers cachés
ls -lh # Tailles lisibles (human-readable)
cd /var/www # Changer de répertoire
cd .. # Remonter d'un niveau
cd ~ # Aller au home directory
cd - # Revenir au répertoire précédent
# Manipulation fichiers
touch fichier.txt # Créer un fichier vide
mkdir dossier # Créer un dossier
mkdir -p a/b/c # Créer une arborescence
cp source dest # Copier
cp -r dossier/ dest/ # Copier récursivement
mv ancien nouveau # Renommer/déplacer
rm fichier.txt # Supprimer un fichier
rm -rf dossier/ # Supprimer récursivement (DANGER!)
rmdir dossier # Supprimer un dossier vide
# Recherche
find / -name "*.log" # Trouver tous les fichiers .log
find . -type f -size +10M # Fichiers > 10MB
locate fichier # Recherche rapide (base de données)
which python3 # Trouver l'emplacement d'une commande
whereis nginx # Localiser binaire, source, man page
# Afficher contenu
cat fichier.txt # Tout le fichier
head fichier.txt # 10 premières lignes
head -n 20 fichier.txt # 20 premières lignes
tail fichier.txt # 10 dernières lignes
tail -n 50 fichier.txt # 50 dernières lignes
tail -f /var/log/syslog # Suivre en temps réel
# Pagination
less fichier.txt # Naviguer dans un fichier (q pour quitter)
more fichier.txt # Affichage page par page
# Édition
nano fichier.txt # Éditeur simple
vim fichier.txt # Éditeur avancé
vi fichier.txt # Vi classique
# Compter
wc fichier.txt # Lignes, mots, caractères
wc -l fichier.txt # Nombre de lignes
# Recherche dans fichiers
grep "erreur" fichier.log # Chercher "erreur"
grep -r "TODO" . # Recherche récursive
grep -i "error" fichier.log # Insensible à la casse
grep -v "debug" fichier.log # Exclure les lignes avec "debug"
grep -n "error" fichier.log # Avec numéros de ligne
# Voir les permissions
ls -l fichier.txt
# -rw-r--r-- 1 user group 1024 Jan 1 12:00 fichier.txt
# ^^^ ^^^ ^^^
# | | |
# | | +-- Autres (r = lecture)
# | +------ Groupe (r = lecture)
# +---------- Propriétaire (rw = lecture + écriture)
# Changer permissions (chmod)
chmod 755 script.sh # rwxr-xr-x
chmod +x script.sh # Ajouter exécution
chmod -w fichier.txt # Retirer écriture
chmod u+x script.sh # User: ajout exec
chmod g-w fichier.txt # Group: retrait write
chmod o+r fichier.txt # Others: ajout read
# Permissions numériques
# 4 = read, 2 = write, 1 = execute
# 755 = rwxr-xr-x (7=4+2+1, 5=4+1, 5=4+1)
# 644 = rw-r--r-- (6=4+2, 4, 4)
# 700 = rwx------ (propriétaire seul)
# Changer propriétaire
chown user:group fichier.txt # Changer user et group
chown user fichier.txt # Changer seulement user
chown -R user:group dossier/ # Récursif
# Changer uniquement le groupe
chgrp group fichier.txt
# Lister processus
ps aux # Tous les processus
ps aux | grep nginx # Chercher nginx
top # Monitoring temps réel (q pour quitter)
htop # Top amélioré (si installé)
# Informations détaillées
pgrep -a nginx # Trouver PID d'un processus
pidof nginx # PID de nginx
# Gestion processus
kill 1234 # Arrêter proprement (SIGTERM)
kill -9 1234 # Forcer l'arrêt (SIGKILL)
killall nginx # Tuer tous les processus nginx
pkill -f "python script.py" # Tuer par nom
# Priorités
nice -n 10 ./script.sh # Lancer avec priorité basse
renice -n -5 -p 1234 # Changer priorité d'un processus
# Background/Foreground
./script.sh & # Lancer en arrière-plan
jobs # Lister jobs en background
fg %1 # Ramener job 1 au foreground
bg %1 # Continuer job 1 en background
Ctrl+Z # Suspendre processus actuel
disown -h %1 # Détacher job du terminal
# Screen & tmux (sessions persistantes)
screen # Nouvelle session
screen -ls # Lister sessions
screen -r # Rattacher session
Ctrl+A D # Détacher session
tmux # Nouvelle session tmux
tmux ls # Lister sessions
tmux attach # Rattacher dernière session
# Informations générales
uname -a # Infos système
hostname # Nom de la machine
uptime # Temps depuis démarrage
date # Date et heure
cal # Calendrier
# CPU
lscpu # Infos CPU détaillées
cat /proc/cpuinfo # Infos processeur
nproc # Nombre de cœurs
# Mémoire
free -h # Utilisation mémoire
cat /proc/meminfo # Détails mémoire
# Disque
df -h # Espace disque
du -sh * # Taille des dossiers
du -h --max-depth=1 # Taille niveau 1
lsblk # Lister disques et partitions
fdisk -l # Partitions détaillées (root)
# Matériel
lshw # Liste matériel (root)
lspci # Périphériques PCI
lsusb # Périphériques USB
dmidecode # Infos BIOS/DMI (root)
# Distribution
cat /etc/os-release # Infos distribution
lsb_release -a # Version Ubuntu/Debian
# Interfaces réseau
ip addr # Afficher IP et interfaces
ip a # Version courte
ifconfig # Ancienne commande (deprecated)
ip link show # État interfaces
# Configuration
ip addr add 192.168.1.100/24 dev eth0 # Ajouter IP
ip link set eth0 up # Activer interface
ip link set eth0 down # Désactiver interface
# Routage
ip route # Table de routage
route -n # Ancienne syntaxe
traceroute google.com # Tracer route
# DNS
cat /etc/resolv.conf # Serveurs DNS
nslookup google.com # Résolution DNS
dig google.com # DNS détaillé
host google.com # DNS simple
# Connectivité
ping -c 4 google.com # Test connexion (4 paquets)
curl -I https://example.com # Headers HTTP
wget https://example.com/file # Télécharger fichier
# Ports et connexions
netstat -tulpn # Ports écoutés
ss -tulpn # Alternative moderne
lsof -i :80 # Processus sur port 80
nc -zv host 22 # Tester port
# Firewall
sudo ufw status # État firewall (Ubuntu)
sudo ufw enable # Activer firewall
sudo ufw allow 22 # Autoriser SSH
sudo ufw allow 80/tcp # Autoriser HTTP
sudo ufw deny 23 # Bloquer telnet
# iptables (avancé)
sudo iptables -L # Lister règles
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# Mise à jour
sudo apt update # Actualiser liste paquets
sudo apt upgrade # Installer mises à jour
sudo apt full-upgrade # Upgrade complet
sudo apt dist-upgrade # Upgrade distribution
# Installation/suppression
sudo apt install nginx # Installer nginx
sudo apt install php mysql-server # Installer plusieurs
sudo apt remove nginx # Désinstaller
sudo apt purge nginx # Désinstaller + configs
sudo apt autoremove # Nettoyer dépendances
# Recherche
apt search nginx # Chercher paquet
apt show nginx # Infos sur paquet
apt list --installed # Paquets installés
apt list --upgradable # Mises à jour disponibles
sudo yum update # Mise à jour
sudo yum install nginx # Installer
sudo yum remove nginx # Désinstaller
sudo yum search nginx # Chercher
yum list installed # Paquets installés
# État services
sudo systemctl status nginx # État nginx
sudo systemctl is-active nginx # Actif?
sudo systemctl is-enabled nginx # Démarre au boot?
# Contrôle services
sudo systemctl start nginx # Démarrer
sudo systemctl stop nginx # Arrêter
sudo systemctl restart nginx # Redémarrer
sudo systemctl reload nginx # Recharger config
# Démarrage automatique
sudo systemctl enable nginx # Activer au boot
sudo systemctl disable nginx # Désactiver au boot
# Logs
sudo journalctl -u nginx # Logs du service
sudo journalctl -u nginx -f # Suivre logs
sudo journalctl --since "1 hour ago" # Dernière heure
sudo journalctl --since today # Aujourd'hui
# Lister services
systemctl list-units --type=service # Tous services
systemctl list-unit-files --type=service # Avec état
# tar (archive sans compression)
tar -cvf archive.tar dossier/ # Créer
tar -xvf archive.tar # Extraire
tar -tvf archive.tar # Lister contenu
# tar.gz (gzip)
tar -czvf archive.tar.gz dossier/ # Créer
tar -xzvf archive.tar.gz # Extraire
# tar.bz2 (bzip2, meilleure compression)
tar -cjvf archive.tar.bz2 dossier/ # Créer
tar -xjvf archive.tar.bz2 # Extraire
# zip
zip -r archive.zip dossier/ # Créer
unzip archive.zip # Extraire
unzip -l archive.zip # Lister contenu
# Compression individuelle
gzip fichier.txt # Créer fichier.txt.gz
gunzip fichier.txt.gz # Décompresser
bzip2 fichier.txt # Créer fichier.txt.bz2
bunzip2 fichier.txt.bz2 # Décompresser
# Informations
whoami # Utilisateur actuel
id # UID, GID, groupes
w # Utilisateurs connectés
last # Dernières connexions
# Gestion utilisateurs
sudo adduser john # Créer utilisateur (interactif)
sudo useradd -m john # Créer utilisateur (manuel)
sudo userdel john # Supprimer utilisateur
sudo userdel -r john # Supprimer + home directory
sudo passwd john # Changer mot de passe
# Groupes
sudo groupadd dev # Créer groupe
sudo usermod -aG dev john # Ajouter user à groupe
sudo gpasswd -d john dev # Retirer user du groupe
groups john # Groupes d'un user
# Sudo
sudo visudo # Éditer sudoers
# Ajouter: john ALL=(ALL:ALL) ALL
# Switch user
su - john # Devenir john
sudo -i # Shell root
sudo -u john commande # Exécuter en tant que john
# Éditer crontab
crontab -e # Éditer pour user actuel
sudo crontab -e # Éditer pour root
crontab -l # Lister tâches
crontab -r # Supprimer toutes les tâches
# Format crontab
# ┌─── Minute (0-59)
# │ ┌─── Heure (0-23)
# │ │ ┌─── Jour du mois (1-31)
# │ │ │ ┌─── Mois (1-12)
# │ │ │ │ ┌─── Jour de la semaine (0-7, 0 et 7 = dimanche)
# * * * * * commande
# Exemples
0 2 * * * /script/backup.sh # 2h du matin
*/5 * * * * /script/check.sh # Toutes les 5 minutes
0 */2 * * * /script/hourly.sh # Toutes les 2 heures
0 9 * * 1 /script/monday.sh # Lundi 9h
0 0 1 * * /script/monthly.sh # 1er du mois à minuit
@reboot /script/startup.sh # Au démarrage
@daily /script/daily.sh # Quotidien
@weekly /script/weekly.sh # Hebdomadaire