Aide-mémoire des commandes Linux pour Debian : administration, réseau et diagnostic

Référence pratique des commandes Linux pour administrer Debian ou Ubuntu : système, fichiers, droits, processus, réseau et journaux. À garder sous la main.

25 min de lectureLinux
Aide-mémoire des commandes Linux pour Debian : administration, réseau et diagnostic

Tu as toujours rêvé de devenir un super administrateur Linux ? Avoue-le.

Ce guide rassemble les commandes essentielles pour administrer un système Debian ou Ubuntu et garder le contrôle total de ta machine: système, fichiers, utilisateurs, droits, processus, réseau et services.

La liste n’est pas exhaustive, mais elle couvre ce qu’un administrateur utilise vraiment. Certaines de ces commandes ont 40 ans. D’autres sont récentes. Toutes cohabitent dans le même terminal, comme si le temps n’avait pas de prise sur un bon man. Plus qu’un guide, c’est un voyage dans le temps où passé, présent et futur se retrouvent au même prompt.

Munis-toi de ton terminal et c’est parti.

Les prérequis #

Un système Debian ou Ubuntu. Un accès sudo. Et l’envie de ne plus jamais avoir à googler une commande à 2h du matin.

Rappel aux “Substitute Users” :

  • su = Tu empruntes le badge d’un collègue pour te faire passer pour lui dans le bâtiment. Tu as besoin de son code secret.
  • sudo = Tu gardes ton propre badge, mais tu as reçu une autorisation spéciale de la direction pour ouvrir certaines portes réservées, et tu utilises ton propre code.

Dernier point avant d’entrer dans le vif : les commandes de gestion des services dépendent du système d’init de ta distribution. Deux écoles cohabitent.

  • SystemD (Debian 8+, Ubuntu 15.04+) : tu utilises systemctl et journalctl
  • SysV Init (systèmes plus anciens) : tu utilises /etc/init.d/ et service

Pour savoir lequel tourne sur ta machine : ps --pid 1. Si tu vois systemd, la réponse est là.

Obtenir des informations sur le système d’exploitation #

Avant d’agir, connais ton terrain. Noyau, RAM, processeur, version de l’OS : un root god ausculte sa machine avant de toucher quoi que ce soit.

  • lsb_release -a || uname -a || cat /etc/issue : obtenir des informations sur le système

  • screenfetch || neofetch : obtenir des informations sur l’OS (noyau, nom de machine)

  • echo "${XDG_CURRENT_DESKTOP}" : connaître la version du bureau

  • help <commande> : afficher le guide sur l’utilisation d’une commande

  • man <commande> : afficher le manuel d’une commande

    • man -L en <commande> : afficher le manuel en Anglais
  • info <commande> : afficher le guide sur l’utilisation d’une commande

    • info --apropos <commande> : trouver toutes les pages infos se rapportant à un mot clé
    • info --show-options <commande> : Plus de détails sur les options
  • apropos <commande> : afficher seulement une courte description d’une commande

  • whatis <commande> : afficher une courte description d’une commande dans le terminal

  • <commande> --help : afficher l’aide d’une commande dans le terminal

  • eg <commande> : fournir des exemples d’utilisation

  • journalctl || cat /var/log/syslog : consulter le journal système systemd

  • vmstat : info ram, swap, CPU

  • free : indique l’allocation de la ram et la mémoire libre restante

  • /proc/ : système de fichiers virtuel du noyau, tout y est exposé en lecture

    • cat /proc/version : informations sur l’OS (noyau, nom de machine)
    • cat /proc/meminfo : fichier qui contient de nombreuses informations sur la mémoire. Il suffit d’en afficher la sortir avec cat /proc/meminfo
    • cat /proc/cpuinfo : fichier qui contient des infos sur le processeur
    • cat /proc/version : fichier qui contient des infos sur le noyau|
    • cat /proc/mounts : informations sur les systèmes de fichiers déjà montés
    • cat /proc/devices : informations sur les périphériques disponibles
    • cat /proc/modules : informations sur les modules activés dans le noyau
    • cat /proc/cmdline : informations sur les paramètres donnés au noyau lors de la mise en route

Gérer les fichiers et les dossiers #

