Mentre lavori sulla riga di comando di Linux, a volte potresti voler controllare i dettagli relativi al processo, ad esempio quale processo consuma di più CPU o memoria? Bene, esiste un comando - soprannominato top - che ti consente di farlo facilmente. In questo tutorial, discuteremo di questo strumento utilizzando alcuni esempi di facile comprensione.
Ma prima di farlo, vale la pena ricordare che tutti gli esempi menzionati in questo articolo sono stati testati su una macchina Ubuntu 16.04 LTS.
Comando Linux top
Il comando in alto mostra un elenco di processi o thread attualmente gestiti dal kernel Linux, insieme a informazioni utili ad essi correlati. Di seguito è riportata la sintassi dello strumento:
top [options]
Ed ecco cosa dice a riguardo la pagina man dello strumento:
The top program provides a dynamic real-time view of a running
system. It can display system summary information as well as a
list of processes or threads currently being managed by the Linux
kernel. The types of system summary information shown and the
types, order and size of information displayed for processes are
all user configurable and that configuration can be made persis?
tent across restarts.
The program provides a limited interactive interface for process
manipulation as well as a much more extensive interface for per?
sonal configuration -- encompassing every aspect of its opera?
tion.
Di seguito sono riportati alcuni esempi in stile domande e risposte che dovrebbero darti una buona idea su come funziona il comando in alto.
Q1. Come si usa la parte superiore?
Semplice, basta eseguire il comando 'top' senza qualsiasi opzione:
top
Ecco l'output che ha prodotto sul mio sistema:
Nota che quello che vedi nello screenshot è solo un'istantanea dell'output in tempo reale (che cambia dopo un intervallo fisso) che è stato prodotto.
Q2. Come capire l'output del comando principale?
Cominciamo con la prima riga. Contiene voci per (in quest'ordine), ora corrente, durata da quando il sistema è attivo e funzionante, sessioni utente attive e carico medio sul sistema (rispettivamente per l'ultimo minuto, cinque minuti e quindici minuti).
La seconda riga contiene informazioni (in quest'ordine) sul numero totale di processi, sul numero di processi in esecuzione, sul numero di processi sospesi, sul numero di processi interrotti e sul numero di processi nello stato di zombie.
La terza riga contiene informazioni sull'utilizzo della CPU. Di seguito i dettagli:
us, user : time running un-niced user processes
sy, system : time running kernel processes
ni, nice : time running niced user processes
id, idle : time spent in the kernel idle handler
wa, IO-wait : time waiting for I/O completion
hi : time spent servicing hardware interrupts
si : time spent servicing software interrupts
st : time stolen from this vm by the hypervisor
Le due righe successive mostrano informazioni relative alla RAM e all'utilizzo della memoria di scambio. E infine, arrivano le informazioni relative ai processi, che consistono in (in quest'ordine) ID processo, utente proprietario del processo, priorità del processo, buon valore del processo, memoria virtuale, fisica e condivisa utilizzata dal processo, stato del processo (Sleeping, Running o Zombie), utilizzo di CPU e RAM, tempo di attività e comando che ha avviato il processo.
T3. Come uccidere un processo dall'output superiore?
Questo è piuttosto semplice:basta premere 'k' e in alto ti chiederà il PID del processo che vuoi uccidere. Vedrai un messaggio simile al seguente che appare appena sopra la riga contenente le intestazioni delle colonne del processo:
PID to signal/kill [default pid = 3397]
Quindi puoi inserire l'ID del processo o, per impostazione predefinita, top proverà a uccidere (inviando SIGTERM) il primo processo nell'elenco. Una volta inviato il segnale, viene prodotto un messaggio simile al seguente.
Send pid 3007 signal [15/sigterm]
Q4. Come modificare la priorità di un processo?
Come 'k' sta per uccidere, puoi premere 'r' nel caso in cui desideri modificare la priorità di un processo (o se desideri rinnovarlo). Premendo 'r' viene prodotto un messaggio simile al seguente:
PID to renice [default pid = 3397]
Quindi, o inserisci un PID o top cercherà di ridurre la priorità del primo processo nell'elenco per impostazione predefinita. Ad esempio, ho passato un PID e quindi top mi ha chiesto il nuovo valore piacevole.
Renice PID 2665 to value
Basta fornire un valore e premere invio e vedrai che il valore interessante per il processo in questione verrà modificato.
Q5. Come modificare la frequenza di aggiornamento del comando top?
Per impostazione predefinita, top aggiorna l'output ogni 3 secondi, ma puoi modificarlo premendo 'd'. Il comando ti chiederà di inserire il nuovo valore di ritardo:
Change delay from 3.0 to
Basta inserire il valore e premere invio. Questo è tutto.
Q6. Come limitare l'output dei comandi principali a un utente?
Per impostazione predefinita, il comando top mostra tutti i processi. Tuttavia, puoi limitare l'output a un particolare utente premendo 'u'.
Which user (blank for all)
Inserisci semplicemente il nome utente nella riga sopra e premi invio e vedrai che l'output conterrà solo quei processi che sono di proprietà dell'utente il cui nome hai inserito.
Ad esempio, ho inserito 'root', ed ecco l'output:
Q7. Come rendere il comando top display completo insieme agli argomenti?
Questo può essere fatto premendo 'c'. Ecco un esempio:
Quindi puoi vedere il percorso del comando completo e gli argomenti della riga di comando nell'output ora.
Q8. Come ottenere aiuto con i migliori comandi interattivi?
Per ottenere aiuto relativo ai comandi principali interattivi, premere 'h'. Nell'output vedrai i comandi disponibili e cosa fanno. Ad esempio, ecco cosa è apparso sul mio sistema quando ho premuto "h".
Conclusione
Abbiamo appena graffiato la superficie qui. Il comando in alto fornisce molte più funzionalità. Dopo aver compreso ciò di cui abbiamo discusso in questo articolo e aver finito di esercitarlo, vai alla pagina man in alto per saperne di più.