From eebadff7b8e37b47833689207b9343d3b21d772b Mon Sep 17 00:00:00 2001 From: piccihud Date: Sat, 30 Nov 2024 21:53:40 +0100 Subject: [PATCH] top e ps --- 101/018_jobs_process.md | 156 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 155 insertions(+), 1 deletion(-) diff --git a/101/018_jobs_process.md b/101/018_jobs_process.md index 8bab196..6ed2691 100644 --- a/101/018_jobs_process.md +++ b/101/018_jobs_process.md @@ -111,4 +111,158 @@ SIGSEGV (11): Segmentation Fault - Indica che un processo ha tentato di accedere SIGTERM (15): Terminate - Richiesta di terminare un processo; può essere catturato e gestito dal processo ``` -## top e ps \ No newline at end of file +## top e ps + +Mentre il primo produce un output dinamicamente, il secondo lo fa staticamente. + +```bash + > top +top - 20:24:27 up 9:18, 2 users, load average: 0,52, 0,68, 0,60 +Tasks: 363 total, 1 running, 359 sleeping, 0 stopped, 3 zombie +%Cpu(s): 2,2 us, 2,2 sy, 0,0 ni, 95,7 id, 0,0 wa, 0,0 hi, 0,0 si, 0,0 st +MiB Mem : 30036,5 total, 13939,2 free, 6648,3 used, 10742,6 buff/cache +MiB Swap: 980,0 total, 980,0 free, 0,0 used. 23388,2 avail Mem + + PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND + 46892 dado 20 0 10428 5484 3308 R 8,3 0,0 0:00.02 top + 1 root 20 0 24688 15564 10476 S 0,0 0,1 0:04.42 systemd + 2 root 20 0 0 0 0 S 0,0 0,0 0:00.02 kthreadd +``` + +`top` consente alcune interazioni: + +- `M`: ordina per utilizzo della memoria +- `N`: ordina per *numero* ID del processo +- `T`: *tempo* di esecuzione +- `P`: percentuale di uso della CPU +- `R`: ordine ascendente/discendente +- `k`: termina un processo +- `r`: *renice*, ossia cambia la priorita' di un processo. `top` chiedera' il valore di `nice`, compreso tra -20 e 19 (solo root puo' impostare il valore a un numero negativo o inferiore a quello attuale). MAggiore il valore, minore la priorita'. +- `u`: elenca i processi di un particolare utente +- `c`: mostra i percorsi assoluti dei programmi e distingue tra processi in *userspace* e in *kernel space* (tra parentesi `[]`) +- `V`: vista a foresta +- `W`: salva le impostazioni di configurazione in `~/.toprc` + +### Output di top + +Suddiviso in: + +- *summary area* +- *task area* + +#### Summary area + +Composta dalle cinque righe superiori: + +```bash +top - 20:32:32 up 9:27, 2 users, load average: 0,90, 0,88, 0,73 +``` +- *current time* (nel formato 24 ore): `20:32:32` +- *uptime*: `up 9:27` +- *numero di utenti attivi* e *carico medio della CPU* per gli ultimi 1, 5, 15 minuti: `2 users, load average: 0,90, 0,88, 0,73` + +```bash +Tasks: 370 total, 1 running, 366 sleeping, 0 stopped, 3 zombie +``` +- *numero di processi*: `Tasks: 370 total` +- *processi running*: `1 running` +- *sleeping* (processi in attesa di riprendere l'esecuzione): `366 sleeping` +- *zombie*: quelli che hanno terminato l'esecuzione, ma stanno aspettando che il loro processo padre li rimuova dalla tabella dei processi + +```bash +%Cpu(s): 2,2 us, 4,3 sy, 0,0 ni, 93,5 id, 0,0 wa, 0,0 hi, 0,0 si, 0,0 st +``` + +- *processi utente*: `2,2 us` +- *processi system/kernel*: `4,3 sy` +- *processi impostati tramite un valore di nice*: `0,0 ni` +- *tempo di inattivita' della CPU*: `93,5 id` +- *processi in attesa di operazioni di I/O*: `0,0 wa` +- *processi che servono interrupt hardware* (periferiche che inviano segnali al processore e che richiedono attenzione): `0,0 hi` +- *processi che servono interrupt software*: `0,0 si` +- *processi che servono le attivita' di VM*: `0,0 st` + +```bash +MiB Mem : 30036,5 total, 11781,4 free, 7221,2 used, 12340,0 buff/cache +``` + +- memoria totale: `Mem : 30036,5 total` +- memoria inutilizzata: ` 11781,4 free` +- memoria in uso: `7221,2 used` +- memoria bufferizzata e memorizzata nella cache, per evitare un accesso eccessivo al disco: `12340,0 buff/cache` + +```bash +MiB Swap: 980,0 total, 980,0 free, 0,0 used. 22815,3 avail Mem +``` + +- swap totale: `Swap: 980,0 total` +- spazio di swap inutilizzato: `980,0 free` +- spazio di swap in uso + +#### Task area: campi e colonne + +```bash + PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND + 49342 dado 20 0 10428 5492 3316 R 9,1 0,0 0:00.02 top + 1 root 20 0 24688 15564 10476 S 0,0 0,1 0:04.48 systemd +``` + +Include una serie di campi e colonne che riportano informazioni sui processi in esecuzione: + +- `PID` +- `USER`: utente che ha eseguito il comando che ha generato il processo +- `PR`: priorita' del processo al kernel +- `NI`: valore di *nice* +- `VIRT`: memoria totale usata dal processo, incluso lo swap +- `RES`: memoria RAM utilizzata dal processo +- `SHR`: memoria condivisa con altri processi +- `S`: stato del processo. I valori includono S (sleep), R (running) e Z (zombie) +- `%CPU`: percentuale di CPU utilizzata dal processo +- `%MEM`: percentuale di memoria RAM utilizzata (RES in %) +- `TIME+`: tempo totale di attivita' del processo +- `COMMAND`: comando che ha generato il processo + +## ps + +Mostra un'istantanea dei processi. Per vedere tutti i processi: + +```bash + > ps a + PID TTY STAT TIME COMMAND + 2230 tty1 Ssl+ 4:29 sway + 3431 tty1 Sl+ 2:26 Xwayland :0 -rootless -core -terminate 10 -listenfd 26 -listenfd 32 -displayfd 106 -wm + 29065 tty1 S+ 0:00 swaybg + 29067 tty1 Sl+ 0:17 waybar -b bar-0 + 49590 pts/1 Ss 0:00 /bin/bash + 49596 pts/1 R+ 0:00 ps a +``` + +`ps` accetta tre diversi stili di opzioni: BSD (ps a), UNIX (ps -a) e GNU (ps --pid). + +Per vedere i processi di un particolare utente: + +- `ps U user` (BSD) +- `ps -u user` (UNIX) +- `ps --user user` (GNU) + +Un comando utile, che produce un output simile a quello di top, che mostra i processi di tutte le shell, e' `ps aux`, dove: + +- `a`: mostra tutti i processi collegati a un terminale +- `u`: formato orientato all'utente +- `x`: mostra i processi che non sono collegati a un terminale + +```bash + > ps aux +'USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND +root 1 0.0 0.0 24688 15564 ? Ss 11:05 0:04 /sbin/init +root 2 0.0 0.0 0 0 ? S 11:05 0:00 [kthreadd] +root 3 0.0 0.0 0 0 ? S 11:05 0:00 [pool_workqueue_release] +``` + +- `USER` +- `PID` +- `%CPU`: percentuale di CPU utilizzata +- `%MEM`: percentuale di memoria fisica utilizzata +- `TT`: terminale (*tty*) che controlla il processo +- `STAT`: codice che rappresenta lo stato del processo. I valori includono S (sleep), R (running), Z (zombie), T (stopped) +- `STARTED`: ora in cui e' iniziato il processo \ No newline at end of file