Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Strumenti per i processi linux: top

Link copiato negli appunti

Dopo aver compreso cosa sia un processo andiamo ora a conoscere il primo comando con cui è possibile ottenere una panoramica dei processi attivi. Entrambi gli strumenti che andremo a presentare in questo e nel prossimo capitolo sono di natura principalmente informativa e mirano a fotografare la situazione in essere al momento esatto in cui vengono eseguiti.

top - 18:20:21 up  2:57,  4 users,  load average: 2.00, 1.78, 1.01
Tasks: 124 total,   3 running,  76 sleeping,   1 stopped,   0 zombie
%Cpu(s):  0.7 us, 91.0 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  8.3 si,  0.0 st
KiB Mem :  1009120 total,   252252 free,   120432 used,   636436 buff/cache
KiB Swap:   542716 total,   542704 free,       12 used.   733680 avail Mem 
  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
12677 fprinci+  20   0  107984   5484   4484 R 43.2  0.5   4:32.63 sshd
12696 fprinci+  20   0   11592   1112    968 R 43.2  0.1   4:32.51 bash
12411 root      20   0       0      0      0 I 12.6  0.0   0:27.84 kworker/u2+
    1 root      20   0   78024   9072   6612 S  0.0  0.9   0:01.13 systemd
    2 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kthreadd

Informazioni globali

Il primo comando che incontriamo è top. Al lancio di questo comando abbiamo avviato un processo che nel terminale ci restituisce, a intervalli fissi, una serie di caratteri dopo un refresh in modo da apparire come una visualizzazione dinamica che si aggiorna in tempo reale.
Da esso possiamo trarre moltissime utili informazioni. Il comando top può essere influenzato dalla pressione di un tasto per impartire un numero significativo di comandi che possono essere agevolmente consultati invocando man top. Spesso, per l’utente che lo invoca la prima volta, è complesso comprenderne l’output quindi a titolo didattico andiamo a commentare la visualizzazione classica che vedete qui sopra.
Ovviamente può presentarsi anche con difformi visualizzazioni ma le principali informazioni che veicola sono quelle che andremo a illustrare. Partiamo dal primo rigo. Dopo l’orario, immediatamente a seguire la voce up, troviamo il tempo da cui è ininterrottamente attivo il sistema espresso in ore:minuti oppure in giorni se superiore alle 24 ore. Dopo la voce load average troviamo tre numeri decimali che rappresentano il carico medio della macchina espresso in core e calcolato in tre intervalli precisi ovvero un minuto, cinque minuti e quindici minuti. Il numero che visualizzate può anche essere superiore a quello dei core fisici disponibili sulla macchina. In questo caso il sistema sta effettuando una stima. In pratica se su un sistema che monta 16 core fisici doveste visualizzare, ad esempio, un valore di 18.6 significherebbe che il sistema è sovraccarico. Che, pertanto, per far fronte in tempo reale al carico computazionale in essere il sistema dovrebbe avere 2.6 core in più. Qualche processo è in attesa di risorse per poter funzionare. Di contro, se doveste vedere un valore di 11.4, vorrebbe dire che in quel momento 4.6 core su 16 sono in funzione ma non vengono attivamente adoperati per i processi perché ritenuti non necessari.
Andiamo ora al secondo rigo. Nel nostro esempio il rigo inizia con la voce Tasks, che possiamo modificare in Threads premendo il tasto "H". Nel primo caso visualizziamo appunto i tasks attivi (un modo di immaginare il task su linux è pensare a un processo e al suo ambiente di esecuzione con cui è direttamente in relazione, come a esempio i dati). Il threads è un flusso di esecuzione di operazioni computazionali. Un task può essere suddiviso all’occorrenza in più threads asincroni. Sia i task che i threads possono essere running cioè in esecuzione, sleeping cioè in attesa, stopped ovvero temporaneamente sospesi oppure zombie ovvero che hanno terminato la loro esecuzione ma che non sono ancora stati eliminati dalla tabella dei processi.

Il terzo rigo (che inzia con %Cpu(s)) indica la quantità di tempo computazionale investito nell’intervallo di tempo dall’ultima rilevazione di top per la specifica categoria a cui ci si riferisce. Le categorie sono elencate nella tabella a seguire.

us Processi utente.
sy Processi di sistema.
ni Processi il cui valore di nice è stato settato manualmente.
id Quantità di tempo in cui il processore è stato in risparmio energetico.
wa Processi in attesa di gestire l’input/output.
hi Interrupts hardware.
si Interrupts software.
st Uso dello hypervisor per una macchina virtuale.

Le due righe successive nell’output di top indicano la quantità di memoria espressa in kibibytes, mebibyte o gibibyte. Un kibibyte è pari a 2^10 byte e ogni multiplo successivo è 2^10 volte più grande del precedente.
KiB Mem è riferito alla memoria fisica, KiB Swap a quella emulata dalla partizione swap.

Informazioni sui processi

Dopo la riga vuota la visualizzazione classica di top diventa una tabella in cui ogni riga rappresenta un processo. Di ogni processo possiamo conoscere il PID, l’USER che lo ha lanciato. PR indica la priorità con cui il kernel gestisce il processo, NI indica il valore di nice associato al processo. Poi troviamo informazioni sulla quantità di memoria utilizzata dal processo. VIRT è la quantità totale di memoria assegnata al processo comprensiva anche di swap, RES è sempre la memoria per processo ma solo di tipo RAM, SHR è la quantità di memoria condisa con altri processi.
S indica lo stato del processo con l’iniziale delle categorie che abbiamo descritto parlando del secondo rigo dell’output di top. %CPU e %MEM Si riferiscono rispettivamente alla percentuale di core e memoria fisica non emulata utilizzata. TIME+ è il CPU TIME (cioè il tempo reale in cui un processo ha impegnato il processore dal suo lancio). COMMAND è il comando, comprensivo di eventuali opzioni, con cui il processo è stato lanciato.

Comandi interattivi di top

Per completezza vi anticipiamo che premendo il tasto "h" potere ottenere un aiuto sui comandi. Premete "u", invece, per filtrare la visualizzazione dei processi relativamente a un singolo utente.
Abbiamo detto che top è un comando in genere adoperato per avere un'idea dei processi in corso di esecuzione, tuttavia è anche possibile invocare la terminazione di uno specifico processo digitando un PID dopo aver premuto "k".

Ti consigliamo anche