top

top

我正在尝试测量通过命令行调用的进程的内存(即,我想找出该进程占用的 CPU/RAM 数量)。是否有任何命令可以添加到调用进程的命令中以实现此目的?

答案1

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

我对上面提到的命令并不满意,并且我发现了一些你应该感兴趣的东西。

监控

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 秒检查一次进程

## 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 桌面版,或者

admin:monit使用您的凭证登录

在此处输入图片描述

点击 Firefox

在此处输入图片描述

有关的:

您还可以使用这些链接获取帮助并修改您的流程。


更新

您还可以配置 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"

在此处输入图片描述

答案2

GNU time 命令可以打印命令使用的最大驻留集大小。您必须确保使用该/usr/bin/time命令,而不是 Bash Shell 内置time关键字。

举个例子来测量火狐命令:

/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 &

参考:

相关内容