Sur Linux, tout est fichier. Répertoires, permissions, liens symboliques : maîtriser l’arborescence, c’est tenir les rênes du système.

  • pwd : afficher le répertoire courant

  • ls : afficher le contenu du répertoire courant

    • ls -lahF --color=auto
    Information
    voir alias ll=ls -lahF
    • ls -a : afficher tous les fichiers et répertoires cachés
    • ls -F : indique le type d’élément
    • ls -l : liste détaillée
    • ls -h : afficher la taille en Ko, Mo, Go…
    • ls -t : trier par date de dernière modification
  • tree : lister les fichiers sous forme d’arborescence

    • tree -a : ajouter les fichiers caché à la liste
  • cd : changer de répertoire On peut « compléter » un chemin avec TAB

  • touch : créer un fichier

  • mkdir : créer un répertoire

    • mkdir -p : Il sert à créer tous les répertoires intermédiaires
    • mkdir -p animaux/vertebres/chat : Créer 3 répertoires
  • du : Connaître la taille

    • du -abh /home/
    • du -a : afficher la taille des répertoires, des sous-répertoires ET des fichiers
    • du -b : afficher la taille précise
    • du -h : séparateur de millier
    • du -s : afficher juste le grand total

Par défaut du affiche la taille en Ko les répertoires (soit 4096 octets la taille par défaut pour les répertoires vides)

  • cat : Lire un fichier

    • cat -n : afficher des numéros de ligne
    • cat -A : lire le fichier et afficher les caractères invisibles
  • tac : lire le fichier à l’envers

  • less : lire un fichier page à page

Navigation dans less :

  • ENTREE ou y OU ↑ ou ↓ : faire défiler ligne par ligne

  • ESPACE ou b OU PAGIN UP ou PAGIN DOWN : faire défiler les pages

  • q : arrête la lecture du fichier. Cela met fin à la commande less.

  • = : indique où tu en es dans le fichier (numéro des lignes affichées et pourcentage).

  • h : affiche l’aide (toutes les commandes que je t’apprends ici, je les tire de là). Tape q pour sortir de l’aide.

  • / : tape / suivi du texte que tu recherches pour lancer le mode recherche. Fais Entrée pour valider. Pour ceux qui savent s’en servir, sache que les expressions régulières sont acceptées.

  • n : après avoir fait une recherche avec /, la touche n te permet d’aller à la prochaine occurrence de ta recherche. C’est un peu comme si tu cliquais sur le bouton « Résultat suivant ».

  • N : pareil que n, mais pour revenir en arrière.

  • most : lire les fichiers comme less, mais avec la coloration syntaxique activée par défaut

  • head : afficher les premières ligne d’un fichier

    • head -n <nombre> : afficher un nombre de ligne
  • tail : afficher les dernières ligne d’un fichier

    • tail -n <nombre> : afficher un nombre de ligne
    • tail -f -s 3 <fichier> : recherchera les changements toutes les trois secondes
    • tail -f : synchroniser toutes les n secondes
    • tail -f /var/log/auth.log
  • cp : copier un fichier

  • cp -R : copier un répertoire

  • mv : déplacer ou renommer

Pas de distinction entre les fichiers et les répertoire, ça marche pour les 2

  • rm : supprimer un fichier

    • rm -i : demander confirmation
    • rm -r : supprimer un répertoire
    • rm -f : forcer la suppression
    • rm -v : mode verbeux
  • rmdir : effacer les dossiers vides

  • ln : créer un lien (ou raccourci)

    • ln -s : créer un lien symbolique
      • ln -s <répertoire_cible> <nom_du_lien>
      • ln -s /opt/node/bin/node /usr/local/bin/node : rendre une commande accessible globalement
      • ln -s ~/Documents ~/Desktop/Docs : raccourci vers un dossier

Lien symbolique = (un peu comme les raccourcis Windows) (panneau de direction)

Information

Lien physique (lien directe) = 2 noms (inodes) pour un même fichier (Lien physique pas possible sur les répertoire) = CLONE

Lien symbolique = (un peu comme les raccourcis Windows) (panneau de direction)

  • Extra :

    • pushd <-> popd : aller dans un dossier et y revenir facilement (pile de navigation)
    • od -c : afficher les caractères invisibles d’un fichier
    • xargs : construire et exécuter des commandes depuis l’entrée standard (chaîne les résultats d’un pipe)

Administrer des utilisateurs #

Tu décides qui a le droit d’exister sur ton système. Crée les comptes, distribue les badges d’accès, révoque-les. Le root god ne fait pas de sentiment.

  • cat /etc/passwd : consulter la liste des utilisateurs
