Recherche de site Web

Comment recueillir des informations complètes sur le disque sous Linux


Comprendre la configuration des disques et l'état de santé de votre système Linux est important pour l'administration du système, le dépannage et l'optimisation. Dans cet article de blog, nous vous guiderons à travers un processus détaillé pour afficher ou rassembler des informations complètes sur les disques sous Linux en utilisant des utilitaires populaires comme parted, inxi et lsblk.

À la fin de ce guide, vous aurez une compréhension claire de la façon de collecter et d'analyser les données du disque, ce qui peut être utile pour maintenir et optimiser votre environnement Linux.

Commençons.

Guide étape par étape pour recueillir des informations sur le disque sous Linux

1. Préparer le fichier de sortie

La première étape consiste à créer un fichier texte où toutes les informations sur le disque seront stockées. Ce fichier sera situé dans votre répertoire personnel et nommé drives.txt.

echo —PARTED DISK INFO— > /home/$USER/diskinfo.txt 2>&1

Cette commande initialise le fichier diskinfo.txt avec un en-tête indiquant que les informations suivantes seront liées aux partitions de disque.

2. Utilisation de parted pour lister les partitions du disque

Ensuite, nous utilisons l'utilitaire parted pour lister toutes les partitions de disque sur le système. Cette commande nécessite des privilèges de superutilisateur, donc nous utilisons sudo.

sudo parted -ls >> /home/$USER/diskinfo.txt 2>&1

La sortie de cette commande est ajoutée au fichier drives.txt, fournissant des informations détaillées sur chaque partition de disque.

3. Récupération des informations sur le disque avec inxi

L'utilitaire inxi est un outil puissant pour recueillir des informations sur le système, y compris des données détaillées sur les disques. Nous ajoutons la sortie de inxi à notre fichier diskinfo.txt.

echo —INXI DISK INFO— >> /home/$USER/diskinfo.txt 2>&1
sudo inxi -DpRjlLoux >> /home/$USER/diskinfo.txt 2>&1

Cette commande fournit non seulement des informations sur le disque, mais inclut également des détails sur les processus, les ressources système et plus encore.

4. Lister les périphériques de bloc avec lsblk

Enfin, nous utilisons l'utilitaire lsblk pour lister les périphériques de bloc, y compris des informations détaillées sur le système de fichiers et les permissions.

echo —LSBLK DISK INFO— >> /home/$USER/diskinfo.txt.txt
sudo lsblk -fm >> /home/$USER/diskinfo.txt 2>&1

Cette commande ajoute les informations sur le périphérique de bloc à notre fichier diskinfo.txt, complétant ainsi le processus de collecte.

Analyse des données collectées

Une fois que le fichier diskinfo.txt est généré, vous pouvez l'ouvrir avec n'importe quel éditeur de texte pour analyser les informations du disque.

Le fichier contiendra des sections étiquetées avec des en-têtes tels que «—PARTED DISK INFO—», «—INXI DISK INFO—» et «—LSBLK DISK INFO—».

Chaque section fournit différentes perspectives sur la configuration du disque, vous permettant de faire des références croisées et de vérifier les données.

Voici le contenu du fichier diskinfo.txt sur mon système Debian 12 :

—PARTED DISK INFO—
Model: JMicron Generic (scsi)
Disk /dev/sda: 1000GB
Sector size (logical/physical): 512B/4096B
Partition Table: msdos
Disk Flags: 
Number  Start   End     Size    Type     File system  Flags
 1      1049kB  1000GB  1000GB  primary               boot
 2      1000GB  1000GB  33.6MB  primary  fat16        esp

Model: WD_BLACK SN750 SE 500GB (nvme)
Disk /dev/nvme0n1: 500GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 
Number  Start   End    Size    File system     Name  Flags
 1      1049kB  538MB  537MB   fat32                 boot, esp
 2      538MB   499GB  499GB   ext4
 3      499GB   500GB  1023MB  linux-swap(v1)        swap

—INXI DISK INFO—
Logical:
  Message: No logical block device data found.
RAID:
  Message: No RAID data found.
Drives:
  Local Storage: total: 1.36 TiB used: 1.05 TiB (77.0%)
  ID-1: /dev/nvme0n1 vendor: Western Digital model: WD BLACK SN750 SE 500GB
    size: 465.76 GiB temp: 38.9 C
  ID-2: /dev/sda type: USB vendor: Western Digital model: WDS100T2G0A-00JH30
    size: 931.51 GiB
