Linux: получить имя устройства текущего загрузочного диска

При загрузке устройства с помощью USB-накопителя,

sudo fdisk -l 

Выводит два устройства, отмеченных звездочкой, и вы никогда не узнаете, какое устройство было загружено.

Мне нужен список всех дисков, подключенных к текущему компьютеру, где

 sed -ne 's/.*\([sh]d[a-zA-Z]\+$\)/\/dev\/\1/p' /proc/partitions 

Это хороший способ, он выводит

 /dev/sda /dev/sdb 

Это дает мне подсказку, которая является загрузочным устройством, которое имеет важное значение для загрузки из одного и безопасного удаления другого – автоматически (вставлять, загружать, запускать …), поскольку я делаю это на связке Машин в одно время, следя за тем, чтобы на клиентских компьютерах не осталось данных.

 awk '$2 == "/"' /proc/self/mounts 

Это дает вам UUID-номер, но как найти /dev/sd? Принадлежащих ему?

(Подсказка о «использовании UUID» не помогает – я не хочу перенастраивать систему, я хочу ее очистить. Конечно, я могу назначить новые UUID при этом, это стоит секунды, но это определенно не Цель, и все еще не учитывает тот факт, что я не знаю, какое устройство /dev/sd? Дать новый.)

dban выполнил эту работу, но не будет использовать ее в будущем.

У вас почти есть это с вашим вызовом awk . Достаточно немного небольших настроек.

 awk '$1 ~ /^\/dev\// && $2 == "/" { print $1 }' /proc/self/mounts 

Часть $1 ~ /^\/dev\// требует, чтобы любая удовлетворяющая строка называла устройство где-то в / dev. Теперь все, что нам нужно, это сопоставление с именем UUID устройства с назначенным им именем ядра, что легко, так как все имена, перечисленные, будут либо этим именем напрямую, либо символической ссылкой (в конечном счете), указывающей на это имя, поэтому мы можем просто почувствовать ls -l к ls -l нравится так:

 ls -l $(awk '$1 ~ /^\/dev\// && $2 == "/" { print $1 }' /proc/self/mounts) 

Это должно дать вам одну строку вывода, которая сообщает вам, какое физическое устройство в настоящее время смонтировано корневой файловой системой. Это не будет надежным, поэтому я бы не стал автоматизировать что-либо потенциально разрушительное, основанное только на этом, но для человека, который просто хочет помочь в определении того, на каком устройстве указывать, этого должно быть достаточно.

  • Как заставить GPG использовать консольный режим pinentry для запроса паролей?
  • «Смотреть» вывод команды до тех пор, пока не будет наблюдаться определенная строка, а затем выйдите
  • Как установить VIM на Linux, если у меня нет прав root?
  • Переименование изображений по дате с правильным временем
  • Как я могу автоматически отправлять зашифрованную почту gpg из командной строки linux?
  • Shell scripting: способ анализа параметров из командной строки
  • Нулевое заполнение и случайное заполнение
  • Есть ли поддержка Linux для TRIM на дисках SSD?
  • Копирование удаленных файлов на nfs без обратной связи
  • Как настроить внешние репозитории yum?
  • Как сделать адрес сервера имен постоянным в /etc/resolv.conf?
  • Interesting Posts

    Онлайн-менеджер паролей с возможностями совместного доступа

    большая проблема в преобразовании строки в datetime с использованием linq-to-entity

    Угловой UI-маршрутизатор – вложенные состояния с несколькими макетами

    Не удается удалить каталог с помощью Directory.Delete (путь, истина)

    Windows 8 не ищет / индексирует вторичные жесткие диски?

    Как заставить браузер запрашивать пароль?

    Как отлаживать приложение Android по строкам с помощью Eclipse?

    Как устранить ошибку «Отсутствие спецификации материалов» при обновлении OSX 10.3 до 10.5?

    Зачем использовать Precompiled Headers (C / C ++)?

    Модель мощности источника питания

    Как переменные экземпляра Rails передаются в представления?

    Как добавить больше места в раздел Fedora (LVM)?

    MySQL INSERT IF (пользовательские операторы if)

    Как работает hash-таблица?

    Могу ли я отключить печатные листы небольших целых чисел в виде строк в оболочке Erlang?

    Давайте будем гением компьютера.