Skip to main content
  1. Comandi/

kill - send signal to process

·4 mins
Alessio Barnini
Author
Alessio Barnini
Table of Contents

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
#

ComandoFlagSignificato flagCosa fa
kill PIDInvia SIGTERM (15) — chiede chiusura pulita
kill -9 PID-9SIGKILLTermina immediatamente, non ignorabile
kill -15 PID-15SIGTERMEsplicito — identico a kill PID
kill -1 PID-1SIGHUP — hang upChiude sessione o ricarica configurazione
kill -l-llistLista tutti i segnali disponibili con numero
killall nomeTermina tutti i processi con quel nome
killall -u utente-uuserTermina tutti i processi di un utente
kill $(lsof -t -i :3000)Termina il processo in ascolto su una porta

I segnali principali
#

SegnaleNumeroIgnorabileUso tipico
SIGTERM15SiChiusura pulita — default di kill. Una reverse shell lo ignora intenzionalmente
SIGKILL9NOTerminazione forzata gestita dal kernel — non ignorabile da nessun processo
SIGHUP1SiChiude sessione o ricarica config servizio
SIGINT2SiEquivalente a CTRL+C da tastiera
SIGSTOP19NOPausa il processo
SIGCONT18SiRiprende 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 agire

nohup — 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.py

Senza 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
#

Note personali
#

Warning

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.

Tip

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

Related