Hur man använder lshw i Linux (med ett praktiskt exempel)

0
179

Tänk om det fanns ett kommando som skulle låta dig, på ett enkelt- för att läsa format, se all hårdvara i ditt Linux-system? Välkommen till lshw, det fantastiska verktyget som ofta förbises även av erfarna Linux-proffs.

Vad är lshw?

< p>lshw, ett verktyg, eller bättre verktyg, installerat som standard när du installerar Linux, ger dig en lista över hårdvara som finns i ditt system. Man kan komma ihåg lshw genom att tänka på ls (kommandot som låter dig lista kataloginnehåll) och hw för hårdvara.

Medan verktyget har ett stort antal formateringsalternativ, ger det detaljerad utdata för de enheter som det hittar och kan upptäcka ett stort antal enhetstyper, även erfarna Linux-proffs kanske inte har hört talas om det. Kanske har andra verktyg tagit för mycket av en frontpost på sökmotorer och liknande.

För närvarande kan verktyget upptäcka DMI (x86 och IA-64), OpenFirmware-enhetsträd (PowerPC), PCI/AGP, CPUID (x86), IDE/ATA/ATAPI, PCMCIA, SCSI och USB-enheter.

< p>Du kan till och med installera en grafisk version av samma verktyg med hjälp av ett separat paket, nämligen lshw-gtk. Medan lshw inte behöver installeras och ingår i Linux som standard om du är intresserad av att utforska din hårdvara i ett GUI snarare än på kommandoraden (som den här artikeln kommer att fokusera på), installera lshw-gtk:

Installera lshw-gtk

För att installera lshw-gtkpå din Debian/Apt-baserade Linux-distribution (som Ubuntu och Mint), kör följande kommando i din terminal:

sudo apt install lshw-gtk

Annons

För att installera < i>lshw-gtk på din RedHat/Yum-baserade Linux-distribution (som RHEL, Centos och Fedora), kör följande kommando i din terminal:

sudo yum install lshw-gtk

Om det slutar med att du installerar lshw-gtk, observera att det finns några konstigheter med detta verktyg som kanske inte förväntas. Till att börja med rekommenderar vi att du använder sudo lshw-gtk vid din terminalprompt för att starta lshw-gtk eftersom annars kanske inte all hårdvaruinformation är tillgänglig.

När du sedan har startat verktyget kommer du att vill trycka på Uppdatera-knappen nära toppen eftersom lshw-gtk inte skannar hårdvara som standard, utan bara på begäran.

Slutligen, när din hårdvara skannas några sekunder senare , utgången verkar saknas förutom en enda Skrivbordsdatori kolumnen längst till vänster. Dubbelklicka på detta, dubbelklicka sedan, till exempel Moderkort i den andra kolumnen, och så vidare. Enligt min egen erfarenhet har jag tyckt att det här specifika GUI-verktyget är lite begränsat när jag arbetar.

Känner du till skillnaden mellan en krasch och ett fel och ett påstående? Vår artikel om påståenden, fel och krascher förklarar skillnaden.

Utforska lshw vid Linux-terminalen

När du kör lshw på din Linux-terminal (som vanligtvis kan startas genom att trycka på Windows-tangenten + T på ditt tangentbord, eller genom att trycka på operativsystemets huvudikon (som den gröna cirkeln i Linux Mint) och skriva terminal) kommer du att se en lång och utförlig utdata av hårdvara. lshw gjorde vad den blev instruerad att göra; lista all hårdvara.

Annons

Låt oss få det här att fungera lite bättre genom att begränsa utdata till det vi är intresserade av. För det första bör vi utforska de hårdvaruklasser av utdata som är tillgängliga för oss.

Vi kan göra detta med lshw -short , vilket samtidigt kommer att ge en kortare, mycket mer läsbar översikt av vår hårdvara. Ändå kan utdatalistan vara 1-2 sidor lång, beroende på dina terminalinställningar.

