Processi e Monitoraggio del Sistema

Bentornato.
Nella lezione precedente hai imparato a installare software dal terminale.
Ora dobbiamo rispondere a una domanda importante:
Cosa sta davvero girando su questa macchina?
Il computer può sembrare tranquillo.
Ma dentro ci sono processi, servizi, attività in background, schede del browser e una cosa misteriosa che usa il 40% della CPU senza motivo.
Oggi indaghiamo.
Cosa Imparerai
In questa lezione imparerai a:
- capire che cos’è un processo;
- elencare i processi con
ps; - monitorare il sistema con
top; - usare
htop; - controllare la memoria con
free; - controllare il tempo di attività con
uptime; - fermare processi con
kill; - evitare di fermare la cosa sbagliata.
La Missione
La tua missione è semplice:
Imparare a vedere cosa è in esecuzione, capire cosa usa le risorse del sistema e fermare un processo quando si comporta male.
Il terminale diventa la tua sala di controllo.
Molto serio.
Quasi NASA, ma con più caffè.
Che Cos’è un Processo?
Un processo è un programma in esecuzione.
Quando apri un browser, crea processi.
Quando apri un terminale, crea un processo.
Quando Linux esegue servizi in background, anche quelli sono processi.
Un processo ha un ID chiamato PID.
PID significa:
Process ID
Pensalo come il numero del processo.
Una targhetta identificativa, ma meno simpatica.
Mostrare il Processo della Shell Corrente
Esegui:
echo $$
Questo mostra il PID della shell corrente.
Potresti vedere qualcosa come:
24891
Quel numero è l’ID del processo della shell del tuo terminale.
Poco poetico.
Molto utile.
Elencare i Processi con ps
Per mostrare i processi collegati al terminale corrente, usa:
ps
Potresti vedere:
PID TTY TIME CMD
24891 pts/0 00:00:00 zsh
24930 pts/0 00:00:00 ps
Questo mostra:
PID— ID del processo;TTY— terminale;TIME— tempo CPU usato;CMD— nome del comando.
Per vedere più processi, usa:
ps aux
Questo mostra molti processi in esecuzione.
Forse troppi.
Non panico.
Linux ti sta solo mostrando il backstage.
Cercare un Processo
Puoi combinare ps con grep.
Per cercare firefox:
ps aux | grep firefox
Oppure node:
ps aux | grep node
Il simbolo | si chiama pipe.
Manda l’output di un comando dentro un altro comando.
Molto potente.
Un po’ magico.
Useremo le pipe più avanti.
Monitorare con top
Esegui:
top
top mostra l’attività del sistema in tempo reale.
Puoi vedere:
- processi in esecuzione;
- uso della CPU;
- uso della memoria;
- PID;
- nomi dei comandi.
Per uscire da top, premi:
q
Ancora q.
Il mondo del terminale ama davvero quel tasto.
Monitorare con htop
Se hai installato htop nella lezione precedente, esegui:
htop
htop è più facile da leggere di top.
Mostra:
- barre della CPU;
- uso della memoria;
- processi in esecuzione;
- opzioni di ricerca e filtro;
- albero dei processi.
Per uscire:
q
Se htop non è installato, installalo.
Arch Linux
sudo pacman -S htop
Ubuntu o Debian
sudo apt install htop
Fedora
sudo dnf install htop
Controllare la Memoria
Per controllare la memoria, usa:
free -h
-h significa human-readable.
Perché numeri come 8283475968 non sono amichevoli.
Potresti vedere:
total used free shared buff/cache available
Mem: 15Gi 4.2Gi 6.1Gi 500Mi 5.2Gi 10Gi
Swap: 4.0Gi 0B 4.0Gi
Colonne importanti:
total— memoria totale;used— memoria usata;free— memoria completamente libera;available— memoria disponibile per nuovi programmi.
Di solito available è più utile di free.
Linux usa memoria per cache perché è intelligente.
Non la sta sprecando.
Sta preparando snack per il lavoro futuro.
Controllare l’Uptime
Per vedere da quanto tempo il sistema è acceso, usa:
uptime
Potresti vedere:
15:42:18 up 3 hours, 2 users, load average: 0.42, 0.36, 0.30
Questo mostra:
- ora attuale;
- da quanto tempo il sistema è acceso;
- numero di utenti;
- load average.
Il load average mostra quanto il sistema è stato occupato.
Per ora non preoccuparti troppo.
Numeri molto alti possono significare che il sistema è sotto pressione.
Come un cameriere durante il pranzo della domenica in Italia.
Fermare un Processo con kill
A volte un processo si blocca.
A volte un programma non vuole chiudersi.
A volte il software diventa teatrale.
Prima trova il PID.
Per esempio:
ps aux | grep sleep
Creiamo un processo innocuo di test:
sleep 300
Questo comando aspetta 300 secondi.
Apri un altro terminale e cercalo:
ps aux | grep sleep
Trova il PID, poi fermalo:
kill PID_NUMBER
Esempio:
kill 24999
Sostituisci 24999 con il PID reale.
Fermare con Forza un Processo
Se kill normale non funziona, potresti vedere:
kill -9 PID_NUMBER
-9 è più forte.
Forza il processo a fermarsi.
Usalo con attenzione.
kill -9 non è una conversazione gentile.
È l’equivalente terminale di togliere la sedia mentre il processo è ancora seduto.
Fermare per Nome
Alcuni sistemi hanno pkill.
Esempio:
pkill firefox
Questo ferma processi per nome.
Attenzione.
Se esegui:
pkill node
potresti fermare tutti i processi Node.js.
Incluso il tuo server di sviluppo.
Il sito sparisce.
Tu ti confondi.
Il terminale non dice niente.
Classico.
Errori Comuni
Fermare il PID sbagliato
Controlla sempre prima:
ps aux | grep process-name
Leggi con attenzione.
Non uccidere processi a caso come un cowboy in un data center.
Usare sudo troppo in fretta
Se non riesci a fermare un processo, puoi provare:
sudo kill PID_NUMBER
Ma prima di usare sudo, chiediti:
Capisco che cos’è questo processo?
Se la risposta è no, rallenta.
Linux premia la pazienza.
Punisce le ipotesi eroiche.
Confondere l’uso della memoria
Linux può mostrare poca memoria libera.
Non sempre è un problema.
Controlla:
free -h
Guarda available.
Linux usa memoria per cache perché memoria inutilizzata è memoria sprecata.
Molto filosofico.
Molto efficiente.
Pratica
Prova questo:
ps
ps aux
top
free -h
uptime
Poi installa e avvia htop se serve:
htop
Rispondi:
- Che cos’è un processo?
- Che cos’è un PID?
- Quale comando mostra processi in tempo reale?
- Quale comando mostra l’uso della memoria?
- Cosa fa
kill?
Mini Sfida
Crea un processo di test:
sleep 300
Poi, in un altro terminale:
- Trovalo con
ps aux | grep sleep. - Trova il suo PID.
- Fermalo con
kill. - Controlla che sia sparito.
Non usare kill -9 se kill normale funziona.
Oggi siamo professionisti.
Non pirati del terminale.
Riassunto
Oggi hai imparato che:
- un processo è un programma in esecuzione;
- ogni processo ha un PID;
psmostra processi;ps auxmostra molti processi del sistema;topmostra attività live del sistema;htopè un monitor di sistema più amichevole;free -hmostra uso della memoria;uptimemostra da quanto tempo il sistema è acceso;killferma processi;kill -9forza un processo a fermarsi e va usato con attenzione.
Ora puoi vedere cosa succede dentro il sistema.
Questo è un grande passo.
Non stai più solo usando Linux.
Lo stai guardando respirare.
Leggermente inquietante.
Molto utile.
Prossima Lezione
Nella prossima lezione impareremo comandi di rete come ping, curl, ip e ss.
Perché i computer non sono isole.
Parlano con altri computer.
A volte troppo.