Linux Process Termination Cheatsheet
1. Konsep Dasar
Perintah kill di Linux sebenarnya bukan hanya untuk mematikan proses, melainkan untuk mengirimkan sinyal (signals) ke suatu proses.
- PID (Process ID): Angka unik pengidentifikasi proses yang sedang berjalan.
- Sinyal Default: Jika tidak menyertakan jenis sinyal, perintah
killsecara default akan mengirimkan sinyalSIGTERM(15), yang meminta proses untuk berhenti secara normal (graceful shutdown).
2. Daftar Sinyal Utama (Signals)
Melihat daftar seluruh sinyal yang didukung sistem:
kill -l
| Nomor | Nama Sinyal | Deskripsi Singkat | Dapat Ditangkap/Dicegah? |
|---|---|---|---|
| 1 | SIGHUP | Menghubungkan ulang/reload konfigurasi daemon tanpa restart. | Ya |
| 2 | SIGINT | Interrupt dari keyboard (sama seperti menekan Ctrl + C). | Ya |
| 3 | SIGQUIT | Berhenti dan menghasilkan core dump (sama seperti Ctrl + \). | Ya |
| 9 | SIGKILL | Mematikan proses seketika secara paksa. | TIDAK |
| 15 | SIGTERM | Default. Meminta proses berhenti dengan aman (membersihkan cache/file). | Ya |
| 18 | SIGCONT | Melanjutkan proses yang sedang di-pause / ditangguhkan. | Ya |
| 19 | SIGSTOP | Menangguhkan / menjeda (pause) proses seketika. | TIDAK |
| 20 | SIGTSTP | Suspend dari terminal (sama seperti menekan Ctrl + Z). | Ya |
3. Perintah kill (Berdasarkan PID)
A. Menemukan PID Proses
Sebelum menjalankan kill, temukan PID terlebih dahulu:
# Menggunakan pgrep
pgrep -l nginx
pgrep -fa python
# Menggunakan ps & grep
ps aux | grep nginx
# Menggunakan pidof
pidof nginx
B. Sintaks & Contoh Penggunaan
# 1. Menghentikan proses secara normal (SIGTERM / 15)
kill <PID>
kill -15 <PID>
kill -TERM <PID>
kill -s SIGTERM <PID>
# 2. Menghentikan proses secara paksa (SIGKILL / 9)
kill -9 <PID>
kill -KILL <PID>
kill -s SIGKILL <PID>
# 3. Reload konfigurasi layanan (SIGHUP / 1)
kill -1 <PID>
kill -HUP <PID>
# 4. Menjeda dan Melanjutkan Proses
kill -STOP <PID> # Menjeda proses (pause)
kill -CONT <PID> # Melanjutkan proses (resume)
# 5. Membunuh beberapa PID sekaligus
kill 1234 5678 9101
4. Perintah pkill (Berdasarkan Pola / Nama)
pkill memungkinkan Anda mengirim sinyal ke proses menggunakan nama proses atau argumen command-line.
# Menghentikan proses berdasarkan nama parsial
pkill nginx
pkill -9 node
# Mencocokkan full command line / path (-f)
pkill -f "python app.py"
pkill -9 -f "worker.py"
# Menghentikan proses milik user tertentu (-u)
pkill -u www-data
pkill -9 -u john
# Menghentikan proses yang paling baru dibuat (-n) atau paling lama (-o)
pkill -n python
pkill -o python
# Case-insensitive matching (-i)
pkill -i firefox
5. Perintah killall (Berdasarkan Nama Program)
killall membunuh semua proses yang memiliki nama binary yang persis sama.
# Menghentikan semua proses bernama 'chrome'
killall chrome
# Memaksa berhenti semua proses 'apache2'
killall -9 apache2
# Meminta konfirmasi sebelum mematikan proses (-i / interactive)
killall -i firefox
# Menghentikan proses berdasarkan umur proses
killall -y 2h nginx # Proses yang berjalan kurang dari 2 jam
killall -o 5h python # Proses yang berjalan lebih dari 5 jam
# Menghentikan proses milik user tertentu
killall -u john python
6. Kill Berdasarkan Port / File (fuser & lsof)
Sangat berguna saat Anda mengalami error Address already in use (misal port 8080 terkunci).
A. Menggunakan fuser
# Cek proses yang mendengarkan di port TCP 8080
fuser 8080/tcp
# Bunuh langsung proses di port 8080
fuser -k 8080/tcp
# Bunuh secara paksa (-9) di port 8080
fuser -k -9 8080/tcp
B. Menggunakan lsof + kill
# Cek PID di port 3000
lsof -i :3000
# One-liner kill proses di port 3000
kill -9 $(lsof -t -i:3000)
7. Trik Praktis & One-Liners Populer
# 1. Kill semua proses Python yang sedang hang/berjalan
ps aux | grep '[p]ython' | awk '{print $2}' | xargs kill -9
# 2. Kill semua proses milik user tertentu (logout paksa user)
pkill -u nama_user -9
# 3. Kill proses yang memakan CPU tertinggi
kill -9 $(ps -eo pid,%cpu --sort=-%cpu | head -n 2 | tail -n 1 | awk '{print $1}')
# 4. Kill proses yang memakan Memori (RAM) tertinggi
kill -9 $(ps -eo pid,%mem --sort=-%mem | head -n 2 | tail -n 1 | awk '{print $1}')
# 5. GUI Kill (Klik jendela aplikasi yang freeze)
xkill
8. Best Practices & Troubleshooting
- Urutan Pemadaman yang Benar:
- Langkah 1: Selalu coba
kill <PID>(SIGTERM) terlebih dahulu agar aplikasi sempat menutup koneksi database, menyimpan file, dan menghapus file temporary. - Langkah 2: Tunggu 5–10 detik.
- Langkah 3: Gunakan
kill -9 <PID>(SIGKILL) hanya jika aplikasi tidak merespon sama sekali (hung / freeze).
- Langkah 1: Selalu coba
- Kenapa
kill -9Gagal Membunuh Proses?- Zombie Process (
<defunct>): Proses sudah mati tetapi induknya belum membaca exit status. Zombie tidak memakan resource selain slot di tabel proses. Solusi: Bunuh proses parent-nya (PPID). - Uninterruptible Sleep (
Dstate): Proses sedang menunggu operasi hardware I/O (misal disk failure, hanging NFS). Proses ini tidak dapat dibunuh sampai operasi I/O selesai atau sistem di-reboot.
- Zombie Process (
- Memeriksa Parent Process ID (PPID):
ps -o pid,ppid,state,cmd -p <PID_ZOMBIE> # Bunuh parent process: kill -9 <PPID> - Izin Akses (Permissions):
- User biasa hanya bisa mematikan proses miliknya sendiri.
- Gunakan
sudo kill ...untuk menghentikan proses milik sistem atau user lain (root).