Как определить блочное устройство, загруженное от в сценарии оболочки?

Возможно, VLAN сделает то, в чем Вы нуждаетесь?

0
задан 8 December 2011 в 20:42
4 ответа

df -P / | хвост -n 1 | awk '/.*/ {print $ 1}'

Возвращает корневое блочное устройство FS. Однако это не обязательно загрузочное устройство.

Лучше спросить, почему вы не сканируете SMART на всех дисках сервера?

3
ответ дан 4 December 2019 в 12:48
cat /proc/mounts |grep /boot |awk '{print $1}'

Вернет что-то вроде / dev / sda1, если ваш / boot не находится на корневом устройстве.
Объедините это с ответом Криса С.

0
ответ дан 4 December 2019 в 12:48

для / boot:

readlink -f / dev / block / $ (mountpoint -d / boot)

для rootfs:

readlink -f / dev / block / $ (точка монтирования -d /)

Объяснение: 1) точка монтирования -d - дает major: младшие номера устройств, смонтированных в

2) Папка / dev / block - содержит символические ссылки на все блочные устройства по номерам устройств, указывающие на обычный файл устройства в / dev

3) readlink -f - восстановить имя устройства из символьной ссылки

Работает на всех современных Linux

0
ответ дан 4 December 2019 в 12:48

Вы, наверное, давно отказались от этой задачи, но я пытался сделать что-то подобное и решил, что посмотрю на недостающую часть вашей головоломки, а именно, чтобы получить обозначение диска (например, / dev / sda ) вместо обозначения раздела (например, ] / dev / sda1 ).

Я начал с отличного ответа Криса С. (который также решил задачу, которую я стремился выполнить), а затем просто использовал старые добрые манипуляции со строками в bash чтобы обрезать число с конца (оставляя вас с диском вместо раздела):

# first, save the output (e.g. /dev/sda1) to a variable
rootpart=$(df -P / | tail -n 1 | awk '/.*/ { print $1 }')

# now you can trim the number off:
echo ${rootpart//[[:digit:]]/}

# if ${rootpart} was "/dev/sda1", output would be "/dev/sda"
0
ответ дан 4 December 2019 в 12:48

Теги

Похожие вопросы