道場 · Aide-mémoire

Les commandes du Dojo, chapitre par chapitre

Le pense-bête à garder sous la main. 21 chapitres (dont un bonus) + la page 🎩 RHCSA · les commandes essentielles avec une explication courte.
⬇️ PDF ← Le Dojo FR|EN
Notation : <f> = un fichier · <nom> = à remplacer · [..] = optionnel · | = « ou ». Beaucoup de commandes système demandent sudo (droits admin).
CH 1Les fondations⬜
pwdaffiche le dossier courant (« où suis-je ? »)
whoamile nom de l'utilisateur courant
ididentité complète : uid, gid, groupes
lsliste le contenu d'un dossier
ls -laliste tout, fichiers cachés + détails
man <cmd>le manuel d'une commande (q pour quitter)
<cmd> --helpl'aide rapide d'une commande
CH 2Navigation⬜
cd <dossier>entre dans un dossier
cd ..remonte d'un niveau
cd ~retour au dossier personnel (ou cd seul)
cd /va à la racine
treeaffiche l'arborescence
absolu vs relatif/home/user (partout) vs Documents (depuis ici)
CH 3Fichiers & dossiers🟩
cat <f>affiche le contenu d'un fichier
mkdir <nom>crée un dossier (-p crée les parents)
touch <f>crée un fichier vide
cp source destcopie un fichier
mv anc nouvdéplace OU renomme
rm <f>supprime (définitif !) · rm -r pour un dossier
jokers * ?rm *.log agit sur plusieurs fichiers
find <où> -nameretrouve des fichiers par nom, en profondeur
ln -s cible liencrée un raccourci (lien symbolique)
mkdir -p d/{a,b,c}plusieurs dossiers d’un coup (accolades)
CH 4Utilisateurs & permissions🟥
ls -llit les droits (ex. -rwxr-xr--)
chmod +x <f>rend un fichier exécutable
chmod 755 <f>droits en chiffres (r=4, w=2, x=1)
chown user:grp <f>change le propriétaire (sudo)
sudo <cmd>exécute en administrateur
chgrp groupe <f>change le groupe d’un fichier
umask 077droits par défaut des nouveaux fichiers
CH 5Éditeurs (nano / vim)🟩
nano <f>éditeur simple (Ctrl+O enregistrer, Ctrl+X quitter)
vim <f>éditeur à modes (i insérer, Échap, :wq enregistrer+quitter)
echo "txt" > fécrit dans un fichier (écrase)
echo "txt" >> fajoute à la fin (sans écraser)
cmd 2> erreurs.txtles erreurs à part
cmd > f 2>&1sortie + erreurs dans un fichier
cmd | tee faffiche ET enregistre
CH 6Recherche & filtrage🟥
head / tail -n <f>le début / la fin d'un fichier
tail -f <f>suit un journal en direct
grep <motif> <f>cherche un texte (-i -n -c -v -r)
cmd1 | cmd2le « pipe » : enchaîne les commandes
wc -lcompte les lignes
cmd > f · >> fredirige la sortie vers un fichier
less <f>lit page par page (q = quitter)
tac <f>le fichier à l’envers
locate <nom>retrouve un fichier (sudo updatedb)
sed 's/a/b/g' <f>remplace du texte
awk -F: '{print $1}' <f>extrait des colonnes
… | xargs <cmd>passe une liste en arguments
CH 7Processus système🟥
ps · ps auxliste les processus
topactivité en temps réel (q pour quitter)
kill <PID>arrête un processus (kill -9 force)
cmd & · jobsarrière-plan · liste des tâches
fg %1 · bg %1au premier plan · en arrière-plan
nohup cmd &survit à la déconnexion
kill -15 / -9 <PID>poliment (TERM) / de force (KILL)
pstree -pl’arbre des processus
pgrep · pkill <nom>trouve / arrête par le nom
CH 8Gestion des utilisateurs🟥
cat /etc/passwdla liste des comptes
sudo useradd -m <nom>crée un utilisateur
sudo passwd <nom>définit son mot de passe
groupsles groupes d'un utilisateur
sudo groupadd <nom>crée un groupe
sudo usermod -aG grp userajoute un user à un groupe
sudo userdel -r <nom>supprime un utilisateur
sudo -i · sudo su -session root (exit pour revenir)
su - <n>prend la session d’un autre compte
sudo -u <n> cmdlance une commande en tant que <n>
sudo -l · sudo !!tes droits sudo · refaire avec sudo
CH 9Services & systemd🟧
systemctl status <svc>l'état d'un service
sudo systemctl start/stopdémarre / arrête un service
sudo systemctl enablele lance au démarrage
fichiers .servicedans /etc/systemd/system/ (ExecStart, After)
journalctl -u <svc> -n 20le journal d’un service
CH 10Déployer un site (nginx)🟧
systemctl status nginxvérifie que nginx tourne
/etc/nginx/la config du serveur web
/var/www/html/les fichiers du site
tail -f …/access.logsuit les visites en direct
curl http://localhostteste le site en ligne de commande
CH 11Réseau & SSH🟧
ip aadresse IP / config réseau
ping <hôte>teste si une machine répond
cat /etc/resolv.confles serveurs DNS
ssh-keygengénère une clé SSH (~/.ssh/)
ssh user@ipconnexion à une machine distante
ssh-keygen -t ed25519crée ta paire de clés
ssh-copy-id user@hôteinstalle ta clé sur le serveur
ssh user@hôtese connecter (exit pour revenir)
scp f user@hôte:/dossiercopie par SSH
~/.ssh/configsurnoms de serveurs (Host …)
CH 12Sécurité & hardening🟧
sudo ufw statusl'état du pare-feu
sudo ufw enableactive le pare-feu · ufw allow <port>
grep Failed …/auth.logrepère les tentatives SSH ratées
sudo fail2ban-client status sshdfail2ban : les IP bannies de la prison SSH
/etc/fail2ban/jail.localtes réglages (maxretry, bantime) · jamais jail.conf
fail2ban-client set sshd unbanip <IP>débannit une IP bloquée par erreur
/etc/ssh/sshd_configdurcir la connexion SSH
sudo visudoqui a le droit d'utiliser sudo
CH 13Système & disque🟧
df -hl'espace disque disponible
du -sh <dossier>la taille d'un dossier
lscpules infos du processeur
free -hla mémoire (regarde available)
uname -ala version du système
apt search · apt showchercher · détails d’un paquet
sudo apt install / removeinstaller / désinstaller
dpkg -l · dpkg -L <p>paquets installés · leurs fichiers
snap find · snap installles paquets snap (--classic)
CH 14Monitoring système🟧
uptimedepuis quand + charge système
w · whoqui est connecté
lastl'historique des connexions
htopun top en couleur, plus lisible
vmstatCPU / mémoire / disque en un coup d'œil
CH 15Planification (cron)🟧
crontab -lliste tes tâches planifiées
crontab -eédite : min h jour mois j-sem cmd
echo '…' | crontab -installe (⚠️ REMPLACE toute la crontab)
crontab -l > f puis crontab fajouter une tâche sans rien perdre
*/15 * * * * · 0 7 * * 1-5toutes les 15 min · 7 h en semaine
systemctl list-timersles timers systemd (le cron moderne)
datela date et l'heure du système
/etc/anacrontabrattrape les tâches manquées
echo cmd | at now + 5 minutesune tâche unique (atq, atrm)
CH 16Scripting Bash🟥
#!/bin/bashle « shebang » : 1ʳᵉ ligne d'un script
VAR=x · $VARvariables (ex. echo $PATH)
./script.shlance le script (après chmod +x)
echo $?le code de retour (0 = tout va bien)
$(commande)substitution : insère le résultat d'une commande
read -p "? " vardemande une saisie
$(( a + b ))calcul entier
if [ -f f ]; then …; fiune condition
[ $a -gt 5 ] · [ -z "$v" ]tests : nombres / texte
case $v in a) …;; esacplusieurs cas
for i in {1..5}; do …; doneune boucle
while read l; do …; done < fligne par ligne
$1 $2 · $# · "$@"les arguments du script
f() { …; }une fonction
a && b · a || bsi ça marche · sinon
bash -x script.shdéboguer (trace)
CH 17Git — le versioning⬛
git initcrée un dépôt dans le dossier
git statusl'état des fichiers (ta boussole)
git add <f>ajoute à l'index (git add . = tout)
git commit -m "msg"enregistre un instantané
git logrelit l'historique des commits
CH 18Virtualisation (KVM)⬛
egrep -c 'vmx|svm' /proc/cpuinfoCPU compatible virtualisation ? (> 0 = oui)
sudo apt install qemu-kvminstalle l'hyperviseur
sudo systemctl enable --now libvirtddémarre le démon de virtualisation
virsh list --allliste les machines virtuelles
virsh start <vm>démarre une VM
CH 19Archives & compression⬛
tar czf a.tar.gz <dossier>crée une archive compressée
tar xzf a.tar.gzextrait une archive
les lettresc=créer, x=extraire, z=gzip, f=fichier
gzip f · gunzip f.gzcompresser · décompresser
zip -r a.zip d · unzip a.ziparchive .zip
CH 21Proxy & reverse proxy🟥
ss -tlnples ports en écoute et leur programme
proxy_pass <url>;nginx relaie vers l'app, ex. http://127.0.0.1:3000
ln -s <cible> <lien>active un site dans sites-enabled/ (cible en chemin absolu !)
sudo nginx -tteste la config avant de la charger
systemctl reload nginxrecharge sans couper les visiteurs (sudo)
proxy_set_headertransmet Host, X-Real-IP, X-Forwarded-For à l'app
upstream <nom> { }répartit la charge entre instances (server ip:port;)
erreur 502l'app derrière ne répond pas → /var/log/nginx/error.log
curl -x <proxy> <url>passe par un proxy sortant (Squid, port 3128)
export http_proxy=…proxy pour tout le système (+ https_proxy)
RHCSA R1·R2Red Hat : paquets, firewalld, SELinux🎩
cat /etc/redhat-releasequelle distribution de la famille Red Hat
dnf install / search / infoles paquets .rpm (équivalent d'apt)
rpm -q <paquet>est-il installé ? (-qa = tous)
systemctl enable --nowdémarre maintenant ET au boot (rien ne démarre seul)
-G wheelle groupe des admins (au lieu de sudo)
firewall-cmd --add-service=httpouvre le web (firewalld)
--permanent puis --reloadsinon la règle disparaît au rechargement
getenforce · ls -Zmode SELinux · étiquettes des fichiers
restorecon -Rv <chemin>remet les bonnes étiquettes (après un mv)
semanage fcontext -a -tnouvelle règle d'étiquette, puis restorecon
setsebool -P <booléen> onactive une permission SELinux prévue
403 sur Red Hatdroits Unix OK ? → /var/log/audit/audit.log
RHCSA R3·R5Red Hat : réseau, comptes, démarrage🎩
nmcli device · ip ales cartes · les adresses actives
nmcli con mod enp0s3 ipv4.…enregistre (addresses avec /24, gateway, dns, method manual)
nmcli con up enp0s3applique ; +ipv4.dns ajoute au lieu de remplacer
hostnamectl set-hostnamenom d'hôte permanent (écrit /etc/hostname)
… | sudo tee -a /etc/hostsécrire dans un fichier système (pas sudo echo >>)
groupadd -g · useradd -u -GGID / UID imposés, groupe secondaire
chage -M 90 -W 7 · -d 0durée du mot de passe · changer au 1er login
useradd -r -s /sbin/nologincompte de service, sans connexion
chgrp + chmod 2770dossier partagé : le set-GID garde le groupe
/etc/sudoers.d/ · visudo -cune règle par fichier, en chmod 440, syntaxe vérifiée
systemctl set-defaultmulti-user.target (texte) ou graphical.target
journalctl -u sshd -p errjournaux d'un service · les erreurs
mkdir /var/log/journal+ restart systemd-journald = journaux persistants
tuned-adm recommend / profilele profil de performance conseillé
RHCSA LABSSur ta VM : disques, NFS, secours, podman, scripts🖥️
parted /dev/sdb mklabel gptpuis mkpart, set 1 lvm on (ou fdisk + w)
vgcreate -s 8M vg /dev/sdb1taille d'extent imposée ; lvcreate -l 50 = 50 extents
lvextend -r -L 600Magrandit le LV ET le système de fichiers, à chaud
mkswap · swapon -aswap permanent : ligne UUID=… none swap defaults 0 0
mount -a · findmnt --verifytester fstab AVANT de redémarrer
/etc/exports · exportfs -rvpartage NFS ; showmount -e serveur
defaults,_netdevmontage NFS dans fstab (attend le réseau)
/etc/auto.master.d/x.autofsautofs ; carte joker * -rw srv:/homes/&
rd.break → chroot /sysrootpasswd root puis touch /.autorelabel
podman run -d -p 8080:8080 -v ~/web:…:Zconteneur rootless, volume étiqueté SELinux
~/.config/containers/systemd/*.containerQuadlet : le conteneur devient un service utilisateur
loginctl enable-linger kaises services démarrent au boot, sans connexion
$# · "$@" · exit 1 · $?arguments, codes de sortie d'un script
crontab -e · at now + 1 minutetâche répétée · tâche unique (chemins complets !)
BONUS🧰 Boîte à outils🎁
calle calendrier du mois
seq 1 10une suite de nombres
echo "2+2" | bcle terminal comme calculatrice
which <cmd>où se trouve une commande
stat <f>infos détaillées d’un fichier
file <f>le type d’un fichier
sort · uniqtrie / dédoublonne des lignes
cut -d: -f1extrait une colonne
tr a bremplace des caractères
revinverse chaque ligne
factor 60décompose en facteurs premiers
aliastes raccourcis (ex. ll=ls -la)
cowsay txtla vache qui parle 🐄
alias nom='cmd'ton propre raccourci
source ~/.bashrcrecharge ta config
PS1='\u@\h:\w\$ 'personnalise l’invite
printenv · export V=xl’environnement
道 · Le Dojo du Linux — コマンドは力なり · La commande est puissance