Vi bör också vid denna tidpunkt komma ihåg att alltid använda lshw med sudo. Detta säkerställer att utdata inte blir ofullständig eller felaktig. Att köra lshw som sudo borde vara säkert (berömda sista ord!) eftersom lshw ingår som standard i Linux-operativsystemets kärndistributionsfiler; man skulle hoppas att den har utvärderats grundligt.

sudo lshw -short | head -n6

Här begärde vi en kort lista över all hårdvara som använder lshw – kort, exekveras som root-superanvändaren med sudo, och begränsad till de första sex raderna med utdata med head -n6. Vi pipedutdata från lshw till head genom att använda en Linux-pipe | vilket är en mycket praktisk metod för att efteranalysera information som renderats av ett verktyg till nästan alla andra format som krävs.

När vi kör detta i VirtualBox ser vi en omedelbart intressant bit information: lshw är medveten om att systemet och buss är VirtualBox-baserad. Vi ser också att 8GiB minne tilldelades denna virtuella dator.

Annons

Det är också viktigt att vi kan se klassen av enheter listas, vilket är vad vi kommer att använda i vårt nästa lshw-exempel. Enhetens klassnamn som används i lshw är enkla och lätta att komma ihåg; det finns system, buss, minne, brygga, generisk, multimedia, disk, ingång, volym, display, nätverk, processor och eventuellt några andra.

Använda en enhetsklass för att fråga med lshw

Nu när vi känner till enhetsklassnamnen, låt oss använda detsamma i kombination med alternativet -class (som kan förkortas till -C) för att bara söka efter specifika enheter som vi är intresserade av. Tänk till exempel om vi hade en enkelt sätt att upptäcka om systemet vi använde är en virtualiserad maskin som körs specifikt under 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' ]; upprepa sedan 'Vi använder VirtualBox!'; else echo 'Detta är inte en VirtualBox VM!'; fi

Här körde vi flera kommandon, varje gång byggde vi upp kommandot till mer komplexitet. I det första kommandot frågar vi helt enkelt lshw på samma sätt som tidigare, men den här gången med extra-C-systemalternativet för att bara lista enheter från systemklassen.

Efter en kort skanning (visas inte på skärmdumpen) , eftersom utdata försvinner när skanningen är klar), visas systemklassenheterna, vilket i det här fallet är VirtualBox-systemet.

I nästa kommando grep (select) för endast (tack vare alternativet -o) ordet ‘VirtualBox’. Om utdata inte innehåller ‘VirtualBox’ kommer kommandot inte att ge någon utdata.

Vi har också lagt till och stderr (standardfelutgång) omdirigering till/dev/null använder 2>/dev/null för det udda fallet där sudo lshw skulle ge ett fel. Detta är en vanlig skriptteknik när man överför information från ett kommando till ett annat, men här kanske det är liten möjlighet att ett fel uppträder (men inte omöjligt).

Annons

n det sista kommandot infogar vi den här koden i ett subshell ($(…)) och sedan i en if-sats. I grund och botten ber vi Bash-tolken att kontrollera om utdata från det andra kommandot matchar ‘VirtualBox’.

I så fall kan vi med säkerhet säga Vi använder VirtualBox! . Om du kör den här koden på din dator, förutsatt att du använder Bash, som din kommandoradstolk/skal, och att du inte använder VirtualBox, bör utdata vara Detta är inte en VirtualBox VM! istället .

Avslutning

I den här artikeln utforskade vi lshw och lshw-gtk, Linux-verktygen för att få detaljerad hårdvara och system information från kommandoraden och från ett GUI på ditt skrivbord. Efter att ha utforskat lshw-enhetsklasser tittade vi också på att direkt använda lshw-information för att fastställa om vi kör i VirtualBox eller inte.

Om du gillade att läsa den här artikeln kanske du gillar att läsa How to Use strace to Trace Systemsamtal och signaler nästa!