Eine trickreiche Methode besteht darin, die Notwendigkeit von sudo
zu umgehen durch Auslesen des Systemlogs mit:
dmesg | grep blocks
Bitte beachten Sie, dass dies möglicherweise nicht ideal ist, sodass Ihre Laufleistung variieren kann...
Wenn Sie die Größe in Bytes und nur den Wert möchten, z. für Skripte:
lsblk -b --output SIZE -n -d /dev/sdX
12220202
-b :Ausgabe in Byte.
-n :Keine Überschriften. Wir wollen nur den reinen Zahlenwert.
--Ausgabegröße :Nur die Größenspalte drucken.
-d /dev/sdXn :Das Gerät, dessen Größe wir wissen wollen. X ist z.B. d, n ist z. B. 1 für die erste Partition der Festplatte d.
Vorteile:
- Root-Rechte sind nicht erforderlich
- grep wird nicht benötigt
- lsblk ist auf den meisten Linux-Systemen verfügbar
Wenn Sie diese Informationen beispielsweise in einem Skript verwenden möchten, verwenden Sie
sudo blockdev --getsz /dev/sda
ist möglicherweise einfacher als fdisk oder hdparm, da es Ihnen nur die relevanten Informationen liefert (einfach mit 512 multiplizieren). Es wird jedoch auch sudo benötigt.
Sie könnten natürlich die Konfiguration von sudo so ändern, dass Sie diesen speziellen Befehl ausführen können, ohne nach dem Passwort zu fragen (ich denke, blockdev --getsz
ist ziemlich sicher, selbst wenn es von einem normalen, nicht privilegierten Benutzer ausgeführt wird).
Dies würde durch Hinzufügen der folgenden Zeile zu /etc/sudoers
erfolgen :
ALL ALL= NOPASSWD:/sbin/blockdev --getsz /dev/*
Achten Sie beim Bearbeiten dieser Datei darauf, den Befehl sudo visudo
zu verwenden und nicht Ihr üblicher Editor. Andernfalls ist es sehr einfach, einen Syntaxfehler zu machen, der dazu führen würde, dass sudo nicht mehr verwendet werden kann (Sie müssten in den Rettungsmodus neu starten, um dies zu beheben).