Website-Suche

Wie man umfassende Festplatteninformationen unter Linux sammelt


Das Verständnis der Festplattenkonfiguration und des Zustands Ihres Linux-Systems ist wichtig für Systemadministration, Fehlerbehebung und Optimierung. In diesem Blogbeitrag führen wir Sie durch einen detaillierten Prozess, wie man umfassende Festplatteninformationen in Linux anzeigt oder sammelt unter Verwendung beliebter Dienstprogramme wie parted, inxi und lsblk.

Am Ende dieses Leitfadens werden Sie ein klares Verständnis dafür haben, wie man Festplattendaten sammelt und analysiert, was nützlich sein kann, um Ihre Linux-Umgebung zu warten und zu optimieren.

Lass uns anfangen.

Schritt-für-Schritt-Anleitung zum Sammeln von Festplatteninformationen in Linux

1. Vorbereitung der Ausgabedatei

Der erste Schritt besteht darin, eine Textdatei zu erstellen, in der alle Festplatteninformationen gespeichert werden. Diese Datei wird in Ihrem Home-Verzeichnis gespeichert und drives.txt genannt.

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

Dieser Befehl initialisiert die Datei diskinfo.txt mit einer Kopfzeile, die angibt, dass die folgenden Informationen sich auf Festplattenpartitionen beziehen werden.

2. Verwendung von parted, um Festplattenpartitionen aufzulisten

Als Nächstes verwenden wir das parted-Dienstprogramm, um alle Festplattenpartitionen auf dem System aufzulisten. Dieser Befehl erfordert Superuser-Rechte, daher verwenden wir sudo.

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

Die Ausgabe dieses Befehls wird an die Datei drives.txt angehängt und liefert detaillierte Informationen über jede Festplattenpartition.

3. Sammeln von Festplatteninformationen mit inxi

Das inxi-Dienstprogramm ist ein leistungsstarkes Werkzeug zum Sammeln von Systeminformationen, einschließlich detaillierter Festplattendaten. Wir hängen die Ausgabe von inxi an unsere diskinfo.txt-Datei an.

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

Dieser Befehl liefert nicht nur Informationen über die Festplatte, sondern enthält auch Details zu Prozessen, Systemressourcen und mehr.

4. Auflisten von Blockgeräten mit lsblk

Schließlich verwenden wir das lsblk-Dienstprogramm, um Blockgeräte aufzulisten, einschließlich detaillierter Informationen zu Dateisystemen und Berechtigungen.

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

Dieser Befehl fügt die Blockgeräteinformationen zu unserer diskinfo.txt-Datei hinzu und beendet den Erfassungsprozess.

Analyse der gesammelten Daten

Sobald die Datei diskinfo.txt erstellt ist, können Sie sie mit jedem Texteditor öffnen, um die Festplatteninformationen zu analysieren.

Die Datei wird Abschnitte enthalten, die mit Überschriften wie „—PARTED DISK INFO—“, „—INXI DISK INFO—“ und „—LSBLK DISK INFO—“ gekennzeichnet sind.

Jeder Abschnitt bietet unterschiedliche Perspektiven auf die Festplattenkonfiguration, sodass Sie die Daten quer überprüfen und verifizieren können.

Hier ist die Ausgabe der diskinfo.txt-Datei auf meinem Debian-12-System:

—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----

Automatisieren der Sammlung von Festplatteninformationen mit dem Diskinfo-Skript

Unten ist ein Bash-Skript, das den Prozess der Sammlung von Festplatteninformationen mit den Programmen parted, inxi und lsblk automatisiert.

Das Skript fordert den Benutzer auf, zu wählen, ob er die Ausgabe in einer Datei speichern oder im Standardoutput anzeigen möchte.

Es überprüft auch, ob die erforderlichen Befehle installiert sind, und gibt Anweisungen, wie man sie installiert, falls sie fehlen.

Skript: 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

Anzeige oder Speicherung der Festplatteninformationen in einer Datei mit dem Diskinfo-Skript

Kopiere das obige Skript in eine Datei namens diskinfo.sh.

Führen Sie den folgenden Befehl aus, um das Skript ausführbar zu machen:

chmod +x diskinfo.sh

Führen Sie das Skript aus, indem Sie Folgendes ausführen:

./diskinfo.sh

Dieses Skript speichert die umfangreichen Festplatteninformationen in einer Textdatei mit dem Namen diskinfo.txt in Ihrem HOME-Verzeichnis.

Sie können das Skript auch in den PATH Ihres Systems verschieben und von überall aus ausführen. Übliche Auswahlmöglichkeiten sind /usr/local/bin oder /usr/bin. Zum Beispiel:

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

Starten Sie Ihre aktuelle Shell-Sitzung neu oder melden Sie sich ab und wieder an. Von nun an können Sie einfach den Befehl diskinfo von überall ausführen, um umfassende Informationen über Ihre Festplatte anzuzeigen.

Drehbucherklärung:

  • check_command-Funktion: Diese Funktion prüft, ob ein Befehl installiert ist. Falls nicht, gibt sie Installationsanweisungen aus und beendet das Skript.
  • Benutzeraufforderung: Das Skript fordert den Benutzer auf, zwischen dem Speichern der Ausgabe in einer Datei oder der Anzeige in der Standardausgabe zu wählen.
  • Ausgabehandhabung: Abhängig von der Wahl des Benutzers speichert das Skript die Ausgabe entweder in einer Datei (diskinfo.txt im Home-Verzeichnis des Benutzers) oder zeigt sie direkt im Terminal an.
  • Fehlerbehandlung: Das Skript überprüft das Vorhandensein der erforderlichen Befehle (parted, inxi, lsblk) und gibt Installationsanweisungen, falls einer fehlt.

Dieses Skript automatisiert den Prozess der Sammlung von Festplatteninformationen und bietet eine benutzerfreundliche Oberfläche zur Auswahl der Ausgabemethode.

Es stellt auch sicher, dass alle erforderlichen Werkzeuge installiert sind, wodurch es für Benutzer einfacher wird, ihre Linux-Systeme zu beheben und zu warten.

Fazit

In diesem Leitfaden haben wir einen schrittweisen Ansatz zum Sammeln von Festplatteninformationen unter Linux mithilfe der parted, inxi und lsblk-Dienstprogramme kennengelernt. Diese Dienstprogramme helfen Ihnen, Festplattendaten in jeder Linux-Distribution effizient zu sammeln und zu analysieren.

Wir haben auch ein einfaches Bash-Skript gegeben, um diesen Prozess zu automatisieren. Hoffentlich hilft das.

Verwandte Lektüre:

  • Festplattenplatzanalyse leicht gemacht: Die Befehle df und du in Linux verstehen
  • So finden Sie Festplattendetails unter Linux
  • So finden Sie Linux-Systemdetails mit inxi
  • So finden Sie Hardware-Spezifikationen unter Linux
  • Finden Sie Linux-Systemhardwareinformationen mit Hwinfo
  • Neofetch - Zeigen Sie die Informationen Ihres Linux-Systems an
  • Linux-Systemdetails mit Python finden