Я пытаюсь определить общий размер моего жесткого диска, используя df -h
, но он печатает размер каждого раздела и требует sudo
.
Есть ли способ получить общий размер моего жесткого диска с помощью командной строки, не требуя разрешения root?
Я пытаюсь определить общий размер моего жесткого диска, используя df -h
, но он печатает размер каждого раздела и требует sudo
.
Есть ли способ получить общий размер моего жесткого диска с помощью командной строки, не требуя разрешения root?
Хакерский способ - обойти необходимость sudo
, считывая системный журнал:
dmesg | grep blocks
Обратите внимание, что это не может быть идеальным, поэтому ваш пробег может варьироваться ...
Если вы хотите использовать эту информацию в сценарии, например, с помощью
sudo blockdev --getsz /dev/sda
может быть проще, чем fdisk или hdparm, поскольку он только дает вам соответствующую информацию (просто умножьте на 512). Тем не менее, это также потребует sudo.
Конечно, вы можете изменить конфигурацию sudo так, чтобы она позволяла выполнять эту конкретную команду без запроса пароля (я думаю, blockdev --getsz
довольно безопасен, даже если выполняется обычным непривилегированным пользователем).
Это можно сделать, добавив следующую строку в /etc/sudoers
:
ALL ALL= NOPASSWD:/sbin/blockdev --getsz /dev/*
При редактировании этого файла обязательно используйте команду sudo visudo
а не обычный редактор. В противном случае очень легко сделать синтаксическую ошибку, которая приведет к тому, что он больше не сможет использовать sudo (вам придется перезагрузиться в режиме восстановления, чтобы это исправить).
Если вы хотите размер в байтах и только значение, например, для сценариев:
lsblk -b --output SIZE -n -d /dev/sdX
12220202
-b: вывод в байтах.
-n: нет заголовков. Мы хотим только значение чистого числа.
--output SIZE: печатать только размер столбца.
-d /dev /sdXn: устройство, размер которого мы хотим знать. X, например, d, n, например, 1 для первого раздела диска d.
Преимущества:
У вас либо плохая установка, либо абсурдно параноидальный системный администратор. Я никогда не слышал о том, чтобы df
требовал привилегий root. И я работал с несколькими различными разновидностями Unix / Unix-подобных операционных систем.
В любом случае, это даст вам общий размер всех разделов диска (первый столбец df
- /dev/hd...
или /dev/sd...
) в блоках (кБ):
df | grep '^/dev/[hs]d' | awk '{s+=$2} END {print s}'
или в ГБ:
df | grep '^/dev/[hs]d' | awk '{s+=$2} END {print s/1048576}'
Я сейчас не на своем Linux-компьютере, но вы можете попробовать:
hdparm -I /dev/sda
или же
fdisk -l
что также вероятно потребует sudo.
Я нигде не видел, чтобы df требовал root. Это странно.