Stop Killing Processes Wrong — Use Signals Properly
kill -9 is a last resort, not the first move — it can corrupt data and leave orphaned processes.
What
Linux processes respond to signals. SIGTERM (kill or kill -15) asks a process to shut down gracefully — it can save data, close connections, and clean up. SIGKILL (kill -9) terminates immediately with no cleanup. Always try SIGTERM first and only use SIGKILL when a process is truly stuck.
Why It Matters
When you kill -9 a database, it can't flush writes to disk — data corruption. When you kill -9 a web server, it can't finish serving current requests or close connections — clients see errors. Graceful shutdown exists for a reason.
Example
# Find the process
ps aux | grep nginx
# Step 1: Ask nicely (SIGTERM)
kill 1234
# or explicitly:
kill -15 1234
# Step 2: Wait a few seconds, check if it stopped
ps -p 1234
# Step 3: Only if still running, force kill
kill -9 1234
# Kill all processes by name
pkill nginx # SIGTERM
pkill -9 nginx # SIGKILL (last resort)Common Mistake
Jumping straight to kill -9 every time. This prevents graceful shutdown, can corrupt data, leave lock files behind, and leave orphaned child processes.
Quick Fix
Always try kill (SIGTERM) first. Wait 5-10 seconds. If the process is still running, THEN use kill -9. This gives apps a chance to clean up properly.
Key Takeaways
- 1kill = SIGTERM = 'please shut down'
- 2kill -9 = SIGKILL = 'die immediately'
- 3SIGTERM lets the app save data & clean up
- 4SIGKILL = no cleanup, possible corruption
- 5Always SIGTERM first, SIGKILL as last resort
Was this tip helpful?
Help us improve the DevOpsPath daily collection