Partition:
  ID-1: / size: 455.95 GiB used: 269.25 GiB (59.1%) fs: ext4
    dev: /dev/nvme0n1p2 label: N/A uuid: 99406049-9ff5-47d1-a1ce-d5e27cd859c0
  ID-2: /boot/efi size: 511 MiB used: 9.2 MiB (1.8%) fs: vfat
    dev: /dev/nvme0n1p1 label: N/A uuid: CF87-3143
  ID-3: /etc/pve size: 128 MiB used: 16 KiB (0.0%) fs: fuse dev: /dev/fuse
    label: N/A uuid: N/A
  ID-4: /media/ostechnix/SK_WD_SSD size: 931.45 GiB used: 806.62 GiB (86.6%)
    fs: exfat dev: /dev/sda1 label: SK_WD_SSD uuid: 2A81-C276
Swap:
  ID-1: swap-1 type: partition size: 976 MiB used: 256 KiB (0.0%)
    dev: /dev/nvme0n1p3 label: N/A uuid: 1ff239fc-674c-4749-9c73-fe5d0668071a
Unmounted:
  ID-1: /dev/sda2 size: 32 MiB fs: vfat label: VTOYEFI uuid: 5A89-BA75
—LSBLK DISK INFO—
NAME        FSTYPE FSVER LABEL     UUID                                 FSAVAIL FSUSE% MOUNTPOINTS                  SIZE OWNER GROUP MODE
sda                                                                                                               931.5G root  disk  brw-rw----
├─sda1      exfat  1.0   SK_WD_SSD 2A81-C276                             124.8G    87% /media/ostechnix/SK_WD_SSD 931.5G root  disk  brw-rw----
└─sda2      vfat   FAT16 VTOYEFI   5A89-BA75                                                                         32M root  disk  brw-rw----
nvme0n1                                                                                                           465.8G root  disk  brw-rw----
├─nvme0n1p1 vfat   FAT32           CF87-3143                             501.8M     2% /boot/efi                    512M root  disk  brw-rw----
├─nvme0n1p2 ext4   1.0             99406049-9ff5-47d1-a1ce-d5e27cd859c0  163.5G    59% /                          464.3G root  disk  brw-rw----
└─nvme0n1p3 swap   1               1ff239fc-674c-4749-9c73-fe5d0668071a                [SWAP]                       976M root  disk  brw-rw----

Automatiser la collecte d'informations sur le disque en utilisant le script Diskinfo

Ci-dessous se trouve un script Bash qui automatise le processus de collecte d'informations sur le disque en utilisant les utilitaires parted, inxi et lsblk.

Le script invite l'utilisateur à choisir s'il souhaite enregistrer la sortie dans un fichier ou l'afficher dans la sortie standard.

Il vérifie également si les commandes requises sont installées et fournit des instructions sur la façon de les installer si elles manquent.

Script : diskinfo.sh

#!/usr/bin/env bash

# ------------------------------------------------------------------
# Script Name:   DiskInfo
# Description:   A Bash Script to gather comprehensive
#                Disk information on Linux.
# Website:       https://gist.github.com/ostechnix
# Version:       1.0
# Usage:         ./diskinfo.sh
# ------------------------------------------------------------------

# Ensure `sudo` is authenticated at the beginning
echo "This script requires elevated privileges to run certain commands."
sudo -v || { echo "Error: You must provide sudo privileges to run this script."; exit 1; }

# Add `/sbin` and `/usr/sbin` to PATH to ensure command detection
export PATH=$PATH:/sbin:/usr/sbin

# Function to check if a command exists
check_command() {
    if ! command -v "$1" &> /dev/null; then
        echo "Error: '$1' is not installed or not accessible."
        missing_commands+=("$1")
    fi
}

# Function to gather disk information
gather_disk_info() {
    echo "==================================================="
    echo
    echo "-- PARTED DISK INFO --"
    echo "----------------------"
    sudo parted -ls
    echo
    echo "-- INXI DISK INFO --"
    echo "--------------------"
    sudo inxi -DpRjlLoux
    echo
    echo "-- LSBLK DISK INFO --"
    echo "---------------------"
    sudo lsblk -fm
    echo
    echo "==================================================="
}

# Check for required commands
missing_commands=()
check_command "parted"
check_command "inxi"
check_command "lsblk"

