I’m looking for somthing like top is to CPU usage. Is there a command line argument for top that does this? Currently, my memory is so full that even ‘man top’ fails with out of memory 🙂
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
From inside top you can try the following:
- Press SHIFT+f
- Press the Letter corresponding to %MEM
- Press ENTER
You might also try:
$ ps -eo pmem,pcpu,vsize,pid,cmd | sort -k 1 -nr | head -5
This will give the top 5 processes by memory usage.
Method 2
If you have it installed I like htop once launching it you can press f6, down arrow (to MEM%), enter to sort by memory.
Method 3
In Solaris the command you would need is:
prstat -a -s size
This will list all processes in order of descending process image size. Note that the latter is based on memory committed to the process by the OS, not its resident physical memory usage.
There are supposedly versions of “top” available for Solaris, but these are not part of the standard installation.
Method 4
Once top starts, press F to switch to the sort field screen. Choose one of the fields listed by pressing the key listed on the left; you probably want N for MEM%
Method 5
This command will identify the top memory consuming processes:
ps -A --sort -rss -o pid,pmem:40,cmd:500 | head -n 6 | tr -s " " ";z"
Method 6
One nice alternative to top is htop. Check it, it is much more user friendly than regular top.
Method 7
Globally:
It’s always recommended to use a log analyser tool for logging history logs such as Splunk, ELK etc. So that using query language you can easily get the PIDs and its usage by CPU & memory.
AT SERVER/OS LEVEL:
From inside top you can try the following:
Press SHIFT+M ---> This will give you a process which takes more memory in descending order.
You might also try:
$ ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head -10
This will give the top 10 processes by memory usage.
Also you can use vmstat utility to find the RAM usage at same time not for history.
Method 8
It can be achieved in multiple ways,
My favourite one is:
The PS way:
-
[[email protected] ~]$ ps -eo pid,cmd,%cpu,%mem --sort=-%memWhere,
-e: to select all process-o: to apply to the output formatpid,cmd,%cpu,%mem: Output format in exact order. Here,pcpuandpmemcan be used instead of%cpuand%mem.- But sadly (don’t know why) it doesn’t work on some machine (Oracle Linux) and some older machine. You can use the following similar alternatives.
-
[[email protected] ~]$ ps aux --sort '-%mem' --cols 120 | headWhere,
--cols 100: to specify column width of the output as sometimescmdgets very long. This is not necessary if you don’t want curtailed commands with arguments.aux: to see every process on the system using BSD syntax
-
[[email protected] ~]$ ps -eo pid,cmd,%cpu,%mem --sort -rssWhere,
-rss: resident set size, the non-swapped physical memory that a task has used
-
[[email protected] ~]$ ps aux --sort -rss --cols 120
The top way:
[[email protected] ~]$ top -b -o +%MEM
Where,
-b: to usetopasbatchmode.-o: to override sort fieldname followed by a fieldname%MEM
And you can always use head and/or tail to control the output.
Method 9
You can try ps aux --sort -rss | head or ps aux | sort -nk +4 | tail
Method 10
This alias works nice for me in a bash shell:
alias mtop='{ echo "Mem% PID Binary"; ps -A --sort -rss -o pid,pmem:40,cmd:500 | tail -n +2 | head -n 10 | tr -s " " | sed -r "s/^s*([0-9]+) ([0-9.]+) ([a-zA-Z/]+).*$/2 1 3/"; } | column -t -s " "'
This will print out a neat list of processes sorted by memory consumption:
-=# mtop Mem% PID Binary 22.9 528235 /opt/intellij 5.4 906569 /usr/share/elasticsearch/jdk/bin/java 3.7 544512 /usr/bin/node 2.2 986170 /usr/lib/firefox/firefox 1.9 795138 /usr/bin/node 1.1 795188 /usr/bin/node 1.0 747819 /usr/lib/jvm/java 0.9 599 /usr/bin/pipewire 0.7 414 /usr/lib/Xorg 0.7 544536 /usr/bin/node
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0