Guida comandi Linux: hardware

Guida comandi Linux: hardware

by Pubblicato: 7 febbraio 2017 0 commenti

In questo articolo esamineremo i comandi Linux per controllare e gestire l’hardware.

Il più comune di tutti è il famoso dmesg, che di fatto permette di avere una disanima completa dell’hardware riconosciuto e delle fasi di boot in cui ciò avviene. E’ molto utile ad esempio quando inserite una periferica usb, tipo un disco esterno o una chiavetta, poiché si potrà capire come viene vista e su quale /dev interno viene caricato.

Questo comando ha un sacco di opzioni:

Usage:
dmesg options

Display or control the kernel ring buffer.

Options:
-C, --clear                 clear the kernel ring buffer
-c, --read-clear            read and clear all messages
-D, --console-off           disable printing messages to console
-E, --console-on            enable printing messages to console
-F, --file <file>           use the file instead of the kernel log buffer
-f, --facility <list>       restrict output to defined facilities
-H, --human                 human readable output
-k, --kernel                display kernel messages
-L, --color[=<when>]        colorize messages (auto, always or never)
colors are enabled by default
-l, --level <list>          restrict output to defined levels
-n, --console-level <level> set level of messages printed to console
-P, --nopager               do not pipe output into a pager
-r, --raw                   print the raw message buffer
-S, --syslog                force to use syslog(2) rather than /dev/kmsg
-s, --buffer-size <size>    buffer size to query the kernel ring buffer
-u, --userspace             display userspace messages
-w, --follow                wait for new messages
-x, --decode                decode facility and level to readable string
-d, --show-delta            show time delta between printed messages
-e, --reltime               show local time and time delta in readable format
-T, --ctime                 show human readable timestamp (may be inaccurate!)
-t, --notime                don't print messages timestamp
--time-format <format>  show time stamp using format:
[delta|reltime|ctime|notime|iso]
Suspending/resume will make ctime and iso timestamps inaccurate.

-h, --help     display this help and exit
-V, --version  output version information and exit

Supported log facilities:
kern - kernel messages
user - random user-level messages
mail - mail system
daemon - system daemons
auth - security/authorization messages
syslog - messages generated internally by syslogd
lpr - line printer subsystem
news - network news subsystem

Supported log levels (priorities):
emerg - system is unusable
alert - action must be taken immediately
crit - critical conditions
err - error conditions
warn - warning conditions
notice - normal but significant condition
info - informational
debug - debug-level messages

Sicuramente una delle più importanti, visto che il comando senza parametri non lo include, è l’opzione -e che di fatto mette un timestamp all’evento registrato, in questo modo ad esempio facendo seguire un filtro (grep) come ulteriore opzione, si riesce a capire quando tale evento è avvenuto.

CPU, Memoria e device.. info

eseguendo il cat di /proc/cpuinfo si otterranno le informazioni del processore divise per singolo core. Identico per Memoria e interrutps, ovvero componenti della scheda madre.

cat /proc/cpuinfo

cat /proc/meminfo

cat /proc/interrupts

LSHW

lshw è un comando che mostra in modo più organico, ovvero diviso in modalità ad albero, le informazioni viste in precedenza, ed andando più nello specifico ad esempio sul numero di porte pci, ethernet eccetera.

Sono previste varie opzioni utili, come l’esportazione in xml o html:

usage: lshw [-format] [-options ...] 
       lshw -version 
 
        -version        print program version (B.02.17) 
 
format can be 
        -html           output hardware tree as HTML 
        -xml            output hardware tree as XML 
        -short          output hardware paths 
        -businfo        output bus information 
 
options can be 
        -class CLASS    only show a certain class of hardware 
        -C CLASS        same as '-class CLASS' 
        -c CLASS        same as '-class CLASS' 
        -disable TEST   disable a test (like pci, isapnp, cpuid, etc. ) 
        -enable TEST    enable a test (like pci, isapnp, cpuid, etc. ) 
        -quiet          don't display status 
        -sanitize       sanitize output (remove sensitive information like serial numbers, etc.) 
        -numeric        output numeric IDs (for PCI, USB, etc.)
 

 

Visto l’enorme mole di dati mostrata si può restringere il suo utilizzo, ad esempio per vedere solo la parte display daremo:

lshw -c display

