ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Glances 进程列表(Processes List)完全指南:排序、过滤、聚焦与按程序累计实战

Glances 进程列表(Processes List)完全指南:排序、过滤、聚焦与按程序累计实战 指标监控监控大盘CLI告警MCP 服务【免费下载链接】glancesGlances an Eye on your system. A top/htop alternative for GNU/Linux, BSD, macOS and Windows operating systems.项目地址https://gitcode.com/gh_mirrors/gl/glances点击查看免费下载本文以 Glances 官方文档 docs/aoa/ps.rstAnatomy Of The Application 系列中的进程视图章节为骨架系统讲解 Glances 进程列表的界面组成、摘要行语义、自动/手动排序机制、各列含义、过滤与聚焦语法、扩展统计、按程序累计以及进程导出功能并结合 processlist 插件源码、进程管理核心 与 glances.conf 配置模板 逐项印证底层实现。读完本文你将能在 TUI 界面中熟练切换排序键、编写正则过滤规则、固定并诊断单个进程、按程序聚合视图以及把指定进程精确导出到 CSV 等后端。一、进程视图的整体构成Glances 的进程视图Processes List是 TUI 中信息量最大、最常被关注的区域。从源码结构看它由以下部分组成Processes summary进程摘要行总任务数、线程数、运行/睡眠/其他状态的进程数以及当前排序键Monitored processes list受监控进程列表可选仅在独立模式standalone下出现用于展示被聚焦的进程Extended stats for the selected process选中进程的扩展统计可选按e键固定某个进程后显示其 CPU 亲和性、内存细节、打开的文件/线程/网络会话等Processes list进程列表本体按当前排序键排列的进程表格行数自适应屏幕大小对应源码中的max_processes见 glances/processes.py。进程摘要行summary展示以下统计其中总任务数在 Glances API 中别名为total任务/进程总数API 字段total线程数API 字段thread运行中的任务数API 字段running睡眠中的任务数API 字段sleeping其他状态非 running 或 sleeping的任务数当前进程列表使用的排序键。二、排序机制自动排序与手动排序2.1 默认自动排序a键默认情况下或按下a键后进程列表由 Glances自动选择排序键规则如下CPU没有告警时默认行为CPU检测到 CPU 或 LOAD 告警时MEM检测到内存告警时DISK I/O检测到 CPU iowait 告警时。对应源码中set_sort_key(auto, autoTrue)会开启auto_sort并把初始键设为cpu_percent见 glances/processes.py真正执行排序的是sort_stats()见 glances/processes.py默认按cpu_percent降序、以memory_percent作为次级排序键。2.2 手动排序快捷键与命令行在 TUI 中既可以通过左右箭头点击表头也可以使用快捷键或启动参数强制指定排序键快捷键命令行选项说明a自动排序默认的自动排序c--sort-processes cpu_percent按 CPU 排序eN/A固定pin当前进程并显示扩展统计i--sort-processes io_counters按 DISK I/O 排序j--programs按程序累计进程此模式下扩展统计禁用m--sort-processes memory_percent按 MEM 排序p--sort-processes name按进程名排序t--sort-processes cpu_times按 CPU 时间排序u--sort-processes username按进程用户名排序命令行选项--sort-processes的解析定义在 glances/main.py传入后会在插件初始化时调用glances_processes.set_sort_key(args.sort_processes_key, False)覆盖默认键见 processlist 插件构造函数。此外配置文件中也可以通过[processlist]段的sort_key设置默认排序键见 glances/plugins/processlist/init.py 与 conf/glances.conf例如[processlist] sort_keymemory_percent注意按name、username、cpu_num排序时是正序其余键为降序sort_reverse逻辑见 glances/processes.py。三、进程列表列详解进程列表的列头与每列的渲染布局定义在 glances/plugins/processlist/init.py以下是完整列说明列含义与说明CPU%进程使用的 CPU 百分比。若关闭 Irix/Solaris 模式按0键该值会除以逻辑核心数列名相应变为CPUi源码见 processlist 插件MEM%进程使用的内存百分比即 RES 除以机器总内存VIRT虚拟内存大小。包含全部代码、数据、共享库以及被换出swap out的页和已映射未使用的页。虚拟内存通常远大于物理内存多数情况下该数字参考价值有限RES常驻内存大小即进程当前占用的非交换物理内存PID进程 ID在累计模式下该列被NPROCS替换NPROCS进程 子进程数量仅累计模式USER用户 IDTHR进程的线程数TIME进程累计 CPU 时间用户态 内核态之和格式化逻辑见 processlist 插件NI进程 nice 值优先级。Windows 上会以短标签显示如No正常、Lo空闲、Hi高等见 display_niceS进程状态取值如下R/s进程 I/O 读取速率B/sW/s进程 I/O 写入速率B/sCPU进程当前所在 CPU 核心编号0 基进程迁移时会动态更新信息不可用时显示-COMMAND进程命令行或进程名按/键可切换显示方式3.1 进程状态S列取值Rrunning 或 runnable处于运行队列Sinterruptible sleep等待某个事件Duninterruptible sleep通常是 I/OZdefunct僵尸进程T被 job control 信号跟踪t在跟踪期间被调试器停止Xdead理论上不应出现。状态列与 nice 列的着色告警分别由get_status_alert()与get_nice_alert()实现processlist 插件阈值可在配置文件中覆盖。3.2CPU列的可用性说明CPU进程所在核心列仅在 Linux、FreeBSD 和 SunOS 上可用Windows 与 macOS 上自动禁用。若需要关闭该列可在glances.conf的[processlist]段配置[processlist] disable_statscpu_num这正是配置文件模板中的默认值见 conf/glances.conf。disable_stats支持逗号分隔的多个统计项可禁用的项包括cpu_percent,memory_info,memory_percent,username,cpu_times,num_threads,nice,status,io_counters,cmdline,cpu_num其中pid与name不可禁用见 conf/glances.conf。该配置在插件加载时通过glances_processes.disable_stats ...生效processlist 插件并在采集阶段被剔除glances/processes.py。3.3 禁用虚拟内存列VIRT如果不想显示 VIRT 列在glances.conf的[processlist]段添加[processlist] disable_virtual_memoryTrue渲染时插件会据此跳过 VIRT 表头与每行数据仅保留 RES见 processlist 插件 与 conf/glances.conf。四、进程过滤Filtering4.1 交互式过滤ENTER键在 TUI 中按ENTER键可以输入过滤规则Glances 过滤器语法如下均为正则表达式python进程名或命令行以python开头正则python等价于^python语义.*python.*进程名或命令行包含pythonusername:nicolargo属于用户nicolargo的进程key:regexp形式cmdline:\/usr\/bin.*命令行以/usr/bin开头的进程。过滤器实现位于 glances/filter.pyGlancesFilter负责把用户输入拆分为key与正则使用re.compile编译后通过fullmatch匹配未指定 key 时同时匹配name与cmdline两个字段glances/filter.pycmdline为列表时会取首个元素进行匹配。GlancesFilterList则管理逗号分隔的多个过滤器命中任意一个即视为通过glances/filter.py。4.2 进程聚焦Process Focus除了临时过滤还可以让 Glances只关注一组进程列表聚焦。可从命令行指定glances --process-focus .*python.*,.*firefox.*或在glances.conf中配置[processlist] focus.*python.*,.*firefox.*聚焦后界面顶部会显示 Focus on following processes: ... 提示行见 processlist 插件进程列表仅保留命中的进程update_list()中的过滤逻辑见 glances/processes.py。命令行与配置文件两种途径最终都写入glances_processes.process_focusprocesslist 插件、glances/processes.py。4.3 过滤状态下的摘要统计当过滤生效时进程列表下方会显示过滤结果的汇总行包括 CPU%、MEM% 之和、VIRT/RES 内存合计、I/O 读写速率合计等并支持min/max/mean三档对应_msg_curse_sum与_sum_stats见 processlist 插件按M键可重置 min/max 统计。五、扩展统计固定进程与进程操作5.1 固定进程e键 /--enable-process-extended在独立standalone模式下Glances 会为顶部进程额外采集扩展信息CPU affinity进程使用的核心数Memory info扩展内存信息例如 Linux 上的 swap、shared、text、data由set_extended_stats通过 psutil 抓取见 glances/processes.pyOpen进程使用的线程数、文件数num_fdsUnix、句柄数num_handlesWindows以及 TCP/UDP 网络会话数IO nice进程的 I/O 优先级Linux 上显示调度类与 0-7 的 value见 processlist 插件。启用方式有两种glances --enable-process-extended或在 TUI 中选中进程后按e键固定pin再按e取消固定。固定后面板还会显示该进程 CPU/MEM 的Min/Max/Mean统计采样自历史值见 glances/processes.py。5.2 杀死进程k键在 curses/独立模式下用UP/DOWN方向键选中进程后按k杀死选中的进程。5.3 阈值覆盖noteCPU与MEM百分比的告警阈值可以在配置文件的[processlist]段覆盖默认值为 50/70/90[processlist] cpu_careful50 cpu_warning70 cpu_critical90 mem_careful50 mem_warning70 mem_critical90还可以为 nice 值定义告警阈值逗号分隔列表例如nice_warning-20,-19,-18状态列也可配置status_ok默认包含R,W,P,Istatus_critical默认包含Z,D见 conf/glances.conf。六、按程序累计视图j键 /--programs按下j快捷键或使用命令行选项--programsglances/main.py后进程列表会从按进程切换到按程序累计视图同一程序的多个进程被合并展示累计的 CPU 消耗、累计虚拟/常驻内存、累计 I/O 传输数据PID列被NPROCS列取代显示该程序包含的进程含子进程数量此模式下扩展统计extended stats被禁用。底层由processes_to_programs()聚合、_get_programs()缓存结果实现见 glances/processes.py相关实现与测试可参考 tests/test_programs_aggregation.py 与 tests/test_program_aggregation.py。七、进程导出Export ProcessGlances 4.x 引入的进程导出功能允许把特定进程导出到 CSV、InfluxDB 等后端便于长期监控单个应用如 firefox。使用方式有两种配置文件中的export选项或命令行--export-process-filter选项glances/main.py。7.1 配置示例示例一导出所有名为python或命令行包含python的进程[processlist] export.*python.*等价命令行glances --export-process-filter .*python.*示例二导出名字为python或bash的进程[processlist] export.*python.*,.*bash.*等价命令行glances --export-process-filter .*python.*,.*bash.*示例三导出属于用户nicolargo的所有进程[processlist] exportusername:nicolargo等价命令行glances --export-process-filter username:nicolargo导出结果以PID 作为 key。例如把 firefox 进程导出到 CSV 文件配置文件glances.conf[processlist] export.*firefox.*等价命令行glances --export-process-filter .*firefox.*完整命令示例禁用其余插件、只启用 processlist、静默模式glances -C ./conf/glances.conf --export csv --export-csv-file /tmp/glances.csv --disable-plugin all --enable-plugin processlist --quiet输出示例CSV每行一个采样时刻的进程快照timestamp,845992.memory_percent,845992.status,845992.num_threads,845992.cpu_timesuser,845992.cpu_timessystem,845992.cpu_timeschildren_user,845992.cpu_timeschildren_system,845992.cpu_timesiowait,845992.memory_inforss,845992.memory_infovms,845992.memory_infoshared,845992.memory_infotext,845992.memory_infolib,845992.memory_infodata,845992.memory_infodirty,845992.name,845992.io_counters,845992.nice,845992.cpu_percent,845992.pid,845992.gidsreal,845992.gidseffective,845992.gidssaved,845992.key,845992.time_since_update,845992.cmdline,845992.username,total,running,sleeping,thread,pid_max 2024-04-03 18:39:55,3.692938041968513,S,138,1702.88,567.89,1752.79,244.18,0.0,288919552,12871561216,95182848,856064,0,984535040,0,firefox,1863281664,0,0.5,845992,1000,1000,1000,pid,2.2084147930145264,/snap/firefox/3836/usr/lib/firefox/firefox,nicolargo,403,1,333,1511,0 2024-04-03 18:39:57,3.692938041968513,S,138,1702.88,567.89,1752.79,244.18,0.0,288919552,12871561216,95182848,856064,0,984535040,0,firefox,1863281664,0,0.5,845992,1000,1000,1000,pid,2.2084147930145264,/snap/firefox/3836/usr/lib/firefox/firefox,nicolargo,403,1,333,1511,0注意导出列的命名规律pid.stat作为列名pid与name等标识性字段直接展开末尾附带进程计数摘要total、running、sleeping、thread、pid_max。导出过滤在采集阶段即完成只有命中的进程才进入导出列表update_export_list()见 glances/processes.py插件对外暴露get_export()见 processlist 插件。八、界面形态一览Glances 进程列表依据屏幕宽度提供多种呈现形态对应本文各节功能紧凑视图宽屏视图过滤视图扩展视图顶部进程扩展信息九、小结Glances 的进程列表远不止每秒刷新一次表格这么简单自动排序会结合告警状态动态切换排序键key:regexp语法让过滤与聚焦可以精确到用户名、命令行甚至 PIDe键固定进程即可获得 CPU/MEM Min/Max/Mean、亲和性、I/O nice 与文件/网络会话等诊断信息j键按程序累计让谁在吃资源一目了然而export过滤器配合 CSV/InfluxDB 等后端则可以针对单个 PID 构建长期监控数据。若需继续深入可进一步阅读 docs/aoa/index.rst 中的其他界面章节header、quicklook、cpu、memory 等或在源码中跟踪sort_stats()、set_extended_stats()与过滤器类的实现细节。赞分享指标监控监控大盘CLI告警MCP 服务【免费下载链接】glancesGlances an Eye on your system. A top/htop alternative for GNU/Linux, BSD, macOS and Windows operating systems.项目地址https://gitcode.com/gh_mirrors/gl/glances点击查看免费下载相关推荐Refine v5 useList Hook 完全指南数据列表的查询、分页、排序与过滤实战Refine v5 useList Hook 完全指南数据列表的查询、分页、排序与过滤实战 useList 是 Refine 核心包中面向数据列表读取场景前端企业应用Polars 聚合实战指南基于 group_by 的表达式聚合、分组内过滤与排序Polars 聚合实战指南基于 group_by 的表达式聚合、分组内过滤与排序 本文以 Polars 官方用户指南《Aggregation》为主体围绕 g数据分析大数据CVAT 过滤功能实战指南对象过滤、列表排序与 CSV 导出的完整实现解析CVAT 过滤功能实战指南对象过滤、列表排序与 CSV 导出的完整实现解析 本篇基于 CVAT 官方文档 Filter https://link.gitcod数据标注计算机视觉数据集AI 应用后端前端创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表