Process Management
Setiap program yang berjalan di komputer adalah sebuah process. Sebagai developer, kamu perlu bisa melihat, mengontrol, dan menghentikan proses.
Melihat Proses
# Proses milik user saat ini
ps
# PID TTY TIME CMD
# 1234 pts/0 00:00:00 bash
# 5678 pts/0 00:00:01 node
# Semua proses dengan detail
ps aux
# USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
# budi 1234 0.0 0.1 12345 6789 pts/0 S 10:00 0:00 node app.js
# Hanya proses tertentu
ps aux | grep node
# budi 1234 0.5 1.2 54321 12345 pts/0 S 10:00 0:01 node app.js
top & htop — Monitor Real-time
# Monitor proses secara live
top
# Tekan q untuk keluar
# htop — versi yang lebih user-friendly (perlu install)
htop
Di dalam top:
P— sort by CPUM— sort by memoryk— kill prosesq— keluar
Menghentikan Proses
# Kill berdasarkan PID
kill 1234
# Force kill (jika kill biasa tidak berhasil)
kill -9 1234
# Kill berdasarkan nama
killall node
# Kill berdasarkan port (sangat berguna!)
# Cari PID dari port 3000
lsof -i :3000
# COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
# node 1234 budi 23u IPv6 98765 0t0 TCP *:3000
# Lalu kill PID-nya
kill 1234
# Atau shortcut: kill proses di port tertentu
kill $(lsof -t -i:3000)
Background & Foreground
# Jalankan di background (tambahkan &)
npm run dev &
# [1] 1234 (job number dan PID)
# Lihat job yang berjalan di background
jobs
# [1]+ Running npm run dev &
# Bawa ke foreground
fg %1
# Kirim ke background (dari foreground, Ctrl+Z dulu)
# Ctrl+Z — suspend/pause proses
bg %1 — lanjutkan di background
# Jalankan perintah yang tidak terpengaruh terminal ditutup
nohup npm run build &
# Output disimpan di nohup.out
Signal
Signal adalah cara berkomunikasi dengan proses:
| Signal | Nomor | Arti |
|---|---|---|
SIGTERM |
15 | Minta berhenti dengan baik (default kill) |
SIGKILL |
9 | Paksa berhenti (tidak bisa ditangkap) |
SIGINT |
2 | Interrupt (Ctrl+C) |
SIGSTOP |
19 | Pause proses (Ctrl+Z) |
SIGHUP |
1 | Terminal ditutup |
kill -SIGTERM 1234 # Sama dengan: kill 1234
kill -SIGKILL 1234 # Sama dengan: kill -9 1234
Port Management
# Cek port mana yang sedang digunakan
lsof -i -P -n | grep LISTEN
# Cek port tertentu
lsof -i :3000
lsof -i :8080
# Alternatif: gunakan ss (Linux) atau netstat
ss -tulpn | grep 3000
netstat -tulpn | grep 3000
Contoh Workflow Developer
# Dev server tidak mau berhenti? Force kill
kill $(lsof -t -i:3000)
# Jalankan 2 server sekaligus
npm run dev &
php artisan serve &
# Lihat semua job
jobs -l
# Monitor resource saat development
htop
# Jalankan build yang lama, tutup terminal tetap jalan
nohup npm run build > build.log 2>&1 &