00 - Pourquoi Linux meme si tu codes sur Mac ou Windows
Ce que tu vas apprendre
- Pourquoi Linux est partout dans la vie d'un dev (serveurs, Docker, CI/CD, WSL)
- Ce que cette serie de 23 articles couvre
- Le kit de survie minimum pour ta première connexion SSH
Prerequisites
Aucun. Si tu sais allumer un ordinateur, tu es pret.
Ma première connexion SSH en production
C'etait un vendredi soir, évidemment. Un bug critique en prod, le lead dev en vacances, et moi avec trois mois d'experience. Mon manager me donne une IP, un login, et me dit "connecte-toi au serveur, regarde les logs". J'ai tape ssh deploy@51.38.xxx.xxx, le terminal est devenu noir avec juste un $, et j'ai eu un moment de vide total. Pas de bureau, pas de souris, pas d'explorateur de fichiers. Juste moi et un curseur clignotant.
J'ai fait ls. Puis cd /var/log. Puis j'ai googlé "how to read logs linux". Trente minutes plus tard, j'avais trouve l'erreur avec grep "ERROR" application.log | tail -20. Le fix etait un fichier de config mal formate.
Ce soir-la, j'ai compris un truc : peu importe que tu codes sur macOS avec VSCode et un trackpad magique, a un moment, tu te retrouves face a un terminal Linux. Et ce moment arrive toujours quand c'est urgent.
"Je suis dev front, Linux c'est pas pour moi"
J'entends cette phrase régulièrement. Sauf que :
- Ton
npm installtourne dans un shell. Quand ca plante, tu lis des erreurs Linux. - Ton Dockerfile hérité de
node:20-alpineouubuntu:22.04. C'est du Linux. - Ta CI GitHub Actions tourne sur
ubuntu-latest. Chaque commande de ton workflow est du bash Linux. - Si tu utilises WSL sous Windows, tu as litteralement un noyau Linux sur ta machine.
- Quand tu deploies sur Vercel, Netlify, ou AWS, ton code tourne sur Linux.
Meme si tu ne fais "que du React", tu interagis avec Linux plusieurs fois par jour sans t'en rendre compte. La différence entre un dev qui galere et un dev efficace, c'est souvent la maîtrise du terminal.
Ce que cette serie couvre
23 articles, du basique au avance, pour maîtriser Linux en tant que développeur :
| # | Sujet | Slug |
|---|---|---|
| 00 | Introduction et pourquoi Linux | Cet article |
| 01 | Le terminal, bash, zsh | Terminal |
| 02 | Fichiers et répertoires | Fichiers |
| 03 | Permissions | Permissions |
| 04 | Utilisateurs et groupes | Utilisateurs |
| 05 | Editeurs (nano, vim, sed, awk) | Editeurs |
| 06 | Pipes et redirections | Pipes |
| 07 | grep et find en profondeur | Grep/Find |
| 08 | Processus et jobs | Processus |
| 09 | Services et systemd | Services |
| 10 | Réseau (ip, ss, curl, wget) | Réseau |
| 11 | SSH et transferts | SSH |
| 12 | Variables d'environnement | Variables |
| 13 | Scripts bash | Scripts bash |
| 14 | Scripts avances | Scripts avances |
| 15 | Cron et automatisation | Cron |
| 16 | Gestion des paquets | Paquets |
| 17 | Stockage et disques | Stockage |
| 18 | Monitoring et performances | Monitoring |
| 19 | Docker et conteneurs | Docker |
| 20 | Logs et journalctl | Logs |
| 21 | Sécurité basique | Sécurité |
| 22 | WSL pour les devs Windows | WSL |
Chaque article est independant, mais je te conseille de les lire dans l'ordre si tu debutes.
Le kit de survie minimum
Avant de plonger dans la serie, voici les 10 commandes qui te sauveront 90% du temps lors de ta première connexion SSH :
bashpwd # Ou suis-je ?
ls -la # Qu'est-ce qu'il y a ici ?
cd /chemin/vers/ # Aller quelque part
cat fichier.txt # Lire un fichier
tail -f fichier.log # Suivre un log en temps reel
grep "motif" fichier # Chercher dans un fichier
ps aux # Voir les processus
sudo systemctl status nginx # Etat d'un service
df -h # Espace disque
free -h # Memoire disponible
Avec ces 10 commandes, tu peux diagnostiquer 80% des problèmes courants sur un serveur. Le reste, c'est du perfectionnement.
Quel Linux utiliser pour apprendre ?
Tu n'as pas besoin d'installer Linux en dual-boot. Voici les options par ordre de simplicité :
bash# Si tu es sur Windows : WSL (Windows Subsystem for Linux)
wsl --install -d Ubuntu
# Si tu es sur Mac : le terminal natif est deja Unix-like
# La plupart des commandes Linux fonctionnent
# Si tu veux un environnement jetable : Docker
docker run -it ubuntu:22.04 bash
# Si tu veux une VM : VirtualBox + Ubuntu Server
# Telechargement sur ubuntu.com/download/server
Mon conseil : WSL sous Windows ou Docker sont les meilleurs choix pour débuter. Tu peux tout casser sans consequence, et recommencer en 30 secondes.
Un détail qui change tout
Linux est case-sensitive. Fichier.txt, fichier.txt et FICHIER.TXT sont trois fichiers différents. Ca a l'air anodin, mais ca provoque des bugs vicieux quand tu développés sur macOS (case-insensitive par défaut) et que tu deploies sur Linux.
bash$ touch Fichier.txt fichier.txt FICHIER.TXT
$ ls
FICHIER.TXT Fichier.txt fichier.txt
# Trois fichiers distincts. Sur macOS, ca aurait ecrase le meme fichier.
J'ai deja vu un deploy planter parce qu'un import JavaScript referençait Utils.js alors que le fichier s'appelait utils.js. Ca marchait en local sur Mac, ca cassait en prod sur Linux. Tu es prevenu.
Si tu veux approfondir le sujet Linux au-delà de cette serie, paltemps.fr propose d'autres ressources complémentaires pour les développeurs francophones.
Résumé
- Linux est partout : serveurs, Docker, CI/CD, WSL. Impossible de l'éviter en tant que dev.
- Tu n'as pas besoin d'abandonner ton OS. WSL ou Docker suffisent pour apprendre.
- 10 commandes couvrent 80% des situations d'urgence en production.
- Cette serie de 23 articles te rendra autonome sur un terminal Linux.
Suivant : Le terminal, bash et zsh