Come elencare i dispositivi del computer dal terminale Linux

Scopri esattamente quali dispositivi si trovano all’interno del tuo computer Linux o collegati ad esso. Copriremo 12 comandi per elencare i dispositivi collegati.

Perché 12 comandi?

Per quanti modi ci siano per scuoiare un gatto, sarei pronto a scommettere che ci sono più modi per elencare i dispositivi che sono collegati o alloggiati all’interno del tuo computer Linux. Ve ne mostreremo 12. E non è tutto!

Inevitabilmente, c’è molta sovrapposizione nelle informazioni che puoi ottenere da questi comandi, quindi perché preoccuparsi di descriverne molti?

Ebbene, per prima cosa, le variazioni nel contenuto e nei dettagli li rendono sufficientemente diversi che alcune persone preferiranno un metodo rispetto a un altro. Il formato di output di un comando potrebbe prestarsi particolarmente bene a un caso d’uso specifico. Il formato di un altro comando potrebbe essere idealmente adatto per essere reindirizzato tramite grep o un altro metodo di ulteriore elaborazione.

In primo luogo, però, è rendere l’articolo il più generale possibile. Piuttosto che decidere quali comandi interesseranno o utilizzeranno i nostri lettori, preferiremmo fornire un ampio campione dei comandi disponibili e chiedere ai nostri lettori di scegliere quali useranno e quali lasceranno intatti.

Alcune installazioni richieste

La maggior parte di questi comandi sono inclusi nella distribuzione Linux per impostazione predefinita. Ubuntu, Fedora e Manjaro sono stati utilizzati come un campione rappresentativo di distribuzioni dai rami principali delle famiglie Debian, Red Hat e Arch.

Tutte e tre le distribuzioni erano necessarie per installare procinfo, che fornisce il comando lsdev. Anche il comando lsscsi doveva essere installato su tutti e tre.

Per installare lsdev e lsscsi, usa questi comandi.

Ubuntu:

sudo apt-get install procinf
sudo apt-get install lsscsi

sudo apt-get install procinf in una finestra di terminale

Fedora:

sudo dnf install procinfo
sudo dnf install lsscsi

sudo dnf installa procinfo in una finestra di terminale

sudo dnf installa lsscsi in una finestra di terminale

Manjaro

sudo pacman -Syu procinfo
sudo pacman -Syu lsscsi

sudo pacman -Syu lsscsi in una finestra di terminale

sudo pacman -Syu procinfo in una finestra di terminale

Sorprendentemente, Manjaro, famoso per essere un tipo di distribuzione essenziale, era la distribuzione che aveva la maggior parte dei comandi preinstallati.

Ubuntu e Fedora necessitavano dell’installazione di hwinfo e Fedora richiedeva anche l’installazione di lshw e hdparm.

Ubuntu:

sudo apt-get install hwinfo

sudo apt-get install hwinfo in una finestra di terminale

Fedora:

sudo dnf install hwinfo
sudo dnf install lshw
sudo dnf install hdparm

sudo dnf installa hwinfo in una finestra di terminale

sudo dnf installa hwinfo in una finestra di terminale

sudo dnf installa lshw in una finestra di terminale

1. Il comando mount

Il comando mount è usato per montare i filesystem.

Ma l’emissione del comando senza parametri fa sì che elenchi tutti i filesystem montati, così come i dispositivi su cui si trovano. Quindi possiamo usarlo come mezzo per scoprire quei dispositivi.

mount

montare in una finestra di terminale

L’output di mount può essere più lungo del previsto, soprattutto se è stato utilizzato il metodo snap per installare il software. Ogni volta che usi snap acquisisci un altro pseudo-filesystem e questi vengono elencati da mount. Naturalmente, questi non hanno dispositivi fisici associati, quindi stanno solo oscurando l’immagine reale.

output da mount in una finestra di terminale

Se si individua un vero filesystem nell’elenco che si trova su un disco rigido, è possibile isolarlo con grep.

I dischi rigidi sono identificati dal nome, solitamente chiamato “sd” seguito da una lettera che inizia con “a” per la prima unità, “b” per la seconda unità e così via. Le partizioni vengono identificate aggiungendo 1 per la prima partizione e 2 per la seconda e così via.

Quindi il primo disco rigido sarebbe sda ​​e la prima partizione su quell’unità sarebbe chiamata sda1. I dischi rigidi sono interfacciati tramite file di dispositivo speciali (chiamati file di blocco) in / dev e quindi montati da qualche parte nell’albero del filesystem.

Questo comando utilizzava grep per filtrare i dettagli di qualsiasi unità che inizia con “sd”.

mount | grep /dev/sd

