Поиск по сайту:

Как использовать lshw в Linux (с практическим примером)


Что, если бы существовала команда, которая позволяла бы вам в удобном для чтения формате просматривать все оборудование в вашей системе Linux? Добро пожаловать в lshw, отличный инструмент, который часто упускают из виду даже опытные профессионалы Linux.

Что такое лшв?

lshw Утилита или более совершенный инструмент, устанавливаемый по умолчанию при установке Linux, предоставляет вам список оборудования, которое есть в вашей системе. Можно вспомнить lshw, подумав о ls (команда, позволяющая вывести список содержимого каталога) и hw для оборудования.

Хотя инструмент имеет большое количество параметров форматирования, выдает подробные выходные данные для найденных устройств и может обнаруживать большое количество типов устройств, даже опытные профессионалы Linux, возможно, не слышали о нем. Возможно, другие инструменты заняли слишком много места в поисковых системах и тому подобном.

В настоящее время инструмент может обнаруживать DMI (x86 и IA-64), дерево устройств OpenFirmware (PowerPC), PCI/AGP, CPUID (x86), IDE/ATA/ATAPI, PCMCIA, SCSI и USB-устройства.

Вы даже можете установить графическую версию того же инструмента, используя отдельный пакет, а именно lshw-gtk. Хотя lshw не нужно устанавливать и он включен в Linux по умолчанию, если вы заинтересованы в изучении вашего оборудования в графическом интерфейсе, а не в командной строке (на чем будет сосредоточена эта статья), установите <lshw-gtk:

Установка lshw-gtk

Чтобы установить lshw-gtk в свой дистрибутив Linux на основе Debian/Apt (например, Ubuntu и Mint), выполните следующую команду в своем терминале:

sudo apt установить lshw-gtk

Чтобы установить lshw-gtk в ваш дистрибутив Linux на основе RedHat/Yum (например, RHEL, Centos и Fedora), выполните следующую команду в своем терминале:

sudo yum установить lshw-gtk

Если вы в конечном итоге установите lshw-gtk, обратите внимание, что с этим инструментом есть несколько странностей, которых вы не ожидаете. Для начала рекомендуется использовать sudo lshw-gtk в командной строке терминала для запуска lshw-gtk, поскольку в противном случае может быть доступна не вся информация об оборудовании.

Затем, когда вы запустите инструмент, вам нужно будет нажать кнопку Обновить вверху, так как lshw-gtk не сканирует оборудование по умолчанию, а только по запросу.

Наконец, когда ваше оборудование сканируется через несколько секунд, вывод кажется отсутствующим, за исключением одного Настольного компьютера в крайнем левом столбце. Дважды щелкните это, затем дважды щелкните, например, Материнская плата во втором столбце и т. д. По моему собственному опыту, я обнаружил, что этот конкретный инструмент с графическим интерфейсом во время работы немного ограничен.

Знаете ли вы разницу между сбоем и ошибкой и утверждением? Наша статья Asserts, Errors, and Crashes объясняет разницу.

Изучение lshw в терминале Linux

Когда вы выполняете lshw в терминале Linux (который обычно можно запустить, нажав Ключ Windows + T на клавиатуре или нажав клавишу главный значок операционной системы (например, зеленый кружок в Linux Mint) и набрав терминал), вы увидите длинный и подробный вывод оборудования. lshw сделал то, что ему было приказано; перечислите все оборудование.

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

Мы можем сделать это с помощью lshw -short, что в то же время сделает более кратким и читабельным обзор нашего оборудования. Тем не менее, выходной список может занимать 1-2 страницы, в зависимости от настроек вашего терминала.

Мы также должны помнить, что всегда должны использовать lshw с sudo. Это гарантирует, что вывод не будет неполным или неточным. Запуск lshw как sudo должен быть безопасным (знаменитые последние слова!), поскольку lshw по умолчанию включен в основные файлы дистрибутива операционной системы Linux; хотелось бы надеяться, что он был тщательно оценен.

sudo lshw -short | head -n6

Здесь мы запросили краткий список всего оборудования с помощью lshw -short, выполнили от имени суперпользователя root с помощью sudo и ограничили первые шесть строк вывода с помощью head. -n6. Мы направили вывод из lshw в head с помощью канала Linux |, который является очень удобным методом публикации. -преобразование информации, предоставленной инструментом, в практически любой другой требуемый формат.

Запустив это в VirtualBox, мы сразу же видим интересную информацию: lshw знает, что система и шина основаны на VirtualBox. Мы также видим, что этой виртуальной машине (виртуальная машина) было выделено 8 ГБ памяти.

Также важно то, что мы можем видеть Класс устройств в списке, который мы будем использовать в нашем следующем примере lshw. Имена классов устройств, используемые в lshw, просты и легко запоминаются; есть система, шина, память, мост, общий, мультимедиа, диск, ввод, том, дисплей, сеть , процессор и, возможно, некоторые другие.

Использование класса устройств для запросов с помощью lshw

Теперь, когда мы знаем имена классов устройств, давайте воспользуемся ими в сочетании с опцией -class (которую можно сократить до -C) для запроса только определенных устройств. что нас интересует. Например, что, если бы у нас был простой способ определить, является ли используемая нами система виртуализированной машиной, работающей конкретно под VirtualBox?

sudo lshw -short -C system
sudo lshw -short -C system 2>/dev/null | grep -o 'VirtualBox'
if [ "$(sudo lshw -short -C system 2>/dev/null | grep -o 'VirtualBox')" == 'VirtualBox' ]; then echo 'We are using VirtualBox!'; else echo 'This is not a VirtualBox VM!'; fi

Здесь мы выполнили несколько команд, каждый раз усложняя команду. В первой команде мы просто запрашиваем lshw так же, как и раньше, но на этот раз с дополнительной опцией -C system, чтобы вывести список устройств только из system класс.

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

В следующей команде мы выбираем (благодаря опции -o) только слово «VirtualBox». Если вывод не содержит «VirtualBox», команда не выдаст никакого вывода.

Мы также добавили перенаправление stderr (стандартный вывод ошибок) на /dev/null с использованием 2>/dev/null для нечетного случая, когда sudo lshw выдаст ошибку. Это широко используемый метод сценариев при передаче информации от одной команды к другой, хотя, возможно, здесь маловероятно появление ошибки (но не невозможно).

В последней команде мы вставляем этот код в подоболочку ($ (...)), а затем в оператор if. По сути, мы просим интерпретатор Bash проверить, соответствует ли вывод второй команды ‘VirtualBox’.

Если да, то мы можем с уверенностью сказать Мы используем VirtualBox!. Если вы выполняете этот код на своем компьютере, предполагая, что вы используете Bash, в качестве интерпретатора/оболочки командной строки, и что вы не используете VirtualBox, вывод должен быть Это не VirtualBox ВМ! вместо этого.

Подведение итогов

В этой статье мы рассмотрели lshw и lshw-gtk, инструменты Linux для получения подробной информации об оборудовании и системе из командной строки и из графического интерфейса на рабочем столе. Изучив классы устройств lshw, мы также рассмотрели непосредственное использование информации lshw, чтобы определить, работаем ли мы внутри VirtualBox или нет.

Если вам понравилось читать эту статью, вы можете прочитать далее Как использовать strace для трассировки системных вызовов и сигналов!