#howto - Raccogliere informazioni sul proprio pc da terminale

Scritto da il
Redatto da
archlinux
ubuntu
fedora
systeminfo

Sui nostri gruppi di supporto la difficoltà più frequente è quella di capire quali siano le configurazioni di tipo hardware e software di chi richiede supporto. Ecco una piccola guida su come raccogliere dei dati relativi al proprio sistema che sarà utile fornire a coloro a cui chiediamo aiuto!

Nome della distribuzione

Normalmente l’unica informazione che non manca mai è proprio il nome della distribuzione, ma per non farci mancare nulla in questa guida consideriamo anche il caso in cui non abbiamo quest’informazione basilare.

OS-release

In alcune distribuzioni si può usufruire della libreria os-release che rende disponibile quest’informazione, per interrogarla basta un semplice comando cat :

cat /etc/os-release

Le informazioni stampate includeranno il nome, la documentazione, il logo ed il modello di rilascio. Ecco un esempio di output:

NAME="Arch Linux"
PRETTY_NAME="Arch Linux"
ID=arch
BUILD_ID=rolling
ANSI_COLOR="38;2;23;147;209"
HOME_URL="https://archlinux.org/"
DOCUMENTATION_URL="https://wiki.archlinux.org/"
SUPPORT_URL="https://bbs.archlinux.org/"
BUG_REPORT_URL="https://bugs.archlinux.org/"
LOGO=archlinux-logo

LSB Release

PEr quanto riguarda lsb-release, invece, si tratta di un tool più semplice, che seppur mostrano molte meno informazioni sulla distribuzione, permette, tuttavia, una maggiore malleabilità dell’output. Generalmente bisogna installarlo, nella distribuzione di interesse, esplicitamente, anche tramite il package manager.

LSB Release su Ubuntu e derivate

Per installare il pacchetto in Ubuntu e derivate si può scrivere:

apt install lsb-release

LSB Release su Fedora

Per installare il pacchetto in Fedora è necessario un pacchetto chiamato redhat-lsb:

dnf install redhat-lsb

LSB Release su Archlinux

Per installare il pacchetto in Archlinux, invece, bisogna scrivere:

pacman -S lsb-release

Utilizzo di LSB Release

Inoltre, si può scrivere:

lsb_release -a

Per ottenere tutte le informazioni possibili (notare che, mentre il nome del pacchetto ha il carattere - che separa le parole lsb e release, il nome del comando usa l’underscore _).

È possibile, come già detto in precedenza, personalizzare leggermente l’output, utilizzando vari flag che fanno da filtro. Ad esempio, per avere solo il nome della distribuzione, senza numero di release, è sufficiente usare il flag -i:

lsb_release -i

O ancora, per avere solo il nome in codice della release, basterà scrivere:

lsb_release -c

Per saperne di più, è possibile usare l’help:

lsb_release --help

File release in /etc

Un ulteriore metodo per identificare la distribuzione consiste nell’ utilizzare il file *-release in /etc. Questo file ha, come postfisso, sempre la parola “release”, ma cambia il prefisso, che sarà indicativo della rispettiva distribuzione.

Purtroppo questo file non è comune a tutte le distribuzioni. Infatti, lo si ha in Archlinux:

if [ -f /etc/arch-release ]; then 
	echo "Sei su Archlinux"; 
fi  

E lo si ha su Fedora:

if [ -f /etc/fedora-release ]; then 
	echo "Sei su Fedora"; 
fi  

Ma Ubuntu, ad esempio, ne è sprovvisto.

Kernel in esecuzione

Per sapere quale sia il kernel in esecuzione è possibile utilizzare il comando uname:

uname -rs

Sul comando abbiamo già un’ ottima guida che tratta l’argomento in maniera esaustiva.

Ram e swap

Per quanto riguarda la memoria RAM è importante acquisire tre tipi di informazioni:

  • Quanta memoria è rimasta libera e quanta ne è stata utilizzata;
  • Quanta memoria è complessivamente disponibile;
  • Informazioni di natura hardware sui banchi di ram;

In merito alla swap, altresì, è importante conoscere:

  • Quanta swap è utilizzata (se è utilizzata);
  • Quanta swap è disponibile;
  • Su che file è montata la swap;

Si ricordi che la swap è una memoria volatile aggiuntiva che, anziché stare su RAM, risiede sul disco. È utile per quei pc che hanno un basso quantitativo hardware di memoria RAM e rischiano, quindi, di saturarla in fretta. È anche indispensabile per utilizzare la funzione di ibernazione, ovvero una funzione dei sistemi operativi atta a spegnere il computer, memorizzando, però, tutta la sessione corrente, in modo da riprenderla all’accensione, come se il sistema fosse sospeso, senza consumare, però, energia elettrica.