Information
x signifie qu’un mot de passe est définie dans /etc/shadow
  • id : obtenir des informations sur l’utilisateur (UID et GUID)

  • sudo : passer en mode administrateur de manière permanente

    • sudo visudo : éditer /etc/sudoers
    • sudo -k : termine une session sudo éventuellement ouverte, cela assure que la prochaine instruction sudo demandera bien un mot de passe.
    • sudo -s : ouvre le shell spécifié dans /etc/passwd pour l’utilisateur cible (root par défaut)
    • sudo -i : simule un login initial et ouvre le shell spécifié dans /etc/passwd pour l’utilisateur cible (root par défaut). Cela signifie que des fichiers spécifiques tels que .login ou .profile seront lus par le shell ainsi lancé
    • sudo -E : préserve l’environnement du shell depuis lequel la commande est lancée
    • sudo -u <user> : lancer la commande en tant que l’utilisateur
    • sudo -g <group> : lancer la commande avec le groupe bar spécifié (le groupe spécifié est le groupe primaire de l’utilisateur cible indiqué dans /etc/passwd)
    • sudo -i -u <user> : permet de se connecter en tant que l’utilisateur toto (ne pas utiliser ces options pour root)
  • su <user> : se connecter avec un autre compte utilisateur

    • su root
  • adduser <user> : ajouter un nouvel utilisateur + créer répertoire home

    • sudo adduser <user> <group> : ajouter un utilisateur à un groupe
  • usermod : modifier un utilisateur

    • sudo usermod -l : renommer l’utilisateur
    • sudo usermod -l <nouveau user> -d <nouveau répertoire home> -m <ancien user> : renommer l’utilisateur (le nom de son répertoire personnel ne sera pas changé par contre)
    • sudo usermod -g : changer de groupe
    • sudo usermod -g <group> <user> : changer de groupe mais supprime l’ancien
    • sudo usermod -aG <group> <user> : ajouter un groupe sans supprimer l’ancien
    • sudo usermod -d /home/<nouveau-répertoire> -m -l <nouveau-nom> -c <nouveau-nom-complet> <ancien-nom>
    • sudo usermod --expiredate 1 <nom_utilisateur> : verrouiller un compte
    • sudo usermod --expiredate '' <nom utilisateur> : déverrouiller un compte
  • passwd <user> : changer le mot de passe

    • sudo passwd -e <user> : forcer l’utilisateur a changer le mot de passe
  • deluser <user> : supprimer un compte

    • sudo deluser --remove-home <user> : supprimer un utilisateur + répertoire home
    • sudo deluser --remove-all-files <user> : supprimer un utilisateur + tous les fichiers du système possédés par l’utilisateur
    • sudo deluser <user> <group> : supprimer l’utilisateur d’un groupe

Gérer des groupes - créer et administrer des groupes #

Même les simples utilisateurs ont besoin d’organisation. Les groupes, c’est la manière élégante de gérer les accès collectifs sans distribuer des clés à tout le monde.

  • cat /etc/group : consulter la liste des groupes

  • groups : afficher les groupes de l’utilisateur

  • addgroup <group> : créer un groupe

    • sudo addgroup <user> <group> : ajouter un utilisateur à un groupe
  • groupmod : modifier un groupe

  • gpasswd : gérer les administrateurs d’un groupe

  • delgroup <group> : supprimer un groupe

    • sudo delgroup <user> <group> : supprime l’utilisateur d’un groupe
  • chgrp <group> <fichier> : Changer le groupe propriétaire d’un fichier

  • newgrp <group> : changer (switcher) de groupe

Gérer les propriétaires d’un fichier #

Chaque fichier a un propriétaire. Et ce propriétaire, c’est toi qui le désignes. chown est le tampon officiel du root god.

  • chown <user> <fichier> : changer le propriétaire d’un fichier

    • sudo chown <user>:<group> <fichier>
    • sudo chown -R <user>:<group> <répertoire/>
    • sudo chown <user>:<group> <fichier> : changer le groupe propriétaire d’un fichier
    • sudo chown -R <user>:<group> <répertoire/> : affecter récursivement les sous-répertoires
  • chgrp <group> <fichier> : changer le groupe propriétaire d’un fichier

    • sudo chgrp -R <group> <fichier>

Modifier les droits d’accès d’un fichier ou d’un dossier #

Lecture, écriture, exécution. Trois bits qui décident qui peut faire quoi. Un chmod bien placé vaut mieux que dix conversations sur la politique de sécurité.

  • chmod ### <fichier> : réaffecter les droits sur un fichier

    • chmod 755 script.sh : exécutable par tous, modifiable uniquement par le propriétaire
    • chmod 644 fichier.txt : lisible par tous, modifiable uniquement par le propriétaire
    • chmod 700 cle-privee.key : accessible uniquement par le propriétaire
    • chmod -R ### <répertoire/> : réaffecter les droits sur un répertoire
  • umask : affecter des droits à la création d’un fichier ou d’un répertoire

    • umask u=rwx,g=rwx,o=-

Rechercher des fichiers ou des dossiers sur le disque #

Un fichier peut se cacher n’importe où dans l’arborescence. find est ta lampe torche dans ce labyrinthe. Et il ne manque jamais sa cible.

  • locate <fichier> : rechercher un fichier par son nom
