Table of Contents
ToggleMost tutorials mention process states.
Very few explain them in a way that helps you debug real servers.
This guide will take you from:
๐ โI see letters like R, S, D, Zโ โ to ๐ โI can diagnose server issues based on process statesโ

What Are Process States?
Every process in Linux is always in a state.
This state tells you what the process is currently doing.
You can see it using:
ps aux
Look at the STAT column.
The Core Process States
| State | Meaning |
|---|---|
| R | Running |
| S | Sleeping |
| D | Uninterruptible sleep (I/O wait) |
| Z | Zombie |
| T | Stopped |
R State (Running)
This means:
- Process is actively using CPU
- Or ready to run
Reality
Even high CPU systems often have very few R processes.
S State (Sleeping)
This is the most common state.
It means:
- Process is waiting for something
- Usually normal behavior
Example:
- Web server waiting for request
๐ This is NOT a problem
D State (Uninterruptible Sleep) โ ๏ธ
This is the most important state to understand.
It means:
- Process is waiting on I/O (disk, network, etc.)
- Cannot be interrupted
Critical Behavior
๐ You CANNOT kill D-state processes
Even:
kill -9 PID
will NOT work.
What Causes D State?
- Disk failure
- Slow storage
- NFS issues
- RAID problems
- Network storage delays
Real Production Symptom
- High load average
- Low CPU usage
๐ This is classic D-state situation
Z State (Zombie Processes)
Zombie = dead process that still exists in process table
It happens when:
- Child process finishes
- Parent does NOT collect exit status
How to Detect Zombies
ps aux | grep Z
How to Fix
- Restart parent process
- Or restart service
T State (Stopped)
Process is paused.
Usually due to:
kill -STOP PID
Resume with:
kill -CONT PID
Advanced: STAT Column Variations
You may see:
- Ss โ sleeping + session leader
- Sl โ sleeping + multithreaded
- R+ โ foreground process
Real Debugging Workflow (Critical Section)
Step 1: Check process states
ps -eo pid,stat,cmd | grep D
Step 2: Correlate with load
- High load + many D โ I/O issue
Step 3: Investigate further
iostat
lsof
Real Server Scenarios
Scenario 1: Server Slow but CPU is Low
Cause:
๐ D state processes
Scenario 2: High Load Average
Cause:
๐ Blocked processes (D state)
Scenario 3: Zombie Accumulation
Cause:
๐ Broken parent process
Common Mistakes
Trying to kill D state
Impossible โ root cause must be fixed
Ignoring STAT column
This is often more important than CPU usage
When This Matters in Production
Understanding process states helps when:
- Server is slow but CPU looks normal
- Load is high without reason
- Services are stuck
On production systems like:
- VPS
- Dedicated servers
- Cloud servers
๐ Explore infrastructure:
Related Linux Guides
- How to Check Running Processes in Linux (ps, top, kill Explained)
- How to Monitor Processes in Linux with htop (Advanced Usage)
- How to Check Server Load in Linux (Load Average Explained)
Final Takeaway
Process states are not just labels.
They are signals.
An expert does not just see CPU usage.
They read the state of the system through process behavior.