Free, ovvero determinazione della quantità di memoria libera, utilizzata e totale

Per ricavare tutte le informazioni relative alla quantità di memoria libera, sia per quanto riguarda la RAM, sia che si tratti di Swap, è sufficiente utilizzare il programma free.

free

Segue un output d’esempio:

             total        used        free      shared  buff/cache   available
Mem:         3978556     1349476      975324       82500     1653756     2315064
Swap:        8750568           0     8750568

È anche possibile utilizzare il parametro -h per visualizzare l’output in termini di Gibibyte (ovvero Giga Binary Byte, 1 GiB=1024MiB=1073741824 bytes).

free -h
               total        used        free      shared  buff/cache   available
Mem:           3,8Gi       1,3Gi       988Mi        80Mi       1,6Gi       2,2Gi
Swap:          8,3Gi          0B       8,3Gi

Grazie a Nik/yumacoy sul gruppo per aver fornito l’output dei comandi

Numero dei banchi di ram disponibili

Per acquisire delle informazioni specifiche riguardanti i singoli banchi di ram si può utilizzare dmidecode. Tuttavia, non essendo uno strumento disponibile in tutti i sistemi, è necessario assicurarsi di averlo correttamente installato.

whereis dmidecode

In caso contrario (l’ouput non mostra un path) procediamo per l’installazione.

Installazione dmidecode su Ubuntu e derivate

Per installare dmidecode su Ubuntu è necessario scrivere:

apt install dmidecode

Installazione dmidecode su Fedora

Per installare dmidecode su Fedora è necessario scrivere:

dnf install dmidecode

Installazione dmidecode su Archlinux

Per installare dmidecode su Archlinux è necessario scrivere:

pacman -S dmidecode

Utilizzo di dmidecode

Per utilizzare dmidecode, ottenendo così tutte le informazioni riguardanti i banchi di ram disponibili, bisognerà scrivere i comandi con i diritti di amministratore:

dmidecode --type 17

L’output dovrebbe essere simile a quello sottostante:

Memory Device
	Array Handle: 0x0028
	Error Information Handle: No Error
	Total Width: Unknown
	Data Width: Unknown
	Size: 4 GB
	Form Factor: SODIMM
	Set: None
	Locator: DIMM0
	Bank Locator: BANK 0
	Type: DDR3
	Type Detail: Synchronous
	Speed: 1600 MT/s
	Manufacturer: 0x80AD
	Serial Number: 0x00000000
	Asset Tag: Unknown
	Part Number: 0x484D54333531533642465238432D50422020

Ogni riga che inzia con “Memory Device” introduce la descrizione di un banco di RAM.

Verifica di dove e quante swap siano montate

Per controllare quali siano le swap a il sistema fa riferimento, quante siano e dove siano effettivamente montate è possibile utilizzare il comando swapon:

swapon

L’output dovrebbe essere simile a questo :

NAME       TYPE      SIZE  USED PRIO
/dev/zram0 partition   8G 14,3M  100

Grazie a Martin per aver fornito l’output

Informazioni relative al disco utilizzato e libero

Per il controllo della memoria di archiviazione esistono vari tool.

Controllare i drive attaccati

Per controllare quali drive sono attaccati al computer e in quante partizioni ognuno è diviso è possibile usare fdisk:

fdisk -l

Controllare lo spazio libero dei dischi montati

Per controllare lo spazio libero nei dischi montati è possibile utilizzare il comando df:

df

Con il parametro -h i conteggi verranno fatti in multipli di 1024 byte, Mib e Gib:

df -h 

Ecco un esempio di ouput:

File system               Dim. Usati Dispon. Uso% Montato su
dev                       3,9G     0    3,9G   0% /dev
run                       3,9G  1,9M    3,9G   1% /run
/dev/sda3                 131G  111G     14G  90% /
tmpfs                     3,9G  149M    3,7G   4% /dev/shm
/dev/sda1                 197M   28M    170M  14% /boot/efi
/home/username/.Private  131G  111G     14G  90% /home/username
tmpfs                     786M  140K    786M   1% /run/user/1000

Molti dei file system mostrati non sono veri e propri dischi, ma memorie volatili e comunque non utili, quindi, per visualizzare soltanto quelli di interesse si può specificare il filesystem di cui vogliamo avere informazioni. Ad esempio, per avere informazioni solo su ext4 basterà scrivere:

df -t ext4

Di conseguenza, per avere informazioni su ext4, btrfs e ecryptfs, si può digitare:

df -t ext4 -t btrfs -t ecryptfs

Per ricavare quali siano i file system dei nostri dischi si può usare il comando:

blkid

Identificazione delle periferiche usb

Che periferiche USB sono attaccate? Per saperlo possiamo usare il comando lsusb. Non tutti i sistemi hanno preinstallato questo tool, quindi vediamo come installarlo sulle varie distribuzioni.

Installare lsusb su Ubuntu e derivate

Per installarlo su Ubuntu scrivere:

apt install usbutils

Installare lsusb su Fedora

Per installarlo su Fedora scrivere:

dnf install usbutils

Installare lsusb su Archlinux

Per installarlo su Archlinux scrivere:

pacman -S usbutils

Utilizzo di lsusb

Per utilizzare il comando scrivere semplicemente:

lsusb

L’output mostrerà una lunga lista di device, identificati tramite protocollo usb, con le rispettive descrizioni. Eccone un esempio:

Bus 002 Device 005: ID 05ac:0263 Apple, Inc. Apple Internal Keyboard / Trackpad (MacBook Retina)
Bus 002 Device 008: ID 05ac:8286 Apple, Inc. Bluetooth Host Controller
Bus 002 Device 004: ID 0a5c:4500 Broadcom Corp. BCM2046B1 USB 2.0 Hub (part of BCM2046 Bluetooth)
Bus 002 Device 003: ID 0424:2512 Microchip Technology, Inc. (formerly SMSC) USB 2.0 Hub
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 05ac:8510 Apple, Inc. FaceTime HD Camera (Built-in)
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 006: ID 145f:02af Trust ZIVA Keyboard
Bus 003 Device 005: ID 14cd:1212 Super Top microSD card reader (SY-T18)
Bus 003 Device 010: ID 04d9:a09f Holtek Semiconductor, Inc. E-Signal LUOM G10 Mechanical Gaming Mouse
Bus 003 Device 003: ID 0a67:ffff Medeli Electronics Co., Ltd USB AUDIO
Bus 003 Device 002: ID 1a40:0101 Terminus Technology Inc. Hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Staccando e riattaccando la periferica che vogliamo analizzare è possibile vedere se il sistema la rileva (l’output avrà una riga in meno senza la periferica attaccata) oppure no.

Usando il comando watch con il flag -d è possibile notare meglio le differenze:

watch -d lsusb

Oppure, ancora, è possibile dare il comando in due momenti differenti, salvarlo in due variabili separate ed usare diff per vedere la riga aggiuntiva:

senzausb=$(lsusb) #senza usb

conusb=$(lsusb) # con usb

diff <(echo $senzausb) <(echo $conusb)

Ecco un esempio di output (attaccando e staccando il mio mouse):

> Bus 003 Device 010: ID 04d9:a09f Holtek Semiconductor, Inc. E-Signal LUOM G10 Mechanical Gaming Mouse

Le periferiche pci

La Peripheral Component Interconnect (PCI) è uno standard che connette le periferiche direttamente alla scheda madre. Generalmente, le periferiche di interesse sono quelle di rete e le schede video.

Il tool che identifica tali periferiche è lspci. Non tutte le distribuzioni lo hanno preinstallato.

LSPCI su Ubuntu e derivate

Per installare lspci su Ubuntu:

apt install pciutils

LSPCI su Fedora

Per installare lspci su Fedora:

dnf install pciutils

LSPCI su Archlinux

Per installare lspci su Archlinux:

pacman -S pciutils

Utilizzo

Per utilizzarlo basta scrivere:

lspci

Potrebbe essere necessario filtrare con grep per avere subito i risultati della periferica ricercata. Ad esempio, per cercare il nome della scheda video:

lspci | grep -iP '(VGA|3d)'

Driver in uso

È possibile specificare il paramentro -k per verificare i moduli del kernel in uso per ogni periferica:

lspci -k

Anche in questa circostanza, un utilizzo consapevole di grep potrebbe aiutare ad ottenere subito i risultati ricercati. Ad esempio, per individuare quale sia il driver che sta utilizzando la periferica di rete si può scrivere:

lspci -k | grep -i network -A 3

Informazioni su CPU e core

Quanti core ha la vostra cpu? A quale frequenza? Vediamo quali strumenti esistono per fornire una risposta a questi interrogativi.

Utilizzo di nproc

Per ottenere il numero di processori e core, il metodo più semplice da utilizzare consiste nel digitare il comando preinstallato nproc:

