如何测量命令使用了多少CPU和RAM?
我正在尝试测量我通过命令行调用的进程的内存(即,我想找出该进程需要的大量CPU / RAM)。 是否有任何命令可以添加到命令调用将实现此目的的进程?
top
firefox的例子。 找到PID:
ps -aux | grep -i firefox
然后你可以使用top -p pid
:
top -p 3845
ps
你也可以使用ps
命令, firefox pid是3845
$ ps -p 3845 -o %cpu,%mem,cmd %CPU %MEM CMD 11.1 3.7 /usr/lib/firefox/firefox
我对上面提到的命令不满意,我找到了你应该感兴趣的东西。
monit的
sudo apt-get install monit -y
编辑Monit配置文件
sudo nano /etc/monit/monitrc
启用Web界面
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'
每2个secons检查一次
## Start Monit in the background (run as a daemon): set daemon 120 to only 2 # check process every 2 sec
示例Firefox
最后复制粘贴以下命令
check process firefox matching "firefox"
保存并退出
检查你的语法
解决发现的任何问题 – 弄清楚发生了什么并不是太难。
sudo monit -t
启动(或重启)Monit
sudo service monit start
访问Web界面
http://localhost:2812
如果您正在运行Ubuntu Desktop,或者
使用您的admin:monit
凭据登录
点击Firefox
有关:
- 如何安装Monit
- Monit:检查没有pidfile的进程
- Monit FAQ
- 真实世界的Monit配置示例
- 如何在Linux(Ubuntu)上获取单个进程的CPU使用率和内存使用量?
您还可以使用这些链接获取帮助并修改您的流程。
UPDATE
如果firefox使用超过250 MB的ram,您还可以配置警报
check process firefox matching "firefox" if totalmem > 250.0 MB for 1 cycles then alert
您也可以执行命令
if totalmem > 250.0 MB for 1 cycles then exec "path to script"
您还可以制作通知发送脚本
/usr/bin/notify-send firefox "More Than 250 MB OF RAM"
GNU time命令可以打印命令使用的最大驻留集大小。 您必须确保使用/usr/bin/time
命令,而不是Bash Shell内置time
关键字。
有关测量firefox命令的示例:
/usr/bin/time --format="Size:%MK Cpu:%P Elapsed:%e" firefox &
使用firefox一段时间后,我将其关闭以获取报告:
Size:168644K Cpu:30% Elapsed:226.34
虽然可以使用TIME环境变量来设置默认格式,但我发现设置具有特定格式的单个bash别名更加灵活。 所以对于上面我会添加到我的~/.bash_aliases
文件:
alias ztm="/usr/bin/time --format=\"Size:%MK Cpu:%P Elapsed:%e\""
所以从我的Bash Shell我可以输入:
ztm firefox &
参考文献:
-
man time
-
info time
-
man 2 getrusage
# – 显示Linux上可用的哪些度量,其他度量为零