Information
locate nécessite une base de données à jour. Lance updatedb avant de l’utiliser (ou après un ajout de fichiers).
  • find <ou> <quoi> <comment> : rechercher un fichier sur le disque

find parcours le disque - Ou Quoi Comment

  • find -name : rechercher par nom

  • find -iname : rechercher par nom (insensible à la casse)

  • find -size : rechercher à partir de la taille (ex: -size +10M)

  • find -atime : rechercher à partir de la date de dernier accès (ex: -atime -7)

  • find -type d : rechercher uniquement des répertoires (directories) ;

  • find -type f : rechercher uniquement des fichiers (files).

  • find * -type -f -print : permet d’afficher les résultats sans ./

  • find -printf "%p - %u\n" : Afficher les fichiers de façon formatée

  • find -delete : supprimer les fichiers trouvés

  • find <chemin> -name <expression> -ok <commande> {} \; : exécuter une commande sur chaque résultat avec confirmation

    • find /tmp -name "*.tmp" -ok rm {} \; : supprimer les fichiers .tmp un par un après confirmation
  • REGEX

    • find / -regextype "posix-extended" -regex ".*\/a.*a\.txt" 2> /dev/null Attention dans ce cas de figure -regex remplace -name
    • find / -regextype "posix-egrep" -iregex ".*\/a.*a\.txt" 2> /dev/null

Voir page find -regex

Attention
Attention pour la regex il faut tenir compte de la syntaxe du chemin complet

Gérer l’affichage des informations #

Les données brutes ne servent à rien si tu ne sais pas les lire. Filtrer, trier, compter, comparer : grep, sort, awk et leurs cousins font de toi un analyste, pas juste un opérateur.

  • grep <expression> <fichier> : rechercher un mot dans un fichier (compatible regex)

    • grep -i : ignorer la casse (insensible aux majuscules/minuscules)

    • grep -n : afficher le numéro de ligne

    • grep -r : rechercher dans les fichiers du répertoire - rgrep

    • grep -E : expression régulières, egrep ou -e ou -P (Perl)

    • grep -v : inverser la recherche

      • less /etc/apt/sources.list | grep -v "#"
    • grep -o : afficher l’expression seule

    • grep -w : attraper seulement un mot

    • grep -P : utiliser regex perl

      • grep '^$' <fichier> : afficher les lignes vides
      • cat /etc/passwd/ :
      • grep -P '10[0-9]{2}' : afficher la liste des utilisateurs créés par root
    • history | grep <commande>

  • sort : trier les lignes de texte par ordre alphabétique dans un fichier

    • sort -o : écrire le résultat dans un fichier
    • sort -r : trier en ordre inverse
    • sort -R : trier aléatoirement
    • sort -n : trier des nombres
  • wc : compter le nb de lignes, mots et caractères d’un fichier

Attention
Pour avoir le nombre de caractère exacte, il faut retirer le nombre de ligne
  • wc -l : compter le nombre de lignes

  • wc -w : compter le nombre de mots

  • wc -c : compter le nombre d’octets

  • wc -m : compter le nombre de caractères

  • uniq : supprimer des lignes en double dans un fichier

    • uniq -c : compter le nombre d’occurrence
    • uniq -d : afficher uniquement les lignes présentes en double
  • cut : couper les lignes d’un fichier à l’aide d’un délimiteur

    • cut -d : indique quel est le délimiteur dans le fichier
    • cut -f : indique le numéro du ou des champs à couper
    • cut -d <délimiteur> -f <numéro du champ> <fichier>
    • cut -d':' -f1,3 /etc/passwd : extraire le login (col 1) et l’UID (col 3) séparés par :
  • column : transformer un texte en tableau grace à un délimiteur

    • column -s <délimiteur> -t <fichier>
  • tr : remplacer des caractères (moins complet que sed)

    • tr "Jean" "Michel" < fichier.txt : remplacer tous les termes Jean par Michel
    • tr -s " " ";" fichier.txt : remplacer les espace blanc consécutif par un point virgule
  • sed : remplacer des caractères (compatible regex)

    • sed -i : écrire le résultat sur le disque
    • sed [option] 's/<expression à remplacer>/<nouvelle expression>/g' : remplace toutes les expressions par la nouvelle
    • sed "s/<body>/<body> $a/g" index.html : (doubles quotes pour interpréter les variables et \| car $a contient déjà un slash )
    • sed -z "s/Dupond/Dupont/2" fichier.txt
    • sed -i '1s/^/your text\n/' <file>
  • awk : traiter et transformer du texte colonne par colonne (plus puissant que grep, plus lisible que sed pour les données tabulaires)

    • awk '{print $1}' fichier.txt : afficher la première colonne
    • awk -F':' '{print $1}' /etc/passwd : afficher les logins (délimiteur :)
    • awk '{sum += $1} END {print sum}' nombres.txt : sommer une colonne de nombres
    • awk '$3 > 1000' /etc/passwd : filtrer les lignes où la 3e colonne (UID) dépasse 1000
    • ps aux | awk '{print $1, $11}' : afficher l’utilisateur et la commande de chaque processus
  • rename : renommer des fichiers

    • rename -n : tester de manière provisoire
    • rename -n 's/(.*)-(.*)\.txt/$2 - $1.txt/g ' francois-pignon.txt
    • rename -n 'y/-/_/g ' francois-pignon.txt y traduit - par _
  • cmp : comparer deux fichiers

  • diff : afficher les différences entre 2 fichiers texte (ligne par ligne)

    • diff --color=always -u document1.txt document2.txt
  • patch : appliquer un fichier diff à un fichier source (l’inverse de diff)

  • join : joindre deux fichiers

  • nl : lire et numéroter les lignes

