31 个版本
0.18.5 | 2024年6月26日 |
---|---|
0.18.4 | 2023年12月3日 |
0.18.3 | 2023年8月20日 |
0.18.2 | 2023年2月18日 |
0.11.0 | 2020年7月19日 |
#121 in 命令行工具
215KB
5.5K SLoC
Oprs
Oprs 是 Linux 的进程监控器。其名称是 Observe Process ReSources 的缩写。
它基于 procfs。
功能
- 监控内存、执行时间、输入/输出、页面错误、文件描述符、映射内存区域。
- 可选的最小值和最大值。
- 通过 PID、PID 文件或名称选择进程。
- 以纯文本或终端 UI 显示。
- 以 CSV 或 RRDtool 格式导出。
示例
要获取 PID (firefox) 的进程内存大小、已用时间和页面错误,PID 文件 (pulseaudio) 的进程以及名称 (bash) 的进程,运行
oprs -F human -p 6913 -f pulseaudio.pid -n dhclient mem:vm mem:rss+max time:elapsed fault:major
没有参数时,命令将打印可用的指标。
默认情况下,除非添加了 -raw,否则打印原始数据:mem:rss-raw+min+max。
指标
没有参数时,命令将打印可用的指标列表。
允许有限模式的指标:前缀 mem:*, 后缀 :call,两者 io::count。
指标后面可以跟单位。例如:mem:vm/gi
可用单位
- ki kibi
- mi mebi
- gi gibi
- ti tebi
- k kilo
- m mega
- g giga
- t tera
- sz k, m, g 或 t 中最佳的单位。
- du 按小时、分钟、秒格式化持续时间。
可以使用 +min 和/或 +max 对指标进行聚合。例如,mem:vm+max/gi 打印虚拟内存大小和峰值大小。要仅获取最大值,使用:mem:vm-raw+max。要获取全部:mem:vm+min+max。
对于某些指标,最小值或最大值没有意义。
数据类型
指标可以是
- 计数器:始终增加的值,如读取调用次数或 CPU 时间。
- 仪表:可能减少的正值,如内存消耗。
CPU 使用率
与其他工具不同,time:cpu+ratio 显示的进程 CPU 使用率是总 CPU 时间的百分比。使用 4 核系统所有核心的进程将是 100%,而不是 400%。
CPU 使用率是 (stime + utime) / ((user - guest) + (nice - guest_nice) + system + idle + iowait + irq + softirq),其中 stime 和 utime 来自 /proc/PID/stat,而 user, … 来自 /proc/stat。
进程
通过以下四种方式之一选择进程:
-
选项 --pid:进程的pid。
-
选项 --pid-file:包含进程pid的文件。命令开始时该文件不必存在。
-
选项 --name:监控所有具有给定名称的进程。
-
选项 --merge:将具有相同名称的所有进程的指标相加。进程的数量用括号显示,而不是pid。
选项可以指定多次。
导出
CSV
在CSV导出中,第一列是自Unix纪元以来的秒数。
使用--export-size
可以限制导出数据的量,以设置CSV文件的最大大小,以及使用--export-count
设置最大文件数。
循环冗余检测数据库(RRD)
通过启动一个RRDtool进程为每个进程创建一个RRD数据库。数据库中只写入原始值。
行数通过选项 --export-count 设置。
选项 --graph
在导出目录中为每个指标创建一个png文件。
配置
配置文件名为 settings.ini
。其位置根据XDG Base Directory Specification确定。
示例 ~/.config/oprs/settings.ini
[display]
mode = term
every = 10
format = human
theme = light
border = yes
[export]
kind = csv
dir = /tmp
size = 10m
count = 5
[logging]
file = /var/log/oprs.log
level = info
[targets]
system = yes
myself = yes
许可
版权所有 (c) 2020-2021 Laurent Pelecq
oprs
根据 GNU 通用公共许可证版本 3 分发。
有关详细信息,请参阅LICENSE GPL3。
依赖项
~12–22MB
~322K SLoC