le classi sono ben in evidenza sul lshw senza parametri.

Tutto sul disco.

Se lshw mostra molto della macchina, non mostra quasi nulla sulla parte storage, questo perché esiste il comando lsblk, molto molto utilizzato proprio per capire lo stato ad esempio di una chiavetta o un disco una volta riconosciuto. Il comando infatti mostra, se il device è stato montato, anche il punto di mountpoint, ad esempio:

NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT 
sda      8:0    0 223,6G  0 disk  
├─sda1   8:1    0 215,7G  0 part / 
├─sda2   8:2    0     1K  0 part  
└─sda5   8:5    0   7,9G  0 part [SWAP] 
sr0     11:0    1  1024M  0 rom  

Altre opzioni di lsblk sono:

Usage:
lsblk options device 
 
List information about block devices. 
 
Options: 
 -a, --all            print all devices 
 -b, --bytes          print SIZE in bytes rather than in human readable format 
 -d, --nodeps         don't print slaves or holders 
 -D, --discard        print discard capabilities 
 -e, --exclude <list> exclude devices by major number (default: RAM disks) 
 -f, --fs             output info about filesystems 
 -i, --ascii          use ascii characters only 
 -I, --include <list> show only devices with specified major numbers 
 -J, --json           use JSON output format 
 -l, --list           use list format output 
 -m, --perms          output info about permissions 
 -n, --noheadings     don't print headings 
 -o, --output <list>  output columns 
 -O, --output-all     output all columns 
 -p, --paths          print complete device path 
 -P, --pairs          use key="value" output format 
 -r, --raw            use raw output format 
 -s, --inverse        inverse dependencies 
 -S, --scsi           output info about SCSI devices 
 -t, --topology       output info about topology 
 -x, --sort <column>  sort output by <column> 
 
 -h, --help     display this help and exit 
 -V, --version  output version information and exit
 

Bus pci

Abbiamo visto che con lshw si possono vedere tra le varie cose i bus pci, ma se vogliamo entrare nello specifico con maggiori dettagli il comando lspci è nostro alleato. Anche questo ha molte opzioni, di solito la più utilizzata è la modalità

lspi -tvv

che mostrerà il vostro bus pci in modalità ad albero. Altre opzioni sono:

Usage: lspci [<switches>] 
 
Basic display modes: 
-mm             Produce machine-readable output (single -m for an obsolete format) 
-t              Show bus tree 
 