Gérer les disques #

L’espace disque, c’est fini. Savoir qui l’occupe, comment partitionner et comment monter un lecteur : des réflexes de base que tout administrateur doit avoir.

  • df : % d’utilisation du disque

    • df -h : séparateur de millier
  • fdisk : lister les disques ou partitions

    • fdisk -l : lister tous les disques avec détails
  • lsblk : lister les disques ou partitions (permet de voir une clé USB)

  • mount : monter un lecteur pour y accéder

    • mkdir /media/<dossier>

    • mount -t <type> : préciser le Système de fichier

      • mount /dev/<sd??> /media/<dossier>
      • mount /dev/<sdb??> /mnt/
  • umount

    • umount /mnt/ : démonter un lecteur (un disque)

Gérer les paquets #

Sur Debian, apt est ton gestionnaire de catalogue. Tu installes, tu mets à jour, tu désinstalles. Proprement, avec ses dépendances. Pas comme sous Windows.

Information
Pour DEBIAN
  • cat /etc/apt/sources.list : afficher la liste les dépôts

  • cat /etc/apt/sources.list | grep -v "#"

  • apt-get update : mettre à jours la liste des paquets disponibles et les maj disponibles

  • apt-get list --upgradable : afficher la liste des paquets à mettre à jour

  • apt-get upgrade : mettre a jour les paquets

  • do-release-upgrade : mettre à jour le système

    • do-release-upgrade -d : forcer la mise à niveau
    • do-release-upgrade --check-dist-upgrade-only : vérifier une proposition de mise à niveau
    • do-release-upgrade --sandbox : tester la mise à niveau avant de la déployer
  • apt-cache <commande>

    • apt-cache search <paquet> : rechercher un paquet
    • apt-cache search <paquet> | grep <expression>
    • apt-cache madison <paquet> : afficher les différentes versions de paquet
    • apt-cache policy <paquet> : savoir si un paquet est installé
    • apt-cache depends <paquet> : afficher la liste de toutes les dépendances d’un paquet et la liste de tous les paquets possibles qui satisfont ces dépendances
  • apt-get install <paquet> : installer un paquet

    • sudo apt-get install -d <paquet> : installer un paquet avec ses dépendances
  • apt-get autoremove <paquet> : désinstaller un paquet

    • sudo apt-get autoremove --purge <paquet> : désinstaller un paquet et supprimer aussi les fichiers de config
  • dpkg : gérer les paquets en local

    • dpkg-reconfigure <paquet> : reconfigurer un paquet
    • dpkg -l : lister tous les paquets installés
    • dpkg --status <paquet> : savoir si un paquet est installé
    • dpkg --get-selections : savoir si des paquets sont installés
  • gdebi <paquet.deb> : installer des paquets .deb en source externe

REDHAT yum update

Information

Autre système DEBIAN aptitude apt-get && aptitude full-upgrade

REDHAT yum update

Transferer des données #

SSH, SCP, rsync : la sainte trinité du transfert sécurisé. Parce que copier avec une clé USB en 2024, c’est non.

  • ssh <user>@<host> (IP local ou public) : se connecter au serveur en SSH (port 22 par défaut)

    • ssh <user>@<host> -p <port> : se connecter au serveur en SSH avec un port spécifique