montare |  grep / dev / sd in una finestra di terminale

L’output contiene il singolo disco rigido della macchina che è stato utilizzato per la ricerca in questo articolo.

montare l'output in una finestra di terminale

La risposta di mount ci dice che il drive / dev / sda è montato in / (la radice dell’albero del filesystem) e ha un filesystem ext4. “Rw” indica che è stato montato in modalità di lettura-scrittura

Relatime è lo schema utilizzato dalle routine di aggiornamento del timestamp dei file. L’ora di accesso non viene scritta sul disco a meno che l’ora di modifica (mtime) o l’ora di modifica (ctime) di un file non sia più recente dell’ultima ora di accesso, o l’ora di accesso (atime) sia più vecchia di una soglia definita dal sistema . Ciò riduce notevolmente il numero di aggiornamenti del disco che devono essere eseguiti per i file a cui si accede di frequente.

“Errors = remount-ro” indica che se ci sono errori sufficientemente gravi, il filesystem verrà rimontato in modalità di sola lettura.

Per poter scorrere l’output di mount e individuare più facilmente i filesystem montati sui dispositivi, convogliare l’output da mount a less.

mount | less

montare |  meno in una finestra di terminale

Scorri l’output finché non vedi i filesystem collegati ai file speciali / dev.

montare [piped through less in a terminal window

2. The lsblk Command

The lsblk command lists the block devices, their mount point, and other information. Type lsblk at a command line:

lsblk

lsblk in a terminal window

The output shows:

Name: the name of the block device
Maj:Min: The major number shows the device type. The minimum number is the number of the current device out of the list of devices of that type. 7:4, for example, means loop device number 4.
RM: Whether the device is removable or not. 0 means no, 1 means yes.
Size is the capacity of the device.
RM: Whether the device is read-only or not. 0 means no, 1 means yes.
Type: The type of the device, for example, loop, dir (directory), disk, rom (CD ROM), and so on.
Mountpoint: Where the filesystem of the device is mounted.

lsblk output in a terminal window

To de-clutter the output and remove the loop devices, we can use the -e (exclude) option and provide the number of the type of devices we wish to ignore.

This command will cause lsblk to ignore the loop (7) and cd room (11) devices.

lsblk -e 7,11

lsblk -e 7,11 in a terminal window

The results now only contain the hard drive sda.

lsblk output in a terminal window

3. The df Command

The df command reports on drive capacities and used and free space.

Type df on the command line and press Enter.

df

df in a terminal window

The output table shows:

Fileystem: The name of this filesystem.
1K-Blocks: The number of 1K blocks that are available on this filesystem.
Used: The number of 1K blocks that have been used on this file system.
Available: The number of 1K blocks that are unused on this file system.
Use%: The amount of space used in this file system given as a percentage.
File: The filesystem name, if specified on the command line.
Mounted on: The mount point of the filesystem.

output from df in a terminal window

To remove unwanted entries from the output, use the -x (exclude) option. This command will prevent the loop device entries from being listed.

df -x squashfs

df -x squashfs in a terminal window

The compact output is much easier to parse for the important information.

df output in a terminal window

4. The fdisk Command

The fdisk command is a tool designed to manipulate the disk partition table, but it can be used to view information as well. We can use this to our advantage when we are investigating the devices in a computer.

We will use the -l (list) option to list the partition tables. Because the output might be very long, we will pipe the output from fdisk through less. Because fdisk has the potential to alter disk partition tables, we must use sudo.

sudo fdisk -l

fdisk -l in a terminal window

By scrolling through less you will be able to identify the hardware devices. Here is the entry for hard drive sda. This is a physical hard drive of 10 GB.

output from fdisk in a terminal window

Now that we know the identity of one of the hardware devices we can ask fdisk to report on that item alone.

sudo fdisk -l /dev/sda

sudo fdisk -l /dev/sda in a terminal window

We get an output of considerably reduced length.

output of fdisk in a terminal window

5. The /proc Files

The pseudo-files in /proc can be viewed to obtain some system information. The file we will look at is /proc/mounts, which will give us some information regarding the mounted filesystems. We will use nothing grander than cat  to view the file.

cat /proc/mounts

cat /proc/mounts  in a terminal window

The listing shows the special device file in /dev that is used to interface to the device and the mount point on the filesystem tree.

output from cat /proc/mounts in a terminal window

We can refine the listing by using grep to look for entries with /dev/sd in them. This will filter out the physical drives.

cat /proc/mounts | grep /dev/sd

cat /proc/mounts | grep /dev/sd in a terminal window

This gives us a much more manageable report.

output from cat /proc/mounts in a terminal window

We can be slightly more inclusive by using grep to look for devices that have  /dev/sd and /dev/sr special device files. This will include hard drives and the CD ROM for this machine.

cat /proc/partitions | grep s[rd]

cat / proc / partitions |  grep s[rd] in una finestra di terminale

Ora ci sono due dispositivi e una partizione inclusi nell’output.

output da cat / proc / mounts in una finestra di terminale

6. Il comando lspci

Il comando lspci elenca tutti i dispositivi PCI nel tuo computer.

lspci

lspci in una finestra di terminale

Le informazioni fornite sono:

Slot: lo slot in cui è inserito il dispositivo PCi
Classe: la classe del dispositivo.
Nome del fornitore: il nome del produttore.
Nome dispositivo: il nome del dispositivo.
Sottosistema: nome del fornitore del sottosistema (se il dispositivo ha un sottosistema).
Nome sottosistema: se il dispositivo ha un sottosistema.
Numero di revisione: il numero di versione del dispositivo
Interfaccia di programmazione: l’interfaccia di programmazione, se il dispositivo ne fornisce una.

lspci in una finestra di terminale

7. Il comando lsusb

Il comando lsusb elencherà i dispositivi che sono collegato alle porte USB sul tuo computer e sui dispositivi abilitati USB che sono incorporati nel tuo computer.

lsusb

lsusb in una finestra di terminale

A questo computer di prova è collegato uno scanner Canon come dispositivo USB 5 e un’unità USB esterna come dispositivo USB 4. I dispositivi 3 e 1 sono gestori di interfaccia USB interni.

Dispositivi USB elencati in una finestra di terminale

È possibile ricevere un elenco più dettagliato utilizzando l’opzione -v (verbose) e una versione ancora più dettagliata utilizzando -vv.

8. Il comando lsdev

Il comando lsdev visualizza le informazioni su tutti i dispositivi installati.

Questo comando genera molto output, quindi lo faremo passare attraverso meno.

lsdev | less

lsdev |  meno in una finestra di terminale

Ci sono molti dispositivi hardware elencati nell’output.

L'output di lsdev viene inviato tramite pipe in una finestra di terminale

9. Il comando lshw

Il comando lshw elenca i dispositivi collegato al tuo computer. Questo è un altro comando con molto output. Sul computer di prova sono state generate oltre 260 righe di informazioni. Lo convogliamo di meno ancora una volta.

Nota che devi usare sudo con lshw per ottenere il massimo da esso. Se non lo fai, non sarà in grado di accedere a tutti i dispositivi.

sudo lshw | less

sudo lshw |  meno in una finestra di terminale

Ecco la voce per il CD ROM con un’interfaccia SCSI. Come puoi vedere le informazioni fornite per ogni dispositivo sono molto dettagliate. lshw legge la maggior parte delle sue informazioni dai vari file in / proc.

output di lshw in less in una finestra di terminale

Se si desidera un output più breve e meno dettagliato, è possibile utilizzare l’opzione –short.

10. Il comando lsscsi

Come puoi immaginare, il comando lsscsi elenca i dispositivi SCSI collegato al tuo computer.

lsscsi

lsscsi in una finestra di terminale

Ecco i dispositivi SCSI collegati a questa macchina di prova.

output lsscsi in un terminale widnow

11. Il comando dmidecode

I comandi dmidecode decodificano i file Tabelle DMI (Desktop Management Interface)ed estrae le informazioni relative all’hardware collegato al computer e all’interno del computer.

Il DMI è anche a volte indicato come SMBIOS (System Management Basic Input / Output System) sebbene siano in realtà due standard diversi.

Ancora una volta, lo faremo passare di meno.

dmidecode | less

dmidecode output in una finestra di terminale

Il comando dmidecode può segnalare oltre 40 diversi tipi di hardware.

12. Il comando hwinfo

Il comando hwinfo è il più dettagliato di tutti. Quando diciamo che devi convogliare qualcosa di meno, questa volta non è opzionale. Sul computer di prova, ha generato 5850 linee di output!

Puoi iniziare delicatamente includendo l’opzione –short.

hwinfo --short

hwinfo --short in una finestra di terminale

Se hai davvero bisogno di vedere i dettagli più fini, ripeti l’operazione e ometti l’opzione –short.

output da hwinfo in less in una finestra di terminale

Avvolgetelo

Quindi, ecco la nostra dozzina di modi per indagare sui dispositivi all’interno o collegati al tuo computer.

Qualunque sia il tuo interesse particolare nella ricerca di questo hardware, ci sarà un metodo in questo elenco che ti consentirà di trovare ciò di cui hai bisogno.