[GUIDA] Linux: come ottenere informazioni sui processi in esecuzione

by Matteo Gatti on

Ieri, in questo articolo, vi ho spiegato come preparare due script utili ad individuare i processi con consumo elevato di CPU e RAM  in esecuzione sulla propria distribuzione GNU/Linux. In Linux, un’istanza di un programma si chiama processo. Occasionalmente, quando si lavora su una macchina Linux, potrebbe essere necessario scoprire quali processi sono in esecuzione. Esistono numerosi comandi che è possibile utilizzare per trovare informazioni sui processi in esecuzione, ps e top sono tra i più utilizzati.

Processi in esecuzione su Linux: il comando top

Il comando top può essere visto come un monitor di sistema molto utile e semplice da utilizzare, che ci permette anche di capire perché il nostro OS subisce dei rallentamenti. Fornisce una visualizzazione in tempo reale del processo in esecuzione. Permette di visualizzare le informazioni di riepilogo del sistema e l’elenco dei processi in corso gestiti dal kernel.

Esso visualizza diverse informazioni del sistema come l’utilizzo della CPU, l’utilizzo della RAM, della memoria Swap, il numero di processi in esecuzione, l’uptime del sistema, il carico di sistema, la dimensione del buffer, la dimensione della cache, il PID, etc. Per impostazione predefinita, l’output è ordinato sulla base dell’utilizzo della CPU e i dati visualizzati vengono aggiornati ogni 5 secondi.

Si provi aprire il terminale e dare il seguente comando:

  • top -b | head -50

Dopo aver premuto il tasto Invio dovrebbe apparire un output di questo tipo:

top - 00:28:49 up 14:33,  1 user,  load average: 2.43, 2.49, 2.23
Tasks: 305 total,   1 running, 304 sleeping,   0 stopped,   0 zombie
%Cpu0  : 11.7 us,  3.7 sy,  0.0 ni, 82.3 id,  0.0 wa,  1.0 hi,  1.3 si,  0.0 st
%Cpu1  : 13.6 us,  3.3 sy,  0.0 ni, 81.1 id,  0.7 wa,  0.3 hi,  1.0 si,  0.0 st
%Cpu2  : 10.9 us,  2.6 sy,  0.0 ni, 85.1 id,  0.0 wa,  0.3 hi,  1.0 si,  0.0 st
%Cpu3  : 16.0 us,  2.6 sy,  0.0 ni, 80.1 id,  0.0 wa,  0.3 hi,  1.0 si,  0.0 st
%Cpu4  :  9.2 us,  3.6 sy,  0.0 ni, 85.9 id,  0.0 wa,  0.3 hi,  1.0 si,  0.0 st
%Cpu5  : 15.6 us,  2.9 sy,  0.0 ni, 80.5 id,  0.0 wa,  0.3 hi,  0.7 si,  0.0 st
%Cpu6  : 11.6 us,  4.3 sy,  0.0 ni, 82.7 id,  0.0 wa,  0.3 hi,  1.0 si,  0.0 st
%Cpu7  :  8.0 us,  3.0 sy,  0.0 ni, 87.3 id,  0.0 wa,  0.7 hi,  1.0 si,  0.0 st
KiB Mem : 16248556 total,  1022456 free,  8778508 used,  6447592 buff/cache
KiB Swap: 17873388 total, 17873388 free,        0 used.  4201560 avail Mem
PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
18527 mtt   20     3151820 624808 325748 S  52.8   3.8  59:26.72 /usr/lib/firefox/firefox -contentproc -childID 18 -isForBrowser -prefsLen 10002 -prefMapSize 213431 -parentBuildID 20191031132559 -greomni /+
1714 mtt 20 4764668 910940 443228 S 21.5 5.6 68:59.33 /usr/lib/firefox/firefox --new-window
1227 mtt 20 4193108 377344 181404 S 11.6 2.3 21:47.36 /usr/bin/gnome-shell
1170 mtt 20 1008820 572700 546844 S 5.6 3.5 19:05.10 /usr/lib/Xorg vt2 -displayfd 3 -auth /run/user/1000/gdm/Xauthority -nolisten tcp -background none -noreset -keeptty -verbose 3
18324 mtt 20 3300288 789344 127948 S 5.0 4.9 9:46.89 /usr/lib/firefox/firefox -contentproc -childID 16 -isForBrowser -prefsLen 10002 -prefMapSize 213431 -parentBuildID 20191031132559 -greomni /+
4684 mtt 20 3363708 1.1g 1.0g S 3.6 7.2 14:10.18 /usr/lib/virtualbox/VirtualBoxVM --comment CentOS7 --startvm 002f47b8-2af2-48f5-be1d-67b67e03514c --no-startvm-errormsgbox
4607 mtt 20 4591040 1.7g 1.6g S 3.0 11.0 14:28.86 /usr/lib/virtualbox/VirtualBoxVM --comment Ubuntu-18.04 --startvm e8c32dbb-8b01-41b0-977a-bf28b9db1117 --no-startvm-errormsgbox
1783 mtt 20 3132640 451924 132168 S 2.6 2.8 39:49.66 /usr/lib/firefox/firefox -contentproc -childID 1 -isForBrowser -prefsLen 1 -prefMapSize 213431 -parentBuildID 20191031132559 -greomni /usr/l+
1211 mtt 9 -11 2865268 21272 16828 S 2.0 0.1 11:01.29 /usr/bin/pulseaudio --daemonize=no
4562 mtt 20 1096888 28812 21044 S 1.7 0.2 4:49.33 /usr/lib/virtualbox/VBoxSVC --auto-shutdown
16865 mtt 20 3073364 430596 124652 S 1.3 2.7 8:04.02 /usr/lib/firefox/firefox -contentproc -childID 15 -isForBrowser -prefsLen 10002 -prefMapSize 213431 -parentBuildID 20191031132559 -greomni /+
2179 mtt 20 2945348 429644 172940 S 1.0 2.6 15:20.90 /usr/lib/firefox/firefox -contentproc -childID 6 -isForBrowser -prefsLen 7821 -prefMapSize 213431 -parentBuildID 20191031132559 -greomni /us+
La prima riga indica in ordine:
  • ora attuale (00:28:49)
  • uptime della macchina
  • utenti attualmente connessi (1 user)
  • media del carico di sistema (load average: 2.43, 2.49, 2.23) i 3 valori si riferiscono all’ultimo minuto, gli ultimi 5 minuti, l’ultimo quarto d’ora.