Attention
Pour plus de sécurité, voir le sujet ici
  • ssh <user>@<host> 'ls -a > ~/test.txt' : exécuter une commande sur le serveur

    • Interdire ou autoriser des utilisateurs
      • vi /etc/ssh/sshd_config
      • AllowUsers user1 user2 : Autorise seulement ces utilisateurs
      • AllowGroups group1 group2 : idem pour les groupes
      • DenyUsers user1 user2
      • DenyGroups group1 group2
  • wget <url> : télécharger un fichier

    • wget -c <url> : reprendre un téléchargement annulé
    • wget -P <répertoire de destination> <url>: pour spécifier un répertoire de destination
    • nohup wget <url> : lancer un téléchargement en tâche de fond
    • wget --background <url> : lancer un téléchargement en tâche de fond
  • scp <source> <user>@<host>:<destination/> : copier des fichiers sur une machine distante (commande sécurisée par SSH)

    • scp -r <dossier> <user>@<host>:~/<dossier>/ : copier un dossier sur une machine distante
    • scp <user>@<host>:~/<fichier> <fichier-copie> : SCP opération inverse - Copier un fichier d’un autre ordinateur vers le tien
Attention
Si le serveur SSH auquel tu essaies de te connecter n’est pas sur le port standard (22), il faudra indiquer le numéro du port avec l’option -P
  • scp -P 16296 <fichier> <user>@<host>:<fichier-copie>

La commande SSH a aussi une option pour indiquer un port ; tu t’en souviens peut-être, c’est -p ! Faites donc attention car avec SSH c’est un « p » minuscule qu’il faut utiliser alors qu’avec SCP c’est un « P » majuscule !

  • ftp <host> : transférer des fichiers via le protocole ftp

    • ftp> <commande>
    • ftp> get <fichier> : télécharge un fichier
    • ftp> put <fichier> : téléverse un fichier

! Pour executer les commandes chez soi

Ex : ftp> !ls

  • sftp <user>@<host> : transférer des fichiers via le protocole SSH

Pour se connecter en SFTP, on utilise le même port que SSH (soit 22 par défaut). Si ton serveur SSH fonctionne sur un autre port, tu devras le préciser comme ceci

  • sftp -P27401 <user>@<host>

  • rsync : synchroniser des répertoires

    • rsync -arv <source> <destination> : synchroniser des répertoires
    • rsync -arv --delete <source> <destination> : synchroniser des répertoires et enlever les suppressions
    • rsync -arvz --delete --backup --backup-dir=/home/<user>/<trash> <source> <user>@<host>:<source-copy>

Gérer les processus #

Tout ce qui tourne sur ta machine, c’est un processus. Tu peux les voir, les prioriser, les tuer. top, ps, kill : ton panneau de contrôle en temps réel.

  • <commande> & : exécuter en tache de fond (attaché à la console)

  • nohup <commande> : exécuter en tache de fond (détaché de la console )

  • Ctrl + Z : mettre en pause l’exécution du programme

  • jobs : lister les processus mis en pause

    • jobs -l : lister les processus mis en pause et afficher le PID associé

      $ [1] job 1
      $ [2] job 2
      
    • fg %1 : passer le processus 1 en avant plan (fg = foreground)

    • bg %1 : passer le processus 1 en arrière plan (bg = background)

    • kill %1 : tuer le processus 1

  • ps : liste statique des processus

    • ps -ef : lister tous les processus
    • ps -ejH : afficher les processus en arbre
    • ps axf : afficher les processus en arbre ASCII (forest)
    • ps -eo pid,user,argts : afficher sous le format
    • ps -u utilisateur : lister les processus lancés par un utilisateur
  • pstree : liste les processus sous forme d’arborescence

  • top : liste dynamique des processus

    • q : ferme top
    • h : afficher l’aide, et donc la liste des touches utilisables.
    • B : mettre en gras certains éléments.
    • f : ajouter ou supprime des colonnes dans la liste.
    • F : changer la colonne selon laquelle les processus sont triés. En général, laisser le tri par défaut en fonction de %CPU est suffisant.
    • u : filtre en fonction de l’utilisateur que tu veux.
    • k : tuer un processus. Ne t’inquiète pas, en général les processus ne souffrent pas. On te demandera le numéro (PID) du processus à tuer.
    • s : changer l’intervalle de temps entre chaque rafraîchissement de la liste (par défaut, c’est toutes les trois secondes).
  • Ctrl + C : arrêter un processus lancé en console

  • kill : tuer un processus

    • kill -l liste des signaux
    • kill <pid>
  • killall <process_name> : tuer tous les processus portant ce nom

    • killall -u <user> : tuer tous les processus d’un utilisateur (met fin à sa session)

Gérer les services #

