Results 1 to 4 of 4
-
04-11-2013, 09:23 PM #1(formerly WhichGunDotCom)
- Join Date
- Jun 2011
- Location
- Woodbridge, NJ
- Posts
- 840
memtop: bash script to find which processes are using the most memory
Here is a little script I wrote that will show processes with the highest memory usage in human-readable form (sizes in KB/MB/GB), sorted from largest to smallest.
Code:#!/bin/bash # memtop v1.0 Oct 16 2012 # Author: Justin L. Franks (justin.franks@gmail.com) # http://justinfranks.com # memtop shows processes with the highest memory usage in human-readable form # (sizes in KB/MB/GB), sorted from largest to smallest. # # By default, memtop shows all processes, but this can be changed via the "-n" # parameter. # # For example, to show the top 20 processes by memory usage: # # memtop -n 20 # Copyright (c) 2012 Justin L. Franks # # This program is free software; you can redistribute it and/or modify it under # the terms of the GNU General Public License as published by the Free Software # Foundation; either version 2 of the License, or (at your option) any later # version. # # This program is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. # # The GNU General Public License is available at: # http://www.gnu.org/copyleft/gpl.html while getopts n: option do case "${option}" in n) COUNT=${OPTARG} ;; esac done printf "%$(tput cols)s\n" | tr ' ' '='; printf "Memory%-6sPID%-5sUser%-7sCommand\n"; printf "%$(tput cols)s\n" | tr ' ' '-'; ps -eo size,pid,user,command | sed "1 d" | sort -rn | if [[ -n $COUNT ]]; then head -n $COUNT; else cat; fi | \ awk ' { units[1024**2] = "GB"; units[1024] = "MB"; units[1] = "KB"; for (x = 1024**3; x >= 1; x /= 1024) { if ($1 >= x) { if (x < 1024) { printf ("%-6.0f %-4s ", $1/x, units[x]); } else { printf ("%-6.2f %-4s ", $1/x, units[x]); } break; } } } { printf ("%-7s %-10s ", $2, $3); } { for (x = 4; x <= NF; x++) { printf ("%s ", $x); } print ("\r"); } '; printf "%$(tput cols)s\n"|tr ' ' '=';
PHP Code:================================================================================================================================================================================================================================================================================
Memory PID User Command
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
315.90 MB 9322 mysql /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --log-error=/var/log/mysql/mysql-error.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock
67.32 MB 24422 root /usr/bin/python /usr/bin/fail2ban-server -b -s /var/run/fail2ban/fail2ban.sock
54.06 MB 1707 nobody /usr/bin/memcached -v -m 64 -p 11211 -u nobody -l 127.0.0.1
30.41 MB 1433 root /usr/sbin/rsyslogd -c4
9.18 MB 24318 root /usr/bin/monitorix -c /etc/monitorix.conf -p /var/run/monitorix.pid
================================================================================================================================================================================================================================================================================
-
04-12-2013, 02:38 AM #2(formerly WhichGunDotCom)
- Join Date
- Jun 2011
- Location
- Woodbridge, NJ
- Posts
- 840
(reserved for more info and a download link)
-
04-12-2013, 03:03 AM #3(formerly WhichGunDotCom)
- Join Date
- Jun 2011
- Location
- Woodbridge, NJ
- Posts
- 840
You can download this script at:
http://justinfranks.com/code/scripts/memtop
To install, copy it to /usr/local/bin, and set it as executable (chmod 755 memtop).
The you can run it from the command line like normal.
To see all processes:
memtop
To see the top 10 processes:
memtop -n 10
To see the top 25 processes:
memtop -n 25
-
04-12-2013, 04:25 AM #4(formerly WhichGunDotCom)
- Join Date
- Jun 2011
- Location
- Woodbridge, NJ
- Posts
- 840
Please ignore this thread; it will soon be deleted.
An updated thread with additional information about memtop can be found at http://www.webhostingtalk.com/showthread.php?p=8641657.Last edited by VectorVPS; 04-12-2013 at 04:29 AM.
Similar Threads
-
bash - running multiple processes
By ti_nhatrang in forum Programming DiscussionReplies: 6Last Post: 07-14-2012, 08:56 PM -
Bash script error (No such file or directory/find)
By ZKuJoe in forum Programming DiscussionReplies: 6Last Post: 07-05-2009, 12:39 PM -
Bash script to monitor 3 or more processes via cron ?
By WebHostDog in forum Hosting Security and TechnologyReplies: 6Last Post: 01-21-2008, 08:02 PM -
[SH/Bash] - Script to find all accounts by reseller (cpanel)
By NixMaster in forum Programming DiscussionReplies: 5Last Post: 08-03-2007, 09:10 PM -
bash comman/bash script
By getbusy in forum Hosting Security and TechnologyReplies: 2Last Post: 12-25-2004, 06:50 PM