======================================================= Commandes Bash `ls*` : Gestion des Fichiers et Système ======================================================= .. contents:: :depth: 2 :local: :backlinks: top Introduction ------------ Cette documentation se concentre sur les commandes Bash de la famille `ls*`, essentielles pour la gestion des fichiers, des périphériques, et du système. Ces commandes offrent une vue complète et détaillée de divers aspects du système Linux, notamment : - **Gestion des fichiers** : Explorer les répertoires, examiner les attributs des fichiers, et analyser leur contenu (`ls`, `lsattr`). - **Gestion des périphériques** : Visualiser les disques, partitions, et périphériques connectés (`lsblk`, `lsusb`, `lspci`). - **Analyse du système** : Examiner les espaces de noms et les modules du noyau (`lsns`, `lsmod`). - **Informations matérielles** : Obtenir des détails sur l'architecture CPU et les périphériques connectés (`lscpu`, `lsusb`, `lspci`). --- Résumé des Commandes --------------------- .. list-table:: :header-rows: 1 :widths: 20 30 50 * - Commande - Catégorie - Description * - `lsof` - Gestion des fichiers - Liste les fichiers ouverts par les processus. * - `ls` - Gestion des fichiers - Liste le contenu des répertoires avec métadonnées. * - `lsattr` - Gestion des fichiers - Affiche les attributs étendus des fichiers. * - `lsblk` - Gestion des périphériques - Affiche des informations sur les périphériques de bloc. * - `lsmod` - Analyse des modules noyau - Liste les modules chargés dans le noyau. * - `lscpu` - Analyse matérielle - Fournit des informations sur l’architecture CPU. * - `lsusb` - Analyse matérielle - Fournit des informations sur les périphériques USB. * - `lspci` - Analyse matérielle - Fournit des informations sur les périphériques PCI. * - `lsns` - Gestion des espaces de noms - Affiche les espaces de noms actifs dans le noyau. --- Les Commandes ------------- lsof ~~~~ **Description** : `lsof` (List Open Files) est une commande puissante qui liste tous les fichiers ouverts par les processus en cours d'exécution. Un fichier ouvert peut être : - Un fichier ordinaire. - Un répertoire. - Un périphérique spécial. - Un socket réseau (connexion active ou en attente). - Une bibliothèque partagée ou un fichier supprimé. Chaque ligne de sortie fournit des informations détaillées sur le processus qui accède au fichier, telles que le nom du processus, son PID, le descripteur de fichier utilisé, et plus encore. **Cas d'utilisation** : - Identifier les fichiers ouverts par un utilisateur ou un processus spécifique. - Diagnostiquer des fichiers bloqués ou en usage. - Analyser les connexions réseau actives sur le système. - Identifier les fichiers ouverts dans un répertoire donné pour libérer des ressources. **Options principales** : - `-u ` : Filtre les fichiers ouverts par un utilisateur spécifique. - `-p ` : Liste les fichiers ouverts par un processus spécifique. - `-i` : Affiche les connexions réseau (écoute ou établies). - `+D ` : Recherche récursive des fichiers ouverts dans un répertoire donné. - `-t` : Retourne uniquement les PIDs des processus trouvés. **Présentation des types de fichiers (`TYPE`)** : La colonne `TYPE` dans la sortie de `lsof` décrit la nature des fichiers ouverts. Voici les types courants : - **`REG`** : Fichier régulier. Par exemple, un document, une image, ou un fichier texte. - **`DIR`** : Répertoire. Indique qu'un processus travaille dans un répertoire spécifique. - **`CHR`** : Périphérique spécial en mode caractère. Exemples : `/dev/tty`, `/dev/null`. - **`BLK`** : Périphérique spécial en mode bloc. Par exemple : disques et partitions comme `/dev/sda1`. - **`FIFO`** : Tube nommé (FIFO). Utilisé pour la communication entre processus. - **`SOCK`** : Socket. Représente une connexion réseau ou une socket IPC. - **`DEL`** : Fichier supprimé. Le fichier a été supprimé, mais est toujours utilisé par un processus. **Exemples et Résultats** : 1. **Lister les fichiers ouverts par un utilisateur** : .. code-block:: bash lsof -u john **Résultat** : .. code-block:: COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME bash 1234 john cwd DIR 8,1 4096 2 / firefox 5678 john txt REG 8,1 1703944 12345 /usr/bin/firefox ssh 9102 john 3u CHR 5,0 0t0 1 /dev/tty **Analyse** : - Le processus `bash` utilise le répertoire courant (`cwd`) comme répertoire de travail. - `firefox` a ouvert un fichier régulier (`REG`) dans `/usr/bin`. - `ssh` utilise un terminal virtuel (`CHR`). 2. **Afficher les connexions réseau actives** : .. code-block:: bash lsof -i **Résultat** : .. code-block:: COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME sshd 2345 root 3u IPv4 234567 0t0 TCP 10.0.0.1:ssh->10.0.0.2:12345 (ESTABLISHED) httpd 5678 www 4u IPv4 123456 0t0 TCP *:80 (LISTEN) **Analyse** : - `sshd` a une connexion réseau active (`ESTABLISHED`) avec une machine distante. - `httpd` est en attente (`LISTEN`) sur le port 80. 3. **Rechercher les fichiers ouverts dans un répertoire spécifique** : .. code-block:: bash lsof +D /var/log **Résultat** : .. code-block:: COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME rsyslogd 1024 root 3w REG 8,1 12345 56789 /var/log/syslog **Analyse** : - Le processus `rsyslogd` écrit dans le fichier `/var/log/syslog`. 4. **Lister les fichiers supprimés toujours utilisés par des processus** : .. code-block:: bash lsof | grep DEL **Résultat** : .. code-block:: COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME bash 5678 root mem DEL 8,1 0 123456 /tmp/file.tmp **Analyse** : - Le fichier `/tmp/file.tmp` a été supprimé mais est encore en mémoire (`DEL`). **Attention** : - L’utilisation de `lsof` sans privilèges root peut générer des erreurs `Permission denied` pour certains fichiers ou processus. - `lsof` est un outil puissant mais peut être gourmand en ressources sur les systèmes avec de nombreux fichiers ouverts. --- ls ~~~ **Description** : `ls` liste le contenu des répertoires avec des informations sur les fichiers (permissions, tailles, dates de modification). **Cas d'utilisation** : - Explorer un répertoire. - Vérifier les permissions ou tailles des fichiers. **Options principales** : - `-l` : Affiche une liste détaillée. - `-a` : Inclut les fichiers cachés. - `-h` : Rend les tailles lisibles. - `-t` : Trie par date de modification. **Exemple : Liste détaillée avec tailles lisibles** : .. code-block:: bash ls -lah **Résultat** : .. code-block:: total 4.0K -rw-r--r-- 1 user user 1.2K Dec 7 10:00 fichier1.txt drwxr-xr-x 2 user user 4.0K Dec 7 10:00 dossier **Analyse** : - Les colonnes incluent les permissions, le propriétaire, et la taille. - La colonne `-rw-r--r--` indique les droits en lecture/écriture pour le propriétaire. --- lsattr ~~~~~~ **Description** : `lsattr` affiche les attributs étendus des fichiers sur les systèmes de fichiers compatibles (ext4). **Cas d'utilisation** : - Diagnostiquer des fichiers immuables (`i`). - Identifier les répertoires ou fichiers protégés. **Options principales** : - `-R` : Recherche récursive. - `-a` : Inclut les fichiers cachés. **Exemple : Vérifier les attributs d'un fichier** : .. code-block:: bash lsattr test.txt **Résultat** : .. code-block:: ----i-------- test.txt **Analyse** : - L’attribut `i` indique que le fichier est immuable. --- lsblk ~~~~~ **Description** : `lsblk` affiche une arborescence des périphériques de bloc comme les disques et partitions. **Cas d'utilisation** : - Identifier les partitions montées et leurs points de montage. - Diagnostiquer les périphériques non montés. **Options principales** : - `-o` : Spécifie les colonnes affichées (`NAME,FSTYPE,SIZE,MOUNTPOINT`). - `-f` : Affiche les systèmes de fichiers et UUID. **Exemple : Lister les périphériques avec leurs points de montage** : .. code-block:: bash lsblk -o NAME,FSTYPE,SIZE,MOUNTPOINT **Résultat** : .. code-block:: NAME FSTYPE SIZE MOUNTPOINT sda 100G ├─sda1 ext4 50G / └─sda2 swap 4G [SWAP] **Analyse** : - Les partitions (`sda1`, `sda2`) sont identifiées avec leur système de fichiers (`ext4`, `swap`). --- lsmod ~~~~~ **Description** : `lsmod` liste les modules chargés dans le noyau, leur taille et leur utilisation. **Cas d'utilisation** : - Vérifier quels modules sont chargés. - Diagnostiquer des problèmes liés aux modules noyau. **Exemple : Afficher les modules actifs** : .. code-block:: bash lsmod **Résultat** : .. code-block:: Module Size Used by ext4 131072 1 xfs 999424 0 **Analyse** : - Le module `ext4` est utilisé par une partition montée. - Le module `xfs` est chargé mais inutilisé. --- lscpu ~~~~~ **Description** : `lscpu` fournit des informations détaillées sur l'architecture CPU, y compris le nombre de cœurs, la fréquence, et les fonctionnalités prises en charge par le processeur. **Cas d'utilisation** : - Diagnostiquer les performances CPU. - Vérifier la compatibilité matérielle avec des logiciels spécifiques. - Identifier les capacités matérielles (virtualisation, jeu d’instructions). **Options principales** : - `-e` : Affiche les détails sous forme de tableau. - `-p` : Liste les informations sous forme de CSV. - `--json` : Fournit la sortie en format JSON. - `-x` : Inclut des informations supplémentaires. **Exemple : Afficher les informations CPU de base** : .. code-block:: bash lscpu **Résultat** : .. code-block:: Architecture: x86_64 CPU(s): 8 Thread(s) per core: 2 Core(s) per socket: 4 Socket(s): 1 Model name: Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz CPU MHz: 3200.000 Virtualization: VT-x L1d cache: 32K L1i cache: 32K L2 cache: 256K L3 cache: 12M **Analyse** : - `CPU(s)` indique le nombre total de processeurs logiques. - Les informations sur la virtualisation (`VT-x`) sont essentielles pour utiliser des machines virtuelles. - Les tailles des caches (`L1`, `L2`, `L3`) influencent les performances. --- lsusb ~~~~~ **Description** : `lsusb` affiche des informations sur les périphériques USB connectés au système, y compris les contrôleurs et les appareils connectés (claviers, souris, webcams, etc.). **Cas d'utilisation** : - Identifier les périphériques USB connectés. - Diagnostiquer les problèmes matériels liés aux ports USB. - Vérifier les périphériques supportés par le noyau. **Options principales** : - `-v` : Mode verbeux pour plus de détails. - `-s` : Filtrer les informations par bus et périphérique (ex. `lsusb -s 002:003`). - `-t` : Affiche une vue en arbre des périphériques. - `-d :` : Affiche uniquement les informations correspondant à un périphérique donné. **Exemple : Lister les périphériques USB** : .. code-block:: bash lsusb **Résultat** : .. code-block:: Bus 002 Device 004: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub Bus 002 Device 003: ID 046d:c52b Logitech, Inc. Unifying Receiver Bus 001 Device 002: ID 0bda:0129 Realtek Semiconductor Corp. RTS5129 Card Reader Controller **Analyse** : - Chaque périphérique est identifié par un ID fournisseur/produit (`046d:c52b` pour Logitech). - `Bus` et `Device` indiquent l'emplacement physique du périphérique. **Exemple : Vue en arbre des périphériques USB** : .. code-block:: bash lsusb -t **Résultat** : .. code-block:: /: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M |__ Port 2: Dev 2, Class=Hub, Driver=hub/4p, 480M |__ Port 1: Dev 3, Class=Mass Storage, Driver=usb-storage, 480M **Analyse** : - Le mode arbre montre la hiérarchie des périphériques et leurs débits (`5000M` pour USB 3.0). --- lspci ~~~~~ **Description** : `lspci` fournit des informations sur les périphériques PCI connectés au système, y compris les cartes réseau, cartes graphiques, contrôleurs de stockage, et autres composants. **Cas d'utilisation** : - Identifier les périphériques PCI installés. - Diagnostiquer des problèmes matériels. - Vérifier la compatibilité des pilotes. **Options principales** : - `-v` : Mode verbeux avec plus de détails. - `-t` : Affiche une vue en arbre des périphériques PCI. - `-k` : Inclut les informations sur les modules noyau associés. - `-n` : Affiche les ID des périphériques sous forme numérique. **Exemple : Lister les périphériques PCI** : .. code-block:: bash lspci **Résultat** : .. code-block:: 00:00.0 Host bridge: Intel Corporation 8th Gen Core Processor Host Bridge/DRAM Registers (rev 07) 00:02.0 VGA compatible controller: Intel Corporation UHD Graphics 630 (rev 02) 00:14.0 USB controller: Intel Corporation Cannon Lake PCH USB 3.1 xHCI Host Controller (rev 10) 00:1f.3 Audio device: Intel Corporation Cannon Lake PCH cAVS (rev 10) **Analyse** : - Chaque ligne indique un périphérique avec son ID (`00:02.0`) et sa fonction (`VGA compatible controller`). - Les informations permettent de localiser les périphériques problématiques. **Exemple : Afficher les modules associés** : .. code-block:: bash lspci -k **Résultat** : .. code-block:: 00:02.0 VGA compatible controller: Intel Corporation UHD Graphics 630 (rev 02) Subsystem: Dell UHD Graphics 630 Kernel driver in use: i915 Kernel modules: i915 **Analyse** : - Le module `i915` est utilisé pour gérer le périphérique graphique. --- lsns ~~~~ **Description** : `lsns` affiche les espaces de noms (namespaces) actifs dans le noyau Linux, utilisés pour isoler des ressources comme les processus, réseaux, et utilisateurs. **Cas d'utilisation** : - Diagnostiquer les conteneurs ou processus isolés. - Vérifier les espaces de noms actifs sur un système. **Options principales** : - `-l` : Affiche les colonnes complètes. - `-p ` : Montre les espaces de noms associés à un processus spécifique. - `-t` : Filtre par type d’espace de noms (ex. : `uts`, `ipc`, `net`). **Exemple : Afficher les namespaces actifs** : .. code-block:: bash lsns **Résultat** : .. code-block:: NS TYPE NPROCS PID USER COMMAND 4026531835 uts 1 1 root /sbin/init 4026531836 ipc 1 1 root /sbin/init 4026531837 mnt 1 1 root /sbin/init 4026531838 pid 1 1 root /sbin/init 4026532256 net 1 1 root /sbin/init **Analyse** : - `TYPE` indique le type d’espace de noms (`uts`, `ipc`, `net`). - `NPROCS` montre le nombre de processus utilisant chaque espace de noms. --- Meta ---- - **Auteur** : Cbillet - **Date** : 07/12/2024