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.
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.
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 CMD
81775 pts/0 00:00:00 bash
90379 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 Comment SIGHUP 1 Term Hangup detected on controlling terminal or death of controlling process SIGINT 2 Term Interrupt from keyboard SIGQUIT 3 Core Quit from keyboard SIGILL 4 Core Illegal Instruction SIGABRT 6 Core Abort signal from abort SIGFPE 8 Core Floating-point exception SIGKILL 9 Term Kill signal SIGSEGV 11 Core Invalid memory reference SIGPIPE 13 Term Broken pipe: write to pipe with no readers; SIGALRM 14 Term Timer signal from alarm SIGTERM 15 Term Termination signal SIGUSR1 30,10,16 Term User-defined signal 1 SIGUSR2 31,12,17 Term User-defined signal 2 SIGCHLD 20,17,18 Ign Child stopped or terminated SIGCONT 19,18,25 Cont Continue if stopped SIGSTOP 17,19,23 Stop Stop process SIGTSTP 18,20,24 Stop Stop typed at terminal SIGTTIN 21,21,26 Stop Terminal input for background process SIGTTOU 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.