Un daemon qui plante en silence, un serveur web qui ne démarre pas au boot : systemctl te donne la main sur tout ce qui tourne en arrière-plan.

  • systemctl : gérer les processus et services systemd

    • systemctl list-units : lister toutes les unités
    • systemctl list-units -t service : lister toutes les unités de type service
    • systemctl status <service>.service : Affiche le statut du servive (actif ou inactif)
    • systemctl start <service>.service : démarrer un service
    • systemctl restart <service>.service : redémarrer un service
    • systemctl reload <service>.service : redémarrer un service
    • systemctl stop <service>.service : arrêter un service
    • systemctl enable <service>.service : activer un service
    • systemctl disable <service>.service : désactiver un service
      Information
      Le prefixe .service n’est pas obligatoire
  • /etc/init.d init

    • /etc/init.d/<service> start
    • /etc/init.d/<servive> restart
    • /etc/init.d/<servive> stop
    • /etc/init.d/<servive> status
  • service : gérer les services (wrapper compatible les deux) systemd init

    • service --status-all : lister tous les services du système
    • service <service> start
    • service <service> restart
    • service <service> reload
    • service <service> stop
  • Paquet upstart init : (Ubuntu pre-systemd)

    • start <serviceName>
    • stop <serviceName>
    • status <serviceName>
Information
restart = stop + start / reload = reste actif et relit la configuration

Gérer le réseau #

Ports ouverts, IP assignées, connexions actives : maîtriser le réseau, c’est savoir exactement ce qui entre et ce qui sort de ta machine.

  • w : afficher qui est connecté et ce qu’il fait

  • uptime : afficher la charge CPU

  • who : afficher qui est connecté

    • who -uH : afficher qui est connecté et le numéro de processus Bash associé
  • last : afficher les dernières informations de connexions d’un utilisateur

    • last <user>
  • host <ip> : afficher l’IP ou le domaine

  • whois <host> : informations sur le propriétaire d’un site

  • ifconfig : connaitre la configuration réseau de la machine

  • vi /etc/network/interfaces : modifier ce fichier pour configurer une IP fixe

  • ifup : activer une interface réseau

    • ifup wlan0
  • ifdown : désactiver une interface réseau

  • ip | ip a

    • ip -c -4 a show wifi0
    • ip -o -c -4 a show wifi0
  • ping <ip adress>

    • ping -c : nombre de ping lancé
    • ping -c 1 -i 0.2 <host>
    • ping -i : donner l’intervalle en ms
  • hostname : afficher le nom de la machine

    • hostname -I : retourne l’IP de la machine
  • netstat : informations sur le réseau (port)

    • netstat -utanc
    • netstat -tlnp : afficher les ports TCP en écoute avec le processus associé (le plus utile en pratique)
    • netstat -u : afficher les connexions UDP (jeux en réseau, VoIP)
    • netstat -t : afficher les connexions TCP ;
    • netstat -a : afficher toutes les connexions quel que soit leur état
    • netstat -n : avoir les numéros des ports plutôt qu’une description en toutes lettres
    • netstat -c : synchronise la réponse
    • netstat -p : afficher le PID et le nom du processus associé à chaque connexion

Chaque connexion a un état et de nombreux états sont possibles

ESTABLISHED : la connexion a été établie avec l’ordinateur distant

TIME_WAIT : la connexion attend le traitement de tous les paquets encore sur le réseau avant de commencer la fermeture

CLOSE_WAIT : le serveur distant a arrêté la connexion de lui-même (peut-être parce que tu es resté inactif trop longtemps ?)

CLOSED : la connexion n’est pas utilisée

CLOSING : la fermeture de la connexion est entamée mais toutes les données n’ont pas encore été envoyées

LISTEN : à l’écoute des connexions entrantes.

  • iptables : configurer les règles du pare-feu (filtrage des paquets entrants, sortants et routés)

    • sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT : autoriser SSH
    • sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT : autoriser HTTP
    • sudo iptables -A INPUT -j DROP : bloquer tout le reste (à mettre en dernier)
    • sudo iptables -L -v : lister les règles actives
  • traceroute <host> : afficher le chemin réseau vers un hôte, saut par saut (utile pour diagnostiquer où ça bloque)

  • curl : transférer des données depuis ou vers une URL (HTTP, FTP, API REST) — couteau suisse du réseau en ligne de commande

    • curl ifconfig.me : connaitre son adresse IP publique
Information
Voir aussi les paquets nmtui et nmcli. Sur RedHat : ss -tpn.

Archiver et compresser des fichiers et dossiers #

