Cosa fa#
Invia segnali ai processi identificati dal PID. Il nome e' fuorviante: kill non termina direttamente un processo, gli manda un segnale. Il processo decide come reagire — tranne per SIGKILL (9), che il kernel esegue forzatamente senza che il processo possa ignorarlo.
Sintassi#
kill [-segnale] PID...
Comandi essenziali#
| Comando | Flag | Significato flag | Cosa fa |
|---|---|---|---|
kill PID | — | — | Invia SIGTERM (15) — chiede chiusura pulita |
kill -9 PID | -9 | SIGKILL | Termina immediatamente, non ignorabile |
kill -15 PID | -15 | SIGTERM | Esplicito — identico a kill PID |
kill -1 PID | -1 | SIGHUP — hang up | Chiude sessione o ricarica configurazione |
kill -l | -l | list | Lista tutti i segnali disponibili con numero |
killall nome | — | — | Termina tutti i processi con quel nome |
killall -u utente | -u | user | Termina tutti i processi di un utente |
kill $(lsof -t -i :3000) | — | — | Termina il processo in ascolto su una porta |
I segnali principali#
| Segnale | Numero | Ignorabile | Uso tipico |
|---|---|---|---|
| SIGTERM | 15 | Si | Chiusura pulita — default di kill. Una reverse shell lo ignora intenzionalmente |
| SIGKILL | 9 | NO | Terminazione forzata gestita dal kernel — non ignorabile da nessun processo |
| SIGHUP | 1 | Si | Chiude sessione o ricarica config servizio |
| SIGINT | 2 | Si | Equivalente a CTRL+C da tastiera |
| SIGSTOP | 19 | NO | Pausa il processo |
| SIGCONT | 18 | Si | Riprende un processo in pausa |
Combinazioni utili#
# Strategia corretta — SIGTERM prima, SIGKILL solo se necessario
kill 4821 # 1. chiedi chiusura pulita
sleep 5 # 2. aspetta 5 secondi
kill -9 4821 # 3. se ancora vivo, forza la chiusura
# Verifica che il processo sia terminato
ps -p 4821 # nessun output = terminato
# Termina il processo in ascolto su una porta specifica
kill $(lsof -t -i :8080)
# lsof -t = output solo PID, nessun testo aggiuntivo
# Termina tutti i processi di un utente (incident response)
sudo killall -u utente_compromesso
# SIGHUP — ricarica la configurazione di un servizio senza riavviarlo
# utile per nginx, sshd, wazuh-agent: applica le modifiche senza downtime
kill -1 $(pgrep nginx)
# pgrep = cerca il PID per nome, equivale a: ps aux | grep nginx | awk '{print $2}'
# SIGINT — equivalente a CTRL+C da codice/script
# utile per interrompere un processo in modo pulito dall'esterno
kill -2 4821
# SIGSTOP / SIGCONT — pausa e ripresa (non ignorabili)
kill -19 4821 # pausa il processo — rimane in memoria ma non usa CPU
kill -18 4821 # riprende il processo da dove si era fermato
# utile in forensics: congeli il processo per analizzarlo senza che continui ad agirenohup — resistere al SIGHUP#
Quando chiudi un terminale SSH, il kernel manda SIGHUP a tutti i processi figli — che normalmente terminano. nohup (no hang up) fa ignorare quel segnale al processo, che continua a girare anche dopo la disconnessione.
# Lanci uno script lungo via SSH — se la connessione cade, lo script continua
nohup python3 monitor.py &
# & = manda in background
# output va automaticamente in nohup.out nella cartella corrente
# Versione con log su file dedicato
nohup python3 monitor.py > monitor.log 2>&1 &
# 2>&1 = reindirizza stderr su stdout → tutto finisce in monitor.log
# Verifica che giri ancora dopo la disconnessione
ps aux | grep monitor.pySenza nohup, lanciare uno script via SSH e chiudere il terminale lo termina. Con nohup il processo sopravvive alla sessione che lo ha creato.
Scenario Reale#
Un analista trova un processo python3 /tmp/miner.py in esecuzione come root alle 03:14. Prima di terminarlo documenta tutto con ps e lsof. Poi esegue kill -15 4821 per tentare una chiusura pulita. Se il processo non risponde dopo 5 secondi, usa kill -9 4821. Non parte direttamente con -9 perche' il processo potrebbe stare scrivendo dati su disco — una terminazione brusca rischierebbe di corrompere evidenze forensi.
Dove l'ho usato#
- linux-processes — contesto teorico sui segnali
Note personali#
kill -9 su un processo che sta scrivendo su disco o database puo' causare corruzione dei dati. Usalo solo dopo aver provato SIGTERM senza successo.
Nella tua carriera hai usato spesso -9 direttamente — in contesto forense e' meglio sempre tentare SIGTERM prima e documentare la risposta del processo.
Collegato a#
- system — categoria
- ps — trova il PID prima di usare kill
- jobs-fg-bg — gestione job in foreground e background
- shutdown — per spegnere il sistema in modo ordinato