La seconda riga indica in ordine:
  • Processi totali in esecuzione (305 total)
  • Processi attivi (1 running)
  • Processi dormienti (304 sleeping)
  • Processi in stop (0 stopped)
  • Processi che aspettano di essere stoppati dal processo padre (0 zombie)
La terza riga indica la modalità di utilizzo della cpu:
  • Percentuale del carico dei processi utente (%us)
  • Percentuale del carico dei processi di sistema (%sy)
  • Percentuale del carico dei processi con priorità di aggiornamento nice (%ni)
  • Percentuale di inattività della cpu (%id)
  • Percentuale dei processi in attesa di operazioni I/O (%wa)
  • Percentuale della CPU che servono interrupt hardware (0.3% hi — Hardware IRQ)
  • Percentuale della CPU che servono interrupt software(% si — Software Interrupts)
  • La quantità di CPU ‘rubata’ da questa macchina virtuale dall’hypervisor per altre attività (come far funzionare un altra macchina virtuale) questo sarà 0 su desktop e server senza macchine virtuali. (%st — Steal Time)
La quarta e la quinta riga indicano rispettivamente l’utilizzo di memoria fisica (Ram) e della swap. In ordine: Memoria totale, in uso, libera, buffers o cached.

Questi i dettagli del comando precedente:

  • top: il comando principale.
  • -b: modalità batch.
  • head -50: mostra le prime 50 righe nell’output.
  • PID: ID univoco del processo.
  • USER: proprietario del processo.
  • PR: priorità del processo.
  • NI: il valore ESATTO (NICE) del processo.
  • VIRT: quantità di memoria virtuale utilizzata dal processo.
  • RES: quantità di memoria fisica utilizzata dal processo.
  • SHR: quantità di memoria condivisa utilizzata dal processo.
  • S: indica lo stato del processo: S = sleep R = run Z = zombie.
  • %CPU: percentuale di CPU utilizzata dal processo.
  • %MEM: percentuale di RAM utilizzata dal processo.
  • TIME+ : da quanto tempo il processo in corso è in esecuzione.
  • COMMAND: nome del processo.