nproc

Utilizzo di cpuinfo

Delle informazioni dettagliate sulle caratteristiche della cpu nonché sui singoli core si trovano nel file /proc/cpuinfo

cat /proc/cpuinfo

Tra queste, si possono trovare svariati dati, tra cui il set di istruzioni supportate, le mitigation attive, nome, frequenza e tanto altro.

Ecco un estratto di layout:

processor       : 0
vendor_id       : AuthenticAMD
cpu family      : 25
model           : 80
model name      : AMD Ryzen 9 5900HX with Radeon Graphics
stepping        : 0
microcode       : 0xa50000c
cpu MHz         : 1567.354
cache size      : 512 KB
physical id     : 0
siblings        : 16
core id         : 0
cpu cores       : 8
apicid          : 0
initial apicid  : 0
fpu             : yes
fpu_exception   : yes
cpuid level     : 16
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid aperfmperf rapl pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb cat_l3 cdp_l3 hw_pstate ssbd mba ibrs ibpb stibp vmmcall fsgsbase bmi1 avx2 smep bmi2 erms invpcid cqm rdt_a rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local clzero irperf xsaveerptr rdpru wbnoinvd cppc arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic v_vmsave_vmload vgif v_spec_ctrl umip pku ospke vaes vpclmulqdq rdpid overflow_recov succor smca fsrm
bugs            : sysret_ss_attrs spectre_v1 spectre_v2 spec_store_bypass
bogomips        : 6590.85
TLB size        : 2560 4K pages
clflush size    : 64
cache_alignment : 64
address sizes   : 48 bits physical, 48 bits virtual
power management: ts ttp tm hwpstate cpb eff_freq_ro [13] [14]

lscpu

L’esito del comando lscpu riassume le informazioni più importanti della cpu, quindi, pur essendo meno completo della lettura del file cpuinfo, nella maggior parte dei casi risulta sufficiente.

Per utilizzarlo basterà digitare semplicemente:

lscpu

Si può avere un output riassuntivo dei vari core tramite l’opzione --all, da usare così:

lscpu --all --extended

I software *fetch

I cosiddetti software *fetch sono dei programmi caratterizzati sia dalla comune desinenza (fetch per l’appunto), sia dallo scopo di fornire un riassunto informativo di tutti i dati del sistema, spesso incentrato su CPU, GPU, RAM e nome della distribuzione.

Screenfetch

Il software screenfetch è probabilmente il più semplice tra questi strumenti, per acquisire delle informazioni su OS, numero di pacchetti, uptime, DE, disco utilizzato, CPU, GPU e ram. Normalmente va installato prima di esere utilizzato.

Installazione di screenfetch su Ubuntu e derivate

Per installare il software su Ubuntu digitare:

apt install screenfetch

Installazione di screenfetch su Fedora

Per installare il software su Fedora digitare:

dnf install screenfetch

Installazione di screenfetch su Archlinux

Per installare il software su Archlinux digitare:

pacman -S screenfetch

Utilizzo di screenfetch

L’utilizzo base si ottiene scrivendo solo:

screenfetch

Esistono alcune opzioni elencabili tramite l’opzione --help:

screenfetch --help

Ad esempio, è possibile aggiungere delle linee extra con il flag -c, passando una stringa costituita da CHIAVE=VALORE;ALTRACHIAVE=ALTROVALORE...etc... Ad esempio, aggiungiamo il wan ip:

screenfetch -C "Global_IP=$(curl ifconfig.me 2> /dev/null)" 

Neofetch

Lo strumento neofetch è il software di questa tipologia più completo, nonché il più personalizzabile.

Installazione di neofetch su Ubuntu e derivate

Per installare il software su Ubuntu digitare:

apt install neofetch

Installazione di neofetch su Fedora

Per installare il software su Fedora digitare:

dnf install neofetch

Installazione di neofetch su Archlinux

Per installare il software su Archlinux digitare:

pacman -S neofetch

Utilizzo di neofetch

L’utilizzo base si ottiene scrivendo solo:

neofetch

Esistono alcune opzioni elencabili tramite l’opzione --help:

neofetch --help

Si può, ad esempio, forzare l’ascii style di una distribuzione. Forziamo, a titolo esemplificativo, quella di archlinux:

neofetch --ascii_distro Arch

File di configurazione di neofetch

Il file di configurazione di neofetch si trova nella propria home, al percorso $HOME/.config/neofetch/config.conf.

Le informazioni visualizzate, per impostazione predefinita, sono quelle richiamate nel metodo print_info(). Se si vuole aggiungere qualcosa si deve scrivere dentro il metodo, tra le parentesi graffe.