Sauvegarder, compresser, transférer : tar et ses amis transforment un répertoire entier en un seul fichier transportable. Et ça date de 1979.

  • tar

    • tar -cvf <archive.tar> <dossier/> : Assembler des fichiers dans une archive
    • tar -c : signifie créer une archive tar ;
    • tar -v : signifie afficher le détail des opérations ;
    • tar -f: signifie assembler l’archive dans un fichier.
    • tar -tf : afficher le contenu de l’archive sans l’extraire
    • tar -tf <archive.tar>
    • tar -rvf : ajouter un fichier
    • tar -rvf <archive.tar> <fichier_supplementaire.txt>
    • tar -xvf : extraire les fichiers de l’archive
    • tar -xvf <archive.tar>
  • gzip <archive.tar> : compresser en GZIP

  • gunzip <archive.tar.gz> : décompresser

  • bzip2 <archive.tar> : compresser en BZIP2

  • bunzip2 <archive.tar.bz2> : décompresser

  • Autres opérations de compression :

    • tar -zcvf <dossier/> : archiver et compresser en gz
    • tar -zxvf <archive.tar.gz> : extraire
    • tar -ztf <archive.tar.gz> : lire le contenu d’une archive « gzippée »
    • tar -jcvf <dossier/> : archiver et compresser en bz2
    • tar -jxvf <archive.tar.bz2> : extraire
    • tar -jtf <archive.tar.bz2> : lire le contenu d’une archive « bzippée »
  • zcat : lire un fichier compressé

Quand il n’y a qu’un seul fichier compressé directement avec GZIP ou BZIP2

  • zless : idem

  • zmore : idem

  • zip et unzip : compresser ou décompresser un fichier zip

    • zip -r <fichier.zip> <dossier/*>
    • unzip <fichier.zip> -d [dossier/]

Divers #

Les commandes qui ne rentrent dans aucune case, mais qu’on finit toujours par utiliser.

  • which : connaître l’emplacement d’une commande

  • whereis : connaître l’emplacement d’une commande

  • watch : rafraîchir une commande à intervalle régulier

  • clear : nettoyer le terminal

  • reset : reboot du terminal

  • shutdown : éteindre la machine

    • shutdown now
    • shutdown -r
    • halt
    • reboot
  • convert : transformer des images

  • convert image_source.jpg -thumbnail '200x200>' miniatures/image_copy.jpg

  • iconv : permet de changer l’encodage d’un fichier.

    • -f : préciser l’encodage d’origine, -t pour celui de destination

Par défaut, ICONV renvoie tout sur la sortie standard, donc si tu veux directement envoyer les résultats dans un fichier, il suffit de faire une petite redirection :

  • iconv -f UTF-8 -t UTF-17 fichier.txt >> new-encodage.txt

  • whoami : afficher ton nom d’utilisateur actuel

  • finger <user> : afficher des informations sur un utilisateur

Information
Voir chfn
  • file : déterminer le type d’un fichier indépendamment de son extension. Il suffit de lui fournir en paramètre le fichier à évaluer.

  • stat : afficher les métadonnées détaillées d’un fichier (taille, droits, dates de création, modification et accès)

  • env || printenv : afficher toutes les variables d’environnement

  • shasum : vérifier l’intégrité d’un fichier

  • add-apt-repository : permet d’ajouter des dépôts alternatifs aux dépôts officiels

  • select-editor : changer éditeur par default

  • sudo VISUAL=/usr/bin/vim visudo

  • sudo EDITOR=/usr/bin/vim visudo

  • update-alternatives --config editor : changer l’éditeur par défaut

  • update-alternatives --config pager : changer la liseuse par défaut (most)

Nettoyer le système #

Un root god garde son système propre. Paquets orphelins, caches périmés : un peu d’hygiène évite les mauvaises surprises.

  1. sudo apt-get autoremove : supprimer les paquets installés comme dépendances et devenus inutiles

  2. sudo apt-get autoclean : supprimer les fichiers de cache des paquets trop anciens pour être téléchargés

  3. sudo apt-get clean : vider tout le cache des paquets téléchargés (/var/cache/apt/archives/)

build-essential : compiler un programme #

Quand le paquet n’existe pas dans les dépôts, tu le compiles toi-même. Trois étapes, une commande make.

  1. Décompresser <fichier>.tar.gz avec la commande tar zxvf
  2. Se rendre dans le répertoire
  3. Lancer ./configure
  • Installer les paquets manquants
    • make
    • make install

Ces commandes t’ont accompagné tout au long de ce guide. Certaines ont 40 ans, d’autres sont récentes : toutes cohabitent dans le même terminal. C’est ça, le root god. Pas un super-héros en cape, juste quelqu’un qui sait exactement où taper.

Mention spéciale à Richard Stallman et Linus Torvalds. Sans eux, on apprendrait l’informatique à crédit.

Catégories

Commentaires

Connexion via GitHub, gratuite et sans collecte de données par ce site.

Articles connexes

Coming soon