I'm trying to measure the memory of a process that I call via the command line (i.e., I want to find out much CPU/RAM the process takes). Is there any command that I can add to the command calling the process that will achieve this?
Example of firefox. Find the PID:
ps -aux | grep -i firefox
Then you can use
top -p pid:
top -p 3845
You can also use
ps command, firefox pid is 3845
$ ps -p 3845 -o %cpu,%mem,cmd
%CPU %MEM CMD
11.1 3.7 /usr/lib/firefox/firefox
I am not satisfied with the above mentioned commands, and I found something that you should be interested in.
sudo apt-get install monit -y
Edit the Monit Config File
sudo nano /etc/monit/monitrc
Enable the web interface
set httpd port 2812
# use address localhost # only accept connection from localhost
allow localhost # allow localhost to connect to the server and
# allow 192.168.1.0/255.255.255.0 # allow any host on 192.168.1.* subnet
allow admin:monit # require user 'admin' with password 'monit'
Checking process every 2 secons
## Start Monit in the background (run as a daemon):
set daemon 120 to only 2 # check process every 2 sec
In the end copy paste the following command
check process firefox
Save and Exit
Check your syntax
Fix any problems found – it’s not too tough to figure out what’s going on.
sudo monit -t
Start (or restart) Monit
sudo service monit start
Visit the web interface
http://localhost:2812 if you’re running Ubuntu Desktop, or
Sign in with your
Click on Firefox
- How to Install Monit
- Monit: check process without pidfile
- Monit FAQ
- Real-world Monit configuration examples
- How can I get the CPU usage and memory usage of a single process on Linux (Ubuntu)?
You can also use these links for help and modify your process.
You can also configure an alert if firefox uses more than 250 MB of ram
check process firefox
if totalmem > 250.0 MB for 1 cycles then alert
You can also execute command
if totalmem > 250.0 MB for 1 cycles then exec "path to script"
You can also make a script of Notify-Send
/usr/bin/notify-send firefox "More Than 250 MB OF RAM"
The GNU time command can print the maximum resident set size used by a command.
You do have to make sure to use the
/usr/bin/time command, not the Bash Shell built-in
For an example to measure the firefox command:
/usr/bin/time --format="Size:%MK Cpu:%P Elapsed:%e" firefox &
After using firefox a while, I close it out to get the report:
Size:168644K Cpu:30% Elapsed:226.34
While it is possible to use the TIME environment variable to set the default format I've found it more flexible to set up individual bash aliases with specific formats. So for the above I would add to my
alias ztm="/usr/bin/time --format=\"Size:%MK Cpu:%P Elapsed:%e\""
So that from my Bash Shell I could just enter:
ztm firefox &