Ad esempio, per mostrare la canzone che si sta ascoltando, nel momento corrente, basta scrivere, verso riga 36, il seguente comando:

info "Song" song

Cpufetch

Un tool atto a mostrare delle informazioni riguardanti le caratteristiche della CPU è CPU-fetch.

Installazione di cpufetch su Ubuntu e derivate

Per installarlo su Ubuntu scrivere:

apt install cpufetch

Installazione di cpufetch su Fedora

Per installarlo su Fedora scrivere:

dnf install cpufetch

Installazione di cpufetch su Archlinux

Per installarlo su Archlinux è possibile utilizzare AUR (con git o tramite AUR-helper). Supponiamo di adottare il metodo di installazione tradizionale:

git clone https://aur.archlinux.org/cpufetch.git

cd cpufetch 

makepkg -si 

Software di monitoraggio completo

I software di monitoraggio servono a verificare, in tempo reale, come si stanno comportando tutti i parametri controllati prima. Ne esistono diversi, alcuni dei quali semplici, altri, invece, più complessi, ma molto esaustivi.

Top

Il più comune è sicuramente top, basilare e leggero, presente in tutte le distribuzioni.

Mostra informazioni sul numero di processi, memoria e cpu utilizzata. Per utilizzarlo basta scrivere:

top

Mentre è attivo, digitando h, si può visualizzare un help.

Htop

Il tool htop è poco più di un corrispettivo colorato di top.

Installazione di htop su Ubuntu e derivate

Per installare il software su Ubuntu digitare:

apt install htop

Installazione di htop su Fedora

Per installare il software su Fedora digitare:

dnf install htop

Installazione di htop su Archlinux

Per installare il software su Archlinux digitare:

pacman -S htop

Utilizzo di htop

Per utilizzarlo:

htop

Bashtop

Un ottimo software di monitoraggio è bashtop, comprensivo di grafici esemplificativi, informazioni dettagliate e dotato di temi.

Installazione di bashtop su Ubuntu e derivate

Per installare il software su Ubuntu digitare:

apt install bashtop

Installazione di bashtop su Fedora

Bashtop non è disponibile nei repository di Fedora, per cui procediamo con l’installazione. Installiamo pip :

dnf install pip

Poi psutils:

pip install psutil

Quindi compiliamolo:

git clone https://github.com/aristocratos/bashtop.git
cd bashtop
sudo make install

Ovviamente, nel caso non li aveste, sono necessari anche make e git, che potete installare sempre con dnf.

Installazione di bashtop su Archlinux

Per installare il software su Archlinux digitare:

pacman install bashtop

Utilizzo di bashtop

Per utilizzare bashtop basta digitare:

bashtop 

Con le frecce direzionali poi si possono selezionare i vari processi, con esc si mette il software in pausa e si può, quindi, selezionare il menu delle opzioni (dove si possono trovare eventualmente anche i temi).

Glances

Un valido software di monitoraggio è glances, completo e funzionale. L’installazione avviene tramite pip, superando quindi le barriere delle varie distribuzioni. Installiamo con il nostro package manager prima pip e poi Glances con un semplice comando:

pip install glances

Utilizziamolo così:

glances

Se disponiamo di un background del terminale bianco potrebbe essere più adatto utilizzare la versione white:

glances --theme-white

Nvtop

Un’alternativa a top è costituita da nvtop, che analizza, in tempo reale, le informazioni dei processi che occupano la GPU. Non è compatibile con GPU intel, però supporta pienamente AMD e NVIDIA.

Installazione di nvtop su Ubuntu e derivate

Per installare il software su Ubuntu digitare:

apt install nvtop

Installazione di nvtop su Fedora

Il software non è disponibile nativamente su Fedora, perciò, per utilizzarlo, è necessario installarlo manualmente:

Installiamo le dipendenze

sudo dnf install libdrm-devel cmake ncurses-devel git gcc-c++

Quindi compiliamolo:

git clone https://github.com/Syllo/nvtop.git
mkdir -p nvtop/build 
cd nvtop/build
cmake .. -DNVIDIA_SUPPORT=ON -DAMDGPU_SUPPORT=ON
make

Per installarlo effettivamente, scrivere infine:

make install

Installazione di nvtop su Archlinux

Per installare il software su Archlinux digitare:

pacman install nvtop

Utilizzo di nvtop

Per utilizzare nvtop basta scrivere:

nvtop

Premendo F2 è possibile accedere al setup, mentre con F10 si chiude.

history_edu Revisioni