Cercare di scoprire cosa è in esecuzione sulla tua macchina e quale processo sta consumando tutta la tua memoria e facendo le cose slllooowwww è un compito ben servito dall'utilità top
.
top
è un programma estremamente utile che agisce in modo simile a Task Manager di Windows o Activity Monitor di MacOS. Esecuzione di top
sulla tua macchina *nix ti mostrerà una vista dal vivo in esecuzione del processo in esecuzione sul tuo sistema.
$ top
A seconda della versione di top
stai correndo, otterrai qualcosa che assomiglia a questo:
top - 08:31:32 up 1 day, 4:09, 0 users, load average: 0.20, 0.12, 0.10
Tasks: 3 total, 1 running, 2 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.5 us, 0.3 sy, 0.0 ni, 99.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 4042284 total, 2523744 used, 1518540 free, 263776 buffers
KiB Swap: 1048572 total, 0 used, 1048572 free. 1804264 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 21964 3632 3124 S 0.0 0.1 0:00.23 bash
193 root 20 0 123520 29636 8640 S 0.0 0.7 0:00.58 flask
195 root 20 0 23608 2724 2400 R 0.0 0.1 0:00.21 top
La tua versione di top
potrebbe avere un aspetto diverso da questo, in particolare nelle colonne visualizzate.
Come leggere l'output
Puoi dire cosa stai eseguendo in base all'output, ma cercare di interpretare i risultati può creare confusione.
Le prime righe contengono una serie di statistiche (i dettagli) seguite da una tabella con un elenco di risultati (l'elenco). Cominciamo con quest'ultimo.
L'elenco
Più risorse Linux
- Comandi Linux cheat sheet
- Cheat sheet sui comandi avanzati di Linux
- Corso online gratuito:Panoramica tecnica RHEL
- Cheat sheet della rete Linux
- Cheat sheet di SELinux
- Cheat sheet dei comandi comuni di Linux
- Cosa sono i container Linux?
- I nostri ultimi articoli su Linux
Questi sono i processi che sono in esecuzione sul sistema. Per impostazione predefinita, sono ordinati in base all'utilizzo della CPU in ordine decrescente. Ciò significa che gli elementi in cima all'elenco utilizzano più risorse della CPU e causano un carico maggiore sul sistema. Sono letteralmente i processi "top" per utilizzo delle risorse. Devi ammettere che è un nome intelligente.
Il COMMAND
la colonna all'estrema destra riporta il nome del processo (il comando che hai eseguito per avviarlo). In questo esempio, sono bash
(un interprete di comandi che stiamo eseguendo top
in), flask
(un micro-framework web scritto in Python) e top
stesso.
Le altre colonne forniscono informazioni utili sui processi:
PID
:l'ID processo , un identificatore univoco per indirizzare i processiUSER
:l'utente che esegue il processoPR
:la priorità dell'attivitàNI
:una migliore rappresentazione della prioritàVIRT
:dimensione della memoria virtuale in KiB (kibibyte)*RES
:dimensione della memoria residente in KiB* (la "memoria fisica" e un sottoinsieme di VIRT)SHR
:dimensione della memoria condivisa in KiB* (la "memoria condivisa" e un sottoinsieme di VIRT)S
:stato del processo, di solito I =inattivo, R =in esecuzione, S =dormiente, Z =zombi, T o t =fermato (ci sono anche altre opzioni meno comuni)%CPU
:percentuale di utilizzo della CPU dall'ultimo aggiornamento dello schermo%MEM
:percentuale diRES
utilizzo della memoria dall'ultimo aggiornamento dello schermoTIME+
:tempo CPU totale utilizzato dall'avvio del processoCOMMAND
:il comando, come descritto sopra
*Sapere esattamente cosa è il VIRT
, RES
e SHR
i valori rappresentano non veramente materia nelle operazioni quotidiane. La cosa importante da sapere è che il processo con più VIRT
è il processo che utilizza più memoria. Se sei in top
perché stai eseguendo il debug del motivo per cui il tuo computer sembra in una pozza di melassa, il processo con il più grande VIRT
il numero è il colpevole. Se vuoi sapere esattamente cosa significano memoria "condivisa" e "fisica", dai un'occhiata a "Tipi di memoria Linux" nel manuale in alto.
E sì, intendevo digitare kibi byte, non kilo byte. Il valore 1.024 che normalmente chiami kilobyte è effettivamente un kibi. Il chilo greco ("χίλιοι") significa migliaia e significa 1.000 di qualcosa (ad esempio, un chilometro è mille metri, un chilogrammo è mille grammi). Kibi è un portmanteau di chilo e byte , e significa 1.024 byte (o 2). Ma, poiché le parole sono difficili da dire, molte persone dicono kilobyte quando significano 1.024 byte. Tutto ciò significa che è top
sta cercando di usare i termini corretti qui, quindi vai con esso. #themoreyouknow?.
Una nota sugli aggiornamenti dello schermo:
Gli aggiornamenti dello schermo in tempo reale sono una delle cose oggettivamente davvero interessanti I programmi Linux possono fare. Ciò significa che possono aggiornare il proprio display in tempo reale, in modo che appaiano animati. Anche se usano il testo. Così bello! Nel nostro caso, il tempo tra gli aggiornamenti è importante, perché alcune delle nostre statistiche (%CPU
e %MEM
) si basano sul valore dall'ultimo aggiornamento dello schermo.
E poiché siamo in esecuzione in un'applicazione persistente, possiamo premere i comandi da tastiera per apportare modifiche in tempo reale alle impostazioni o alle configurazioni (anziché, ad esempio, chiudere l'applicazione ed eseguire nuovamente l'applicazione con un diverso flag della riga di comando).
Digitando h
richiama la schermata "Guida", che mostra anche il ritardo predefinito (il tempo tra gli aggiornamenti dello schermo). Per impostazione predefinita, questo valore è (circa) tre secondi, ma puoi cambiarlo digitando d
(presumibilmente per "ritardo") o s
(probabilmente per "schermo" o "secondi").
I dettagli
Sopra l'elenco dei processi, c'è un sacco di altre informazioni utili. Alcuni di questi dettagli possono sembrare strani e confusi, ma una volta che ti prendi del tempo per esaminarli, vedrai che sono statistiche molto utili da tirare fuori in un pizzico.
La prima riga contiene informazioni generali sul sistema
top
:stiamo eseguendotop
! Ciaotop
!XX:YY:XX
:l'ora, aggiornata ogni volta che lo schermo si aggiornaup
(poiX day, YY:ZZ
):il tempo di attività del sistema, ovvero quanto tempo è trascorso dall'accensione del sistemaload average
(quindi tre numeri):il sistema si carica rispettivamente negli ultimi uno, cinque e 15 minuti
La seconda riga (Tasks
) mostra informazioni sulle attività in esecuzione ed è abbastanza autoesplicativo. Mostra il numero totale di processi e il numero di processi in esecuzione, inattivi, interrotti e zombie. Questa è letteralmente una somma della S
(stato ) colonna sopra descritta.
La terza riga (%Cpu(s)
) mostra l'utilizzo della CPU separato per tipi. I dati sono i valori tra gli aggiornamenti dello schermo. I valori sono:
us
:processi utentesy
:processi di sistemani
:processi utente piacevoliid
:tempo di inattività della CPU; un tempo di inattività elevato significa che altrimenti non c'è molto da farewa
:tempo di attesa o tempo trascorso in attesa del completamento dell'I/Ohi
:tempo trascorso in attesa di interrupt hardwaresi
:tempo trascorso in attesa di interruzioni softwarest
:"tempo rubato a questa VM dall'hypervisor"
Puoi comprimere le Tasks
e %Cpu(s)
righe digitando t
(per "commutare").
Il quarto (KiB Mem
) e la quinta riga (KiB Swap
) forniscono informazioni per la memoria e lo scambio. Questi valori sono:
total
used
free
Ma anche:
- memoria
buffers
- scambia
cached Mem
Per impostazione predefinita, sono elencati in KiB, ma premendo E
(per "estendere il ridimensionamento della memoria") cicla attraverso diversi valori:kibibyte, mebibyte, gibibyte, tebibyte, pebibyte ed exbibyte. (Ovvero kilobyte, megabyte, gigabyte, terabyte, petabyte ed exabyte, ma i loro "nomi reali.")
La top
il manuale utente mostra ancora più informazioni su flag e configurazioni utili. Per trovare il manuale sul tuo sistema, puoi eseguire man top
. Esistono vari siti Web che mostrano un rendering HTML del manuale, ma tieni presente che questi potrebbero essere per una versione diversa di top .
Due migliori alternative
Non devi sempre usare top
per capire cosa sta succedendo. A seconda delle circostanze, altri strumenti potrebbero aiutarti a diagnosticare i problemi, soprattutto quando desideri un'interfaccia più grafica o specializzata.
htop
htop
è molto simile a top
, ma porta in tavola qualcosa di estremamente utile:una rappresentazione grafica dell'utilizzo della CPU e della memoria.
Ecco come l'ambiente che abbiamo esaminato in top
cerca in htop
. Il display è molto più semplice, ma comunque ricco di funzionalità.
I conteggi delle attività, il carico, il tempo di attività e l'elenco dei processi sono ancora presenti, ma otteniamo una visione animata, colorata e animata dell'utilizzo della CPU per core e un grafico dell'utilizzo della memoria.
Ecco cosa significano i diversi colori (puoi ottenere queste informazioni anche premendo h
per "aiuto").
Priorità o tipi di attività della CPU:
- blu:priorità bassa
- verde:priorità normale
- rosso:attività del kernel
- blu:attività virtualizzate
- il valore alla fine della barra è la percentuale di CPU utilizzata
Memoria:
- verde:memoria utilizzata
- blu:memoria bufferizzata
- giallo:memoria cache
- i valori alla fine della barra mostrano la memoria utilizzata e quella totale
Se i colori non sono utili per te, puoi eseguire htop -C
per disabilitarli; invece htop
utilizzerà simboli diversi per separare i tipi di CPU e di memoria.
Nella parte inferiore, c'è un'utile visualizzazione dei tasti funzione attivi che puoi utilizzare per eseguire operazioni come filtrare i risultati o modificare l'ordinamento. Prova alcuni dei comandi per vedere cosa fanno. Fai solo attenzione quando provi F9
. Questo farà apparire un elenco di segnali che uccideranno (cioè interromperanno) un processo. Suggerirei di esplorare queste opzioni al di fuori di un ambiente di produzione.
L'autore di htop
, Hisham Muhammad (e sì, si chiama htop
dopo Hisham) ha presentato un discorso lampo su htop
al FOSDEM 2018 a febbraio. Ha spiegato come htop
non solo ha una grafica pulita, ma mostra anche informazioni statistiche più moderne sui processi rispetto alle vecchie utility di monitoraggio (come top
) no.
Puoi leggere di più su htop
sulla pagina del manuale o sul sito Web htop. (Attenzione:il sito contiene uno sfondo animato di htop
.)
statistiche della finestra mobile
Se stai lavorando con Docker, puoi eseguire docker stats
per generare una rappresentazione ricca di contesto di ciò che stanno facendo i tuoi container.
Questo può essere più utile di top
perché, invece di separare per processi, stai separando per contenitore. Ciò è particolarmente utile quando un container è lento, poiché vedere quale container sta utilizzando la maggior parte delle risorse è più veloce che eseguire top
e provando a mappare il processo al contenitore.
Le precedenti spiegazioni di acronimi e descrittori in top
e htop
dovrebbe facilitare la comprensione di quelli in docker stats
. Tuttavia, la documentazione relativa alle statistiche della finestra mobile fornisce descrizioni utili di ciascuna colonna.