I remember once reading that efficient system administrators are lazy people. The reason is not that they’re not doing their job or wasting their time – it is mostly because they have automated a good deal of their routine tasks. Thus, they don’t have to babysit their servers and can use their time to learn new technologies and always stay at the top of their game.
Part of automating your tasks, is learning how to get a script do what you would have to do yourself otherwise. Continually adding commands to your own knowledge base is just as important.
For that reason, in this article we will share a trick to find out, which processes are consuming lots of Memory and CPU utilization in Linux.
That said, let’s dive in and get started.
Check Top Processes sorted by RAM or CPU Usage in Linux
The following command will show the list of top processes ordered by RAM and CPU use in descendant form (remove the pipeline and head if you want to see the full list):
# ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head
Sample Output
PID PPID CMD %MEM %CPU 2591 2113 /usr/lib/firefox/firefox 7.3 43.5 2549 2520 /usr/lib/virtualbox/Virtual 3.4 8.2 2288 1 /home/gacanepa/.dropbox-dis 1.4 0.3 1889 1543 c:\TeamViewer\TeamViewer.ex 1.0 0.2 2113 1801 /usr/bin/cinnamon 0.9 3.5 2254 2252 python /usr/bin/linuxmint/m 0.3 0.0 2245 1801 nautilus -n 0.3 0.1 1645 1595 /usr/bin/X :0 -audit 0 -aut 0.3 2.5
Brief explanation of above options used in above command.
The -o
(or –format) option of ps allows you to specify the output format. A favorite of mine is to show the processes’ PIDs (pid), PPIDs (pid), the name of the executable file associated with the process (cmd), and the RAM and CPU utilization (%mem
and %cpu
, respectively).
Additionally, I use --sort
to sort by either %mem
or %cpu
. By default, the output will be sorted in ascendant form, but personally I prefer to reverse that order by adding a minus sign in front of the sort criteria.
To add other fields to the output, or change the sort criteria, refer to the OUTPUT FORMAT CONTROL section in the man page of ps
command.
Don’t Miss: Find Top 15 Processes by Memory Usage with ‘top’ in Batch Mode
Don’t Miss: Find top 10 Directories Disk Size in Linux
Summary
Monitoring process is one of the numerous tasks of a Linux server system administrator, in this tip, we looked at how you list processes on your system and sort them according to RAM and CPU use in descendant form using the ps utility.
How do I list down the usernames that are consuming high memory/CPU and remove the duplicate names? The names should be separated by
;
.You can use this command:
Maybe I am doing something wrong. It seems to be sorting the highest usage to the bottom.
That is because you should use
--sort=%mem
without(-)
before%mem
.