Showing posts with label states. Show all posts
Showing posts with label states. Show all posts

Friday, 30 May 2025

Process State in Linux


What is a Process in Linux?
     A process is an instance of a running program that has its own memory, execution state, and system resources. The Linux operating system uses the process scheduler to manage multiple processes, ensuring fair execution and resource allocation.

Understanding this process definition will help in system performance monitoring (identifying CPU-heavy tasks), debugging issues (checking for unresponsive or zombie processes), optimizing resource allocation (ensuring efficient memory usage).

Every process in Linux goes through different states, which can be viewed using the ps command:
ps aux
(OR)
ps -eo pid,state,cmd

Where pid is the process identifier

Different Process states are
  1. Running (`R`)
  2. Sleeping (`S` or `D`)
    • Interruptible Sleep (`S`)
    • Uninterruptible Sleep (`D`)
  3. Stopped (`T`)
  4. Zombie (`Z`)
  5. Dead (`X`)
Now, Let’s explore about these process states.

Running (`R`)

The process is actively executing or is ready to execute.
If the CPU is available, the process moves forward.
Processes in this state are visible in the task manager or top command.

Sleeping (`S` or `D`)

There are two types of sleeping states:
  • Interruptible Sleep (`S`)
            The process is waiting for an event or resource (such as user input or a network response).
            It can be woken up if the necessary resource becomes available.
  • Uninterruptible Sleep (`D`)
            The process is waiting for I/O operations (like disk read/write).
            It cannot be interrupted by signals until it finishes the I/O task.

Stopped (`T`)

    The process is paused and does not execute. A user can stop a process using 
Ctrl + Z 
(OR)
kill -STOP <pid>

It can be resumed using,
fg 
(OR)
 kill -CONT <pid>

Zombie (`Z`)

    The process has completed execution, but its parent process has not acknowledged its termination.
The system still holds the process ID (PID) but frees its resources. Zombie processes do not consume CPU or memory, but too many zombies indicate system inefficiency.

To list all zombie processes, we can use below command
ps aux | awk '{if ($8=="Z") print $2,$11}'
(OR)
ps -eo pid,ppid,state,cmd | awk '{if ($3=="Z") print $0}'

Dead (`X`)

    The process has fully terminated, and its ID is released. It no longer exists in the process table.

Examples and its explanation on which process state causes what on the system. 

    If a process is stuck in uninterruptible sleep (`D`), it may be waiting on slow disk operations.
Too many zombie processes (`Z`) might indicate improper child process management.

Managing Process States in Linux

Process can be managed with following commands in Linux, 

Terminate a process
kill -9 <pid>

Resume a stopped process 
kill -CONT <pid>



Understanding basics and organized work culture is key to efficient Troubleshooting!!!
Happy Troubleshooting!!!