我正在尝试测量通过命令行调用的进程的内存(即,我想找出该进程占用的 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
有关的:
- 如何安装Monit
- Monit:检查没有 pidfile 的进程
- Monit 常见问题解答
- 真实世界的 Monit 配置示例
- 如何获取 Linux(Ubuntu)上单个进程的 CPU 使用率和内存使用率?
您还可以使用这些链接获取帮助并修改您的流程。
更新
您还可以配置 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 &
参考:
man time
info time
man 2 getrusage
# - 显示 Linux 上可用的措施,其他措施显示为零