Display options: 
-v              Be verbose (-vv for very verbose) 
-k              Show kernel drivers handling each device 
-x              Show hex-dump of the standard part of the config space 
-xxx            Show hex-dump of the whole config space (dangerous; root only) 
-xxxx           Show hex-dump of the 4096-byte extended config space (root only) 
-b              Bus-centric view (addresses and IRQ's as seen by the bus) 
-D              Always show domain numbers 
 
Resolving of device ID's to names: 
-n              Show numeric ID's 
-nn             Show both textual and numeric ID's (names & numbers) 
-q              Query the PCI ID database for unknown ID's via DNS 
-qq             As above, but re-query locally cached entries 
-Q              Query the PCI ID database for all ID's via DNS 
 
Selection of devices: 
-s [[[[<domain>]:]<bus>]:][<slot>][.[<func>]]   Show only devices in selected slots 
-d [<vendor>]:[<device>][:<class>]              Show only devices with specified ID's 
 
Other options: 
-i <file>       Use specified ID database instead of /usr/share/misc/pci.ids.gz 
-p <file>       Look up kernel modules in a given file instead of default modules.pcimap 
-M              Enable `bus mapping' mode (dangerous; root only) 
 
PCI access options: 
-A <method>     Use the specified PCI access method (see `-A help' for a list) 
-O <par>=<val>  Set PCI access parameter (see `-O help' for a list) 
-G              Enable PCI access debugging 
-H <mode>       Use direct hardware access (<mode> = 1 or 2) 
-F <file>       Read PCI configuration dump from a given file

 

Tutto sull’usb.

Simile alla modalità pci, ne esiste una specifica e molto più di frequente utilizzo che riguarda l’usb.

lsusb -tvv

mostrata nelle opzioni -tvv in modalità ad albero e nella massima verbosità di informazioni.
Altre opzioni per questo comando sono:

Usage: lsusb [options]... 
List USB devices 
  -v, --verbose 
      Increase verbosity (show descriptors) 
  -s [[bus]:][devnum] 
      Show only devices with specified device and/or 
      bus numbers (in decimal) 
  -d vendor:[product] 
      Show only devices with the specified vendor and 
      product ID numbers (in hexadecimal) 
  -D device 
      Selects which device lsusb will examine 
  -t, --tree 
      Dump the physical USB device hierarchy as a tree 
  -V, --version 
      Show version of program 
  -h, --help 
      Show usage and help

Quanta RAM è installata?

Una delle domande classiche, spesso si utilizza un comando che vedremo in un altra puntata, ma in modo errato poiché in realtà servirebbe ad altro, ma come accade sovente in Linux molti comandi “sbordano” in settori adiacenti. Per conoscere il quantitativo di RAM installata, oltre al sopra citato cat di /proc/meminfo si può utilizzare free


free -tm

Ulteriori opzioni di free sono:


Options:
-b, --bytes         show output in bytes
-k, --kilo          show output in kilobytes
-m, --mega          show output in megabytes
-g, --giga          show output in gigabytes
--tera          show output in terabytes
-h, --human         show human-readable output
--si            use powers of 1000 not 1024
-l, --lohi          show detailed low and high memory statistics
-t, --total         show total for RAM + swap
-s N, --seconds N   repeat printing every N seconds
-c N, --count N     repeat printing N times, then exit
-w, --wide          wide output

--help     display this help and exit
-V, --version  output version information and exit

Tutto e di più sul tuo disco

Prima abbiamo visto che il comando lsblk è molto utile per identificare dischi e partizioni. Partendo da questo comando conosceremo dove è montato il disco principale, come dall’esempio visto sopra è (e di solito è sempre il principale) /dev/sda. Se vogliamo conoscere ad esempio modello ed altre capacità del disco installato potremo dare il comando:

sudo hdparm -i /dev/sda

In questo caso il comando sudo (elevazione a root) è necessario, il risultato sarà interessante perché avremo modello, serial number e firmware del disco, più tutta un’altra serie di informazioni.

Il comando hdparm in realtà è molto potente, e anche pericoloso. Se guardassimo tra le opzioni offerte infatti possiamo scoprire che si possono andare a forzare informazioni sul disco, o modificare alcune peculiarità, alcune retaggio del passato, altre più moderne. Di tutte quelle fornite faccio solo menzione a ” -tT ” che effettua un speed test in lettura e scrittura sul disco:


sudo hdparm -tT /dev/sda

/dev/sda:
Timing cached reads:   6500 MB in  2.00 seconds = 3250.81 MB/sec
Timing buffered disk reads: 600 MB in  3.00 seconds = 199.69 MB/sec

Molto utile per avere un’idea dello stato del disco qual’ora sorga qualche dubbio sulla sua efficienza.

Un ottimo componente, di cui avevo parlato in uno specifico articolo, è sicuramente badblocks che di fatto è similare allo scandisk di Windows, ovvero permette di scoprire e sistemare imperfezioni del disco rotativo.

Temperatura disco

Se vogliamo conoscere la temperatura di esercizio corrente del disco fisso, in particolare i rotativi rispetto agli SSD possono scaldare parecchio, esiste il comando hddtemp


sudo hddtemp /dev/sda
/dev/sda: CT240BX200SSD1: 33°C

Bios e varie

Cito per ultimo, visto che è un doppione di quasi tutto quanto visto, la possibilità di leggere le informazioni del bios. Si tratta di un elenco piuttosto lungo di informazioni che più o meno sono già riportate negli esempi precedenti. Si tratta del comando:

dmidecode

Con l’opzione -s si può effettuare un filtro delle informazioni, tuttavia il sistema non è molto efficace, e anche con un filtro esterno (il classico grep) non si riuscirà mai ad avere una buona efficacia poiché le informazioni sono su righe diverse. Ad ogni modo è un comando utile per conoscere il firmware del bios, stato della batteria e delle temperature del sistema.

 

Guida comandi Linux - Sommario

Ti potrebbe interessare anche...

Articoli simili in Uncategorized

Vuoi dire o aggiungere qualcosa?

sezione commenti aperta al pubblico

Non ci sono ancora commenti!

Puoi essere il primo a commentare.

Rispondi