# If any command is missing, prompt the user to install them
if [ ${#missing_commands[@]} -ne 0 ]; then
    echo "The following commands are required but not installed: ${missing_commands[*]}"
    echo "Please install them using your package manager. For example:"
    echo "  sudo apt install parted inxi util-linux  # For Debian/Ubuntu"
    echo "  sudo dnf install parted inxi util-linux  # For Fedora/RHEL"
    echo "  sudo pacman -S parted inxi util-linux    # For Arch Linux"
    exit 1
fi

# Prompt the user for their choice
echo "Do you want to save the disk information to a file or display it on the terminal?"
echo "Enter '1' to save to a file or '2' to display on the terminal."
read -p "Your choice (1/2): " choice

if [[ "$choice" == "1" ]]; then
    # Save the output to a file
    output_file=~/diskinfo.txt
    {
        echo
    echo "-- PARTED DISK INFO --"
        echo "----------------------"
        sudo parted -ls
        echo
        echo "-- INXI DISK INFO --"
        echo "--------------------"
        sudo inxi -DpRjlLoux
        echo
        echo "-- LSBLK DISK INFO --"
        echo "---------------------"
        sudo lsblk -fm
        echo
        echo "==================================================="
    } > "$output_file" 2>&1

    echo "Disk information has been saved to $output_file"
elif [[ "$choice" == "2" ]]; then
    # Display the output in the terminal
    gather_disk_info
else
    echo "Invalid choice. Please run the script again and choose either '1' or '2'."
    exit 1
fi

Afficher ou enregistrer les informations du disque dans un fichier en utilisant le script Diskinfo

Copiez le script ci-dessus dans un fichier nommé diskinfo.sh.

Exécutez la commande suivante pour rendre le script exécutable :

chmod +x diskinfo.sh

Exécutez le script en lançant :

./diskinfo.sh

Ce script enregistrera les informations détaillées sur le disque dans un fichier texte nommé diskinfo.txt dans votre répertoire HOME.

Vous pouvez également déplacer le script vers le PATH de votre système et l'exécuter depuis n'importe où. Les choix courants incluent /usr/local/bin ou /usr/bin. Par exemple :

sudo mv diskinfo.sh /usr/local/bin/diskinfo

Redémarrez votre session de shell actuelle ou déconnectez-vous et reconnectez-vous. Dorénavant, vous pouvez simplement exécuter la commande diskinfo depuis n'importe où pour afficher des informations complètes sur votre disque.

Explication du script :

  • check_command Fonction : Cette fonction vérifie si une commande est installée. Sinon, elle fournit des instructions d'installation et termine le script.
  • Invite de l'utilisateur : Le script invite l'utilisateur à choisir entre enregistrer la sortie dans un fichier ou l'afficher dans la sortie standard.
  • Gestion de la sortie : Selon le choix de l'utilisateur, le script enregistre soit la sortie dans un fichier (diskinfo.txt dans le répertoire personnel de l'utilisateur) soit l'affiche directement dans le terminal.
  • Gestion des erreurs : Le script vérifie la présence des commandes nécessaires (parted, inxi, lsblk) et fournit des instructions d'installation si l'une d'entre elles est manquante.

Ce script automatise le processus de collecte des informations sur le disque et fournit une interface conviviale permettant de choisir la méthode de sortie.

Il garantit également que tous les outils requis sont installés, ce qui facilite le dépannage et la maintenance des systèmes Linux par les utilisateurs.

Conclusion

Dans ce guide, nous avons appris une approche étape par étape pour recueillir des informations sur le disque sous Linux en utilisant les utilitaires parted, inxi et lsblk. Ces utilitaires vous aideront à collecter et analyser efficacement les données des disques dans n'importe quelle distribution Linux.

Nous avons également fourni un script Bash simple pour automatiser ce processus. J'espère que cela aide.

Lecture connexe :

  • Analyse de l'espace disque simplifiée : Comprendre les commandes df et du sous Linux
  • Comment Trouver les Détails du Disque Dur sous Linux
  • Comment Trouver les Détails du Système Linux en Utilisant inxi
  • Comment trouver les spécifications matérielles sur Linux
  • Trouver les informations matérielles du système Linux avec Hwinfo
  • Neofetch - Affichez les informations de votre système Linux
  • Trouver les détails du système Linux en utilisant Python