In Linux, a background process is nothing but process running independently of the shell. One can leave the terminal window and, but process executes in the background without any interaction from users. For example, Apache or Nginx web server always runs in the background to serve you images and dynamic content. This page shows how to list all such process running in the background in Linux.
How to find out what processes are running in the background
- You can use the ps command to list all background process in Linux. Other Linux commands to obtain what processes are running in the background on Linux.
- top command – Display your Linux server’s resource usage and see the processes that are eating up most system resources such as memory, CPU, disk and more.
- htop command – Just like a top command but with an improved user interface.
Let us see both traditional command and modern commands examples that one can use to manage running processes in Linux.
How can I run a Linux process in the background?
To run your process or command/shell script in the background, include an & (an ampersand) at the end of the command/shell script you use to run the job. For example:
sleep 10000 &
List your background processes
Run the jobs command:
+ Stopped vim - Running sleep 10000 &
To stop the foreground process press CTRL+z. One can refers to the background process or stopped process by number. For example, vim is stopped and has 1 as number, so run the bg command to restart a stopped background process:
One can bring a background process to the foreground such as sleep command using the fg command:
Finally, kill a running process named “sleep 10000” using the kill command:
Linux background processes list command
Open the terminal application and issue the following ps command command to show all running process on the system including those running in the background:
$ sudo ps -aux | less
# ps aux | more
Understanding ps command outputs
The first column shows the user name who started the foreground or background processes on Linux system. For example, the daemon user started the atd process. The process name itself displayed in the last column. The STAT coloum gives us the state of a Linux process:
|Process STATE code||Description|
|D||uninterruptible sleep (usually IO)|
|I||Idle kernel thread|
|R||running or runnable (on run queue)|
|S||interruptible sleep (waiting for an event to complete)|
|T||stopped by job control signal|
|t||stopped by debugger during the tracing|
|W||paging (not valid since the 2.6.xx kernel)|
|X||dead (should never be seen)|
|Z||defunct (“zombie”) process, terminated but not reaped by its parent|
Typically process in “interruptible sleep” are running in the background and shows a “S” on processes STAT column. The interruptible sleep means the process can be terminated or killed with the help of kill command. On the other hand, processes in a “D” or uninterruptible sleep state are usually waiting on I/O. Therefore, you cannot kill “D” state processes as they are uninterruptible. Additional characters may be displayed as follows too:
|Process STATE code||Description|
|<||high-priority (not nice to other users)|
|N||low-priority (nice to other users)|
|L||has pages locked into memory (for real-time and custom IO)|
|s||is a session leader|
|l||is multi-threaded (using CLONE_THREAD, like NPTL pthreads do)|
|+||is in the foreground process group|
Is my Linux process running in the foreground or background?
Based upon the above tables, one can determine if Linux process in background or foreground or running and so on.
|ps STATE code||Foreground or Background?|
|/sbin/init||Ss||Background process (interruptible sleep and a session leader)|
|/usr/sbin/rsyslogd -n||Ssl||Background process (interruptible sleep+a session leader and multi-threaded app)|
|/sbin/agetty --noclear||Ss+||Background process (interruptible sleep and a session leader and is in foreground group)|
|ps aux||R+||Running foreground process|
Use the following command to list Linux processes along with pid, user name, stat as follows:
ps -eo pid,user,stat,comm
You can combine ps with grep command command as follows:
ps -eo pid,user,stat,comm | grep nginx
How do I list only running processes on Linux?
List all processes on this current terminal
Display Linux processes without controlling ttys
top and htop commands
The top command displays Linux processes in real-time. Run it as follows and look for STAT (s) column.
Similarly one can use an enhanced version of the top like atop or htop.
This page explained various Linux commands to find out what processes are running in the background. You learned how to use the ps command to get a snapshot of the current Linux processes and use various STATS to interpret the results.