Linux pour les devs - 00 - Pourquoi Linux meme si tu codes sur Mac ou Windows

Pourquoi tout dev devrait maîtriser Linux, ce que cette serie couvre, et le kit de survie minimum pour ne pas paniquer en SSH.

  1. 01 Linux pour les devs - 00 - Pourquoi Linux meme si tu codes sur Mac ou Windows
  2. 02 Linux pour les devs - 01 - Le terminal, bash et zsh
  3. 03 Linux pour les devs - 02 - Fichiers et répertoires
  4. 04 Linux pour les devs - 03 - Permissions et droits d'acces
  5. 05 Linux pour les devs - 04 - Utilisateurs, groupes et sudo
  6. 06 Linux pour les devs - 05 - nano, vim, sed et awk
  7. 07 Linux pour les devs - 06 - Pipes et redirections
  8. 08 Linux pour les devs - 07 - grep et find en profondeur
  9. 09 Linux pour les devs - 08 - Les processus : comprendre ce qui tourne sur ta machine
  10. 10 Linux pour les devs - 09 - systemd : gerer tes services comme un pro
  11. 11 Linux pour les devs - 10 - Le réseau : comprendre ce qui passe par le fil
  12. 12 Linux pour les devs - 11 - Le firewall : contrôler qui entre et qui sort
  13. 13 Linux pour les devs - 12 - SSH : l'acces distant sécurisé
  14. 14 Linux pour les devs - 13 - Les variables d'environnement : configurer sans hardcoder
  15. 15 Linux pour les devs - 14 - Scripts bash : automatiser pour ne plus se répéter
  16. 16 Linux pour les devs - 15 - cron : les taches planifiees
  17. 17 Linux pour les devs - 16 - Les logs : lire, filtrer, comprendre
  18. 18 Linux pour les devs - 17 - Stockage et disques
  19. 19 Linux pour les devs - 18 - Les gestionnaires de paquets
  20. 20 Linux pour les devs - 19 - Les conteneurs sans Docker
  21. 21 Linux pour les devs - 20 - Securiser un serveur Linux
  22. 22 Linux pour les devs - 21 - Performance et diagnostic
  23. 23 Linux pour les devs - 22 - tmux : le multiplexeur de terminal
  24. 24 Linux pour les devs - 23 - Glossaire Linux

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 install tourne dans un shell. Quand ca plante, tu lis des erreurs Linux.
  • Ton Dockerfile hérité de node:20-alpine ou ubuntu: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

Sources

Réservez un audit gratuit de 30 minutes. Je vous montre concrètement ce qu'on peut automatiser.