Top Process Management Commands in Linux?

When you run any application or program on a Linux server, it creates an instance called process. In this article we'll discuss following process management commands one by one. These are TOP, HTOP, PS, PSTREE, PGREP, NICE, RENICE , and KILL command.

Each process uses server resources like memory, storage and computing resources to finish the job associated with each process.

Every time a new process is started it is assigned an identification number (ID) which is called process ID or PID for short.

As as Linux Administrator or user, you’ll run into situations where you may need to manage all these processes. That’s where the Linux operating system provides a lot of tools to manage running processes.

Here are the few scenarios where you’ll run into.

  • List top running processes and server resource snapshot
  • To view all the running processes on Linux
  • To see resources used by each process
  • Change process priorities and resources available to processes.
  • Find specific process and change state of that process
  • Killing running or run away processes

You can use Linux process management commands or tools to handle all the above situations.

top command in Linux or Ubuntu

The most easiest and essential command for every Linux user is TOP. As the name indicates it displays overall view of the Linux system including TOP running processes.

top command in Linux

You can see server statistics like uptime, load averages and running processes states in the first few lines.

It also shows top running processes with their process identification number(PID), process user, Priority, nice value, %CPU and %memory consumed by the process etc.

htop command in Linux

Htop is similar to TOP but more advanced with an interactive process viewer. It shows CPU,Memory and SWAP resources as text graphs.

htop command in Linux

Comparison between htop and classic top

  • In htop you can scroll the list vertically and horizontally to see all processes and full command lines.
  • In top you are subject to a delay for each unassigned key you press (especially annoying when multi-key escape sequences are triggered by accident).
  • htop starts faster (top seems to collect data for a while before displaying anything).
  • In htop you don't need to type the process number to kill a process, in top you do.
  • In htop you don't need to type the process number or the priority value to renice a process, in top you do.
  • In htop you can kill multiple processes at once.
  • top is older, hence, more tested.

ps command to List Processes

"ps" command is the most basic command to see all the running processes on the system. It outputs all running processes of specific user or all users.

To see running processes of existing user:

ps

The output will be similar to this:

PID TTY TIME CMD81775 pts/0 00:00:00 bash90379 pts/0 00:00:00 ps

To see running processes of all users:

ps -aux

To view specific service/user running processes:

ps -ef | grep httpd

pstree command in Linux

pstree” command will be useful if you want to see running processes hierarchically arranged in tree format.

It’s easy to understand parent and child processes using this command. It is used as a more visual alternative to the ps command. The root of the tree is either init or the process with the given pid.

nice command to change process priorities

nice command is used to assign particular priority, thus giving the process more or less CPU time than other processes.

Process priority values range from -20 to 19. Lower the nice value, higher the priority. The default nice value is 0.

It means -20 has highest priority over 15. In order use higher priorities (negative nice values) administrator privileges are required.

When you use the command nice you start a new process and assign it priority (nice) value at the same time.

nice -3 top

The above nice command starts the TOP command or process with nice value of -3.

renice command in Linux

"renice" command is used to change priorities of already running processes. In the above nice example we started process TOP with -3 priority. Let’s change that priority using renice.

renice -5 -p 91524

Command syntax:

renice -n -p - PID

pgrep command

In Linux each process is assigned a process ID, or PID. This is how the operating system identifies and keeps track of processes.

"pgrep" is the useful command to get list of PID’s for a particular service or program.

For example: If you want to see list of all PID’s of apache web service or httpd.

pgrep httpd

You will get output with PID’s of httpd service.

kill command

Every process in Linux responds to signals. Signals are commands or instructions to processes to terminate or modify their behavior.

The default way to send signals to processes is through Kill command.

The very common kill command syntax are:

kill <pid>

This sends the TERM signal to the process. The TERM signal tells the process to please terminate. This allows the program to perform clean-up operations and exit smoothly.

If the program is misbehaving and does not exit when given the TERM signal, we can escalate the signal by passing the KILL signal:

kill -9 <pid>

You can send “-KILL” instead of "-9"

killall -9 - httpd - all instances having the same process name

Here are the SIGNAL codes used by Kill command.

Signal Value Action CommentSIGHUP 1 Term Hangup detected on controlling terminalor death of controlling processSIGINT 2 Term Interrupt from keyboardSIGQUIT 3 Core Quit from keyboardSIGILL 4 Core Illegal InstructionSIGABRT 6 Core Abort signal from abortSIGFPE 8 Core Floating-point exceptionSIGKILL 9 Term Kill signalSIGSEGV 11 Core Invalid memory referenceSIGPIPE 13 Term Broken pipe: write to pipe with noreaders;SIGALRM 14 Term Timer signal from alarmSIGTERM 15 Term Termination signalSIGUSR1 30,10,16 Term User-defined signal 1SIGUSR2 31,12,17 Term User-defined signal 2SIGCHLD 20,17,18 Ign Child stopped or terminatedSIGCONT 19,18,25 Cont Continue if stoppedSIGSTOP 17,19,23 Stop Stop processSIGTSTP 18,20,24 Stop Stop typed at terminalSIGTTIN 21,21,26 Stop Terminal input for background processSIGTTOU 22,22,27 Stop Terminal output for background process

If you don’t know the process ID, you can use pkill command which works by using process name instead of PID’s.

pkill -9 firefox

The above command will kill firefox program by sending TERM signal.

Conclusion

Linux process management is an essential task for each and every Linux administrator. All the above tools allows you to manage system resources efficiently. You can dig deep by using all the options available with each command.

Initially, It could be a little intimidating. Once you get to know it, it’s not that hard.

All the above mentioned process management commands should work fine in all Linux flavors like CentOS, RedHat, Ubuntu and Unix systems.