Osvědčeným způsobem je obejít potřebu sudo
přečtením systémového protokolu pomocí:
dmesg | grep blocks
Vezměte prosím na vědomí, že to nemusí být ideální, takže se vaše kilometry mohou lišit...
Pokud chcete velikost v bajtech a pouze hodnotu např. pro skriptování:
lsblk -b --output SIZE -n -d /dev/sdX
12220202
-b :Výstup v bajtech.
-n :Žádné nadpisy. Chceme pouze čistou číselnou hodnotu.
-- VELIKOST výstupu :Vytiskněte pouze sloupec velikosti.
-d /dev/sdXn :Zařízení, jehož velikost chceme znát. X je např. d, n je např. 1 pro první oddíl disku d.
Výhody:
- práva root nejsou potřeba
- grep není potřeba
- lsblk je k dispozici na většině linuxových systémů
Pokud chcete tyto informace použít ve skriptu, například pomocí
sudo blockdev --getsz /dev/sda
může být jednodušší než fdisk nebo hdparm, protože vám poskytne pouze relevantní informace (stačí vynásobit 512). Bude však také vyžadovat sudo.
Můžete samozřejmě změnit konfiguraci sudo tak, aby umožňovala provést tento konkrétní příkaz bez požadavku na heslo (myslím, že blockdev --getsz
je docela bezpečný, i když jej spouští normální neprivilegovaný uživatel).
To lze provést přidáním následujícího řádku do /etc/sudoers
:
ALL ALL= NOPASSWD:/sbin/blockdev --getsz /dev/*
Při úpravě tohoto souboru nezapomeňte použít příkaz sudo visudo
a ne váš obvyklý editor. V opačném případě je velmi snadné udělat chybu v syntaxi, což by vedlo k tomu, že sudo již nebude možné používat (abyste to napravili, museli byste restartovat do záchranného režimu).