The Linux kill Command: Knowing When and How to Terminate

The Linux kill Command: Knowing When and How to Terminate

A runaway process was consuming 100% CPU. I tried Ctrl+C—nothing. The server was unresponsive. My senior admin said "just use kill." Three keystrokes later, the system was fine.

I learned: kill is your emergency brake. Learn to use it properly.


Understanding kill

Default: SIGTERM

kill 12345

Sends SIGTERM (15) - polite request to terminate.

Force: SIGKILL

kill -9 12345

Sends SIGKILL (9) - instant termination.

Other signals

kill -HUP 12345    # Reload config
kill -STOP 12345  # Pause (not terminate)
kill -CONT 12345  # Resume

Process States and kill

Zombie processes

Can't kill what's already dead:

ps aux | grep Z

Zombies show as Z. Parent must reap or be killed.

Uninterruptible processes

Waiting on I/O:

ps aux | grep D

D = uninterruptible sleep. Wait for I/O or reboot.


kill Commands That Work

Find PID first

ps aux | grep nginx
kill $(pgrep nginx)

Better: use pgrep directly.

Kill multiple PIDs

kill 1234 5678 9012

Space-separated list.

Kill all by process name

pkill nginx

By name instead of PID.

Kill all by user

pkill -U www-data

All processes for user.

Kill by pattern

kill -9 $(pgrep -f "python.*script")

Kill Python scripts.

Graceful restart

kill -HUP $(cat /var/run/nginx.pid)

HUP triggers config reload.


Signal Reference

Signal Number Use
SIGHUP 1 Reload config
SIGINT 2 Ctrl+C (interrupt)
SIGQUIT 3 Core dump
SIGKILL 9 Force kill
SIGTERM 15 Polite termination
SIGSTOP 19 Pause
SIGCONT 18 Resume

When to Use Each

SIGTERM (15) - First Choice

kill 12345

Allows cleanup - close files, save state.

SIGKILL (9) - Last Resort

kill -9 12345

When SIGTERM won't work. No cleanup!

SIGHUP (1) - Reload

kill -HUP 12345

For daemons - reloads config.


The kill Command Builder

Building kill commands—the kill Command Builder:

  • Signal selector visually
  • PID finder built-in
  • Safety warnings

Safety Rules

  1. Try SIGTERM first — graceful termination.

  2. SIGKILL is irreversible — no cleanup.

  3. Check what's running — don't kill system processes.

  4. PID 1 is init — killing it reboots.

  5. Check dependencies — killing DB may break apps.


Lessons Learned

  1. pkill is easier — by name instead of PID.

  2. Check before killing — ps aux | grep.

  3. SIGTERM is default — kill = kill -15.

  4. Root can kill anything — but be careful.

  5. Zombies need parent — kill parent's PID.


Conclusion: kill Is Your Friend

kill is essential for system administration. Use it wisely.

The kill Command Builder makes selecting signals easy.


Further Reading