Un’alternativa al comando top è htop, cui, eventualmente, dedicherò un altro articolo.

Il comando ps

ps è un comando molto popolare su Linux che sta per: process status (stato del processo). Con questo comando è possibile visualizzare le informazioni sui processi attivi. Esso fornisce un’istantanea dei processi in esecuzione insieme a informazioni dettagliate come nome utente, ID utente, utilizzo della CPU e di memoria, data di inizio processo e nome del comando. ps specificato senza ulteriori opzioni restituisce l’elenco sintetico dei processi appartenenti all’utente e controllati mediante il terminale in uso. Può essere usato insieme agli argomenti ax e aux per ottenere una lista più completa:
  • ax mostra i processi relativi a tutti gli utenti (-a) ed anche non controllati dl terminale (-x);
  • aux identico ad ax ma permette di visualizzare anche le user (-u) degli utenti a cui appartengono i processi in esecuzione.
Si provi ora ad aprire il terminale e a dare il seguente comando:
  • # ps -eo pid,ppid,%mem,%cpu,cmd –sort=-%cpu | head

Dopo aver premuto il tasto Invio dovrebbe apparire un output di questo tipo:

PID  PPID %MEM %CPU CMD
 18527  1714  4.2 40.3 /usr/lib/firefox/firefox -contentproc -childID 18 -isForBrowser -prefsLen 10002 -prefMapSize 213431 -parentBuildID 20191031132559 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 1714 true tab
 1714  1152  5.6  8.0 /usr/lib/firefox/firefox --new-window
 18324  1714  4.9  6.3 /usr/lib/firefox/firefox -contentproc -childID 16 -isForBrowser -prefsLen 10002 -prefMapSize 213431 -parentBuildID 20191031132559 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 1714 true tab
 3286  1714  2.0  5.1 /usr/lib/firefox/firefox -contentproc -childID 14 -isForBrowser -prefsLen 8078 -prefMapSize 213431 -parentBuildID 20191031132559 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 1714 true tab
 1783  1714  3.0  4.5 /usr/lib/firefox/firefox -contentproc -childID 1 -isForBrowser -prefsLen 1 -prefMapSize 213431 -parentBuildID 20191031132559 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 1714 true tab
 1227  1152  2.3  2.5 /usr/bin/gnome-shell
 1170  1168  3.5  2.2 /usr/lib/Xorg vt2 -displayfd 3 -auth /run/user/1000/gdm/Xauthority -nolisten tcp -background none -noreset -keeptty -verbose 3
 16865  1714  2.5  2.1 /usr/lib/firefox/firefox -contentproc -childID 15 -isForBrowser -prefsLen 10002 -prefMapSize 213431 -parentBuildID 20191031132559 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 1714 true tab
 2179  1714  2.7  1.8 /usr/lib/firefox/firefox -contentproc -childID 6 -isForBrowser -prefsLen 7821 -prefMapSize 213431 -parentBuildID 20191031132559 -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 1714 true tab
Questi i dettagli del comando precedente:

ps: il comando principale.

-e: seleziona tutti i processi.

-o: per personalizzare il formato di output.

-Sort=-%cpu: ordina l’output sulla base dell’utilizzo della CPU.

head: per visualizzare le prime 10 righe dell’output

PID: ID univoco del processo.

PPID: ID univoco del processo “genitore”.

% MEM: la percentuale di RAM utilizzata dal processo.

% CPU: la percentuale di CPU utilizzata dal processo.

CMD: nome del processo e relativa directory.

Seguiteci sul nostro canale Telegram, sulla nostra pagina Facebook e su Google News. Nel campo qui sotto è possibile commentare e creare spunti di discussione inerenti le tematiche trattate sul blog. L'articolo [GUIDA] Linux: come ottenere informazioni sui processi in esecuzione sembra essere il primo su Linux Freedom.

Leggi il contenuto originale su Linux Freedom

Written by: Matteo Gatti