115 个发布版本

0.14.6 2024年7月30日
0.14.5 2024年3月7日
0.14.4 2023年11月24日
0.14.0 2023年3月7日
0.7.6 2019年3月22日

操作系统 类别中排名 #14

Download history 286/week @ 2024-05-03 262/week @ 2024-05-10 329/week @ 2024-05-17 250/week @ 2024-05-24 250/week @ 2024-05-31 259/week @ 2024-06-07 220/week @ 2024-06-14 196/week @ 2024-06-21 199/week @ 2024-06-28 268/week @ 2024-07-05 249/week @ 2024-07-12 228/week @ 2024-07-19 1034/week @ 2024-07-26 648/week @ 2024-08-02 454/week @ 2024-08-09 406/week @ 2024-08-16

每月下载量 2,568

MIT 许可证

420KB
12K SLoC

procs

procs 是用 Rust 编写的 ps 的替代品。

Actions Status codecov

Changelog Crates.io procs homebrew

功能

  • 彩色且易于阅读的输出
    • 基于终端背景自动检测主题
  • 多列关键字搜索
  • 一些 ps 不支持的额外信息
    • TCP/UDP 端口
    • 读写吞吐量
    • Docker 容器名称
    • 更多内存信息
  • 分页支持
  • 监视模式(类似 top
  • 树视图

平台

  • 支持 Linux。
  • 实验性支持 macOS。
    • 仅 GitHub Actions 环境检查 macOS 版本。
    • 欢迎报告由真实机器引起的问题。
  • 支持 Windows。
  • 实验性支持 FreeBSD。

安装

下载二进制文件

发布页面 下载,并解压到 PATH 目录中。

Packaging status

Nixpkgs

您可以从 Nixpkgs 安装。

nix-env --install procs

snapcraft

您可以从 snapcraft 安装。

sudo snap install procs

homebrew

您可以从 homebrew 安装。

brew install procs

MacPorts

您可以从 MacPorts 安装。

sudo port install procs

Alpine Linux

您可以从 Alpine Linux 仓库 安装。

在执行 apk add 之前,应启用正确的仓库(有关最新信息,请参阅上述链接)。

sudo apk add procs

Arch Linux

您可以从 Arch Linux extra 仓库 安装。

sudo pacman -S procs

Scoop

您可以使用 scoop 安装。

scoop install procs

Fedora

sudo dnf install procs

Windows

winget install procs

RPM

您可以使用 rpm 安装。

sudo rpm -i https://github.com/dalance/procs/releases/download/v0.14.6/procs-0.14.6-1.x86_64.rpm

Cargo

您可以使用 cargo 进行安装。

cargo install procs

安装说明

权限问题

在 macOS 上,普通用户无法访问其他用户进程的任何信息。在 Linux 上,普通用户无法访问其他用户的一些信息(例如,读写吞吐量)。

如果您想显示这些信息,应使用 sudo

$ sudo procs
[sudo] password for ...:

如果您想跳过密码输入,可以将以下条目添加到 /etc/sudoers

[user or group] ALL= NOPASSWD: [procs binary path]
// ex. myuser ALL= NOPASSWD: /usr/local/bin/procs

使用

在以下截图,使用 config/large.toml 作为配置文件。

显示所有进程

仅输入 procs。它将显示所有进程的信息。

procs

procs

按非数字关键字搜索

如果您将任何关键字作为参数添加,则默认将其匹配到 USERCommand

procs zsh

如果您想在配置文件中添加匹配非数字关键字的列,可以使用 nonnumeric_search 选项。

procs_zsh

按数字关键字搜索

如果使用数字作为关键字,则默认将其匹配到 PID。数字被视为精确匹配,非数字被视为部分匹配。

procs --or 6000 60000 60001 16723

如果您想在配置文件中添加匹配数字关键字的列,可以使用 numeric_search 选项。

procs_port

注意,procfs 权限仅允许识别当前用户拥有的进程的监听端口,因此除非以 root 运行,否则不会显示所有端口。

搜索关键字的逻辑运算

如果有一些关键字,可以通过命令行选项指定关键字之间的逻辑运算。

  • --and:显示匹配所有关键字的进程。
  • --or:显示匹配任何关键字的进程。
  • --nand:除非这些进程与所有关键字匹配,否则显示进程。
  • --nor:除非这些进程与任何关键字匹配,否则显示进程。

默认操作可以在 配置文件 中指定。请参阅 [search] 部分。

显示 Docker 容器名称

如果您有访问 docker 守护进程的权限(unix:///var/run/docker.sock),将添加 Docker 列。

procs growi

procs_docker

注意,procs 通过 UNIX 域套接字获取容器信息,因此不支持 macOS 上的 Docker Toolbox(不使用 UNIX 域套接字)。支持 Docker Desktop for Mac,但未进行测试。

分页器

如果输出行超过终端高度,则自动使用分页器。此行为和分页器命令可以通过 配置文件 指定。

Linux / macOS

在 Linux 和 macOS 上,less 是默认分页器。如果没有 less,则使用 more。可以通过配置 use_builtin 使用内置分页器。

Windows

在 Windows 上,始终使用内置分页器。

监视模式

如果使用 --watch--watch-interval <> 选项,进程会自动更新输出如 top。如果使用 --watch,更新间隔变为 1 秒。可以通过 --watch-interval 选项的参数指定更新间隔。还有一些快捷键可以控制。

  • n:将排序列更改为下一列
  • p:将排序列更改为上一列
  • a:将排序顺序更改为升序
  • d:将排序顺序更改为降序
  • q:退出

树视图

如果使用 --tree 选项,进程将按依赖顺序排序,并在左侧显示依赖树。

procs --tree

procs_tree

如果配置中存在 TreeSlot 列,依赖树将显示在该槽位。

排序列

可以通过 --sorta--sortd 选项更改列排序顺序。这两个选项的最后一个字符表示排序顺序:“a”代表升序,“d”代表降序。

通过选项关键字选择排序列。关键字与 --list 选项显示的列类型匹配。如果使用 --sorta cputime,则按 CpuTime 升序排序。如果使用 --sortd rss,则按 VmRss 降序排序。关键字部分匹配,不区分大小写。

默认排序由 配置文件 中的 [sort] 部分指定。

procs --sortd cpu

procs_sort

插入列

--insert 选项将在 Slot 列或 MultiSlot 列的位置插入新列。插入的列由选项关键字选择。关键字与排序选项相同。插入的列可以使用 Slot 列。如果需要多次插入,应添加多个 Slot 列。多个插入可以使用 MultiSlot 列。如果有 MultiSlot,则所有剩余列都插入到 MultiSlot 中,并且后续的 Slot / MultiSlot 将不再使用。未使用的 Slot / MultiSlot 不会显示。

Shell 完成功能

--gen-completion 选项会在当前目录下生成 shell 完成文件。以下 shell 受支持。

  • zsh
  • bash
  • fish
  • powershell
  • elvish

--gen-completion-out 选项将生成 shell 完成功能输出到标准输出。您可以在某些 shell 中直接使用它。

source <(procs --gen-completion-out bash)

配置

配置路径

您可以通过编写配置文件来更改配置。在存储库的 config 目录中有一些配置示例。在 procs v0.9.21 之前,默认配置为 config/large.toml

配置文件的路径取决于操作系统

  • Linux: ~/.config/procs/config.toml/etc/procs/procs.toml
  • macOS: ~/Library/Preferences/com.github.dalance.procs/config.toml/etc/procs/procs.toml
  • Windows: ~/AppData/Roaming/dalance/procs/config/config.toml

为了兼容性,如果存在 ~/.procs.toml,则优先使用它而不是操作系统特定的位置。

从命令行指定配置

--use-config 选项可以指定内置配置。--load-config 选项可以指定配置文件路径。

配置示例

可以通过 --gen-config 选项生成配置文件的完整示例。

[[columns]]
kind = "Pid"
style = "BrightYellow|Yellow"
numeric_search = true
nonnumeric_search = false

[[columns]]
kind = "Username"
style = "BrightGreen|Green"
numeric_search = false
nonnumeric_search = true
align = "Right"

[style]
header = "BrightWhite|Black"
unit = "BrightWhite|Black"
tree = "BrightWhite|Black"

[style.by_percentage]
color_000 = "BrightBlue|Blue"
color_025 = "BrightGreen|Green"
color_050 = "BrightYellow|Yellow"
color_075 = "BrightRed|Red"
color_100 = "BrightRed|Red"

[style.by_state]
color_d = "BrightRed|Red"
color_r = "BrightGreen|Green"
color_s = "BrightBlue|Blue"
color_t = "BrightCyan|Cyan"
color_z = "BrightMagenta|Magenta"
color_x = "BrightMagenta|Magenta"
color_k = "BrightYellow|Yellow"
color_w = "BrightYellow|Yellow"
color_p = "BrightYellow|Yellow"

[style.by_unit]
color_k = "BrightBlue|Blue"
color_m = "BrightGreen|Green"
color_g = "BrightYellow|Yellow"
color_t = "BrightRed|Red"
color_p = "BrightRed|Red"
color_x = "BrightBlue|Blue"

[search]
numeric_search = "Exact"
nonnumeric_search = "Partial"
logic = "And"

[display]
show_self = false
show_thread = false
show_thread_in_tree = true
cut_to_terminal = true
cut_to_pager = false
cut_to_pipe = false
color_mode = "Auto"

[sort]
column = 0
order = "Ascending"

[docker]
path = "unix:///var/run/docker.sock"

[pager]
mode = "Auto"

[[columns]] 部分

[[columns]] 部分定义了哪些列被使用。第一个 [[columns]] 显示在左侧,最后一个显示在右侧。

默认值 描述
kind 参见 kind 列表 列类型
style 参见 style 列表 列样式
numeric_search true, false false 列是否可以与数值关键词匹配
nonnumeric_search true, false false 列是否可以与非数值关键词匹配
align Left, Right, Center Left 文本对齐
max_width [Number] 最大列宽
min_width [Number] 最小列宽
header [String] 备选标题描述

kind 列表

procs kind ps 标准格式 描述 Linux macOS Windows FreeBSD
Ccgroup -not supported- 按压缩格式控制组 o
Cgroup cgroup 控制组 o
Command args 带所有参数的命令 o o o o
ContextSw -not supported- 上下文切换计数 o o o
CpuTime cputime 累积CPU时间 o o o o
Docker -not supported- Docker 容器名称 o o
Eip eip 指令指针 o
ElapsedTime -not supported- 已用时间 o o o o
Env e 输出修饰符 环境变量 o o
Esp esp 堆栈指针 o
FileName comm 文件名 o o
Gid egid 组ID o o o o
GidFs fgid 文件系统组ID o
GidReal rgid 真实组ID o o o
GidSaved sgid 保存的组ID o o o
Group egroup 组名 o o o o
GroupFs fgroup 文件系统组名 o
GroupReal rgroup 真实组名 o o o
GroupSaved sgroup 保存的组名 o o o
MajFlt maj_flt 主要页面错误计数 o o o o
MinFlt min_flt 次要页面错误计数 o o o
MultiSlot -not supported- --insert 选项预留的插槽 o o o o
Nice ni 优先值 o o o
Pgid pgid 进程组ID o o o
Pid pid 进程ID(或由 [] 包围的线程ID) o o o o
Policy policy 调度策略 o o
Ppid ppid 父进程ID o o o o
Priority pri Priority o o o o
Processor psr 当前分配的处理器 o o
ReadBytes -not supported- 从存储读取的字节数 o o o o
RtPriority rtprio 实时优先级 o
SecContext label 安全上下文 o
Separator -not supported- 使用 | 作为列分隔符 o o o o
Session sid 会话ID o o o
ShdPnd 挂起 进程的挂起信号掩码 o o
SigBlk 被阻止 阻止信号掩码 o o
SigCgt 捕获 捕获信号掩码 o o
SigIgn 忽略 忽略信号掩码 o o
SigPnd 挂起 线程的挂起信号掩码 o
-not supported- --insert 选项预留的插槽 o o o o
Ssb -not supported- 推测性存储绕过状态 o
StartTime start_time 开始时间 o o o o
状态 s 进程状态 o o o
TcpPort -not supported- 已绑定TCP端口 o o
线程 nlwp 线程计数 o o o
TreeSlot -not supported- 树列的槽 o o o o
Tty tty 控制TTY o o o
UdpPort -not supported- 已绑定UDP端口 o o
Uid euid 用户ID o o o o
UidFs fuid 文件系统用户ID o
UidLogin -not supported- 登录用户ID o
UidReal ruid 真实用户ID o o o
UidSaved suid 保存的用户ID o o o
UsageCpu %cpu CPU利用率 o o o o
UsageMem %mem 内存利用率 o o o o
User euser 用户名 o o o o
UserFs fuser 文件系统用户名 o
UserLogin -not supported- 登录用户名 o
UserReal ruser 真实用户名 o o o
UserSaved suser 保存的用户名 o o o
VmData -not supported- 数据大小 o o
VmExe trs 文本段大小 o o
VmHwm -not supported- 峰值常驻集大小 o o o
VmLib -not supported- 库代码大小 o
VmLock -not supported- 锁定内存大小 o
VmPeak -not supported- 峰值虚拟内存大小 o o
VmPin -not supported- 固定内存大小 o o
VmPte -not supported- 页面表条目大小 o
VmRss rss 常驻集大小 o o o o
VmSize vsz 物理页面大小 o o o o
VmStack -not supported- 堆栈大小 o o
VmSwap -not supported- 交换出虚拟内存大小 o o
Wchan wchan 进程休眠内核函数 o o
WorkDir -not supported- 当前工作目录 o
WriteByte -not supported- 向存储写入字节数 o o o o

style 列表

  • 亮黑色
  • 亮红色
  • 亮绿色
  • 亮黄色
  • 亮蓝色
  • 亮品红色
  • 亮青色
  • 亮白色
  • 黑色
  • 红色
  • 绿色
  • 黄色
  • 蓝色
  • 品红色
  • 青色
  • 白色
  • Color256
  • 按百分比
  • 按状态
  • 按单元

有一些特殊样式,例如 ByPercentageByStateByUnit。这些是值感知着色的样式。例如,如果选择 ByUnit,则可以为每个值单位指定颜色(例如 KMG 等)。颜色可以在 [style.by_unit] 节中配置。

其他颜色可以像 color 一样配置。

[style]

[style] 节定义了标题、单位和每种样式的颜色。以下列出了可用的颜色列表。

子节 默认值 描述
header 参见 color 列表 亮白色|黑色 标题颜色
unit 参见 color 列表 亮白色|黑色 单位颜色
tree 参见 color 列表 亮白色|黑色 树颜色
by_percentage color_000 参见 color 列表 亮蓝色|蓝色 0% - 25% 的颜色
by_percentage color_025 参见 color 列表 亮绿色|绿色 25% - 50% 的颜色
by_percentage color_050 参见 color 列表 亮黄色|黄色 50% - 75% 的颜色
by_percentage color_075 参见 color 列表 亮红色|红色 75% - 100% 的颜色
by_percentage color_100 参见 color 列表 亮红色|红色 100% - 的颜色
by_state color_d 参见 color 列表 亮红色|红色 D 状态的颜色
by_state color_r 参见 color 列表 亮绿色|绿色 R 状态的颜色
by_state color_s 参见 color 列表 亮蓝色|蓝色 S 状态的颜色
by_state color_t 参见 color 列表 亮青色|青色 T 状态的颜色
by_state color_z 参见 color 列表 亮品红色|品红色 Z 状态的颜色
by_state color_x 参见 color 列表 亮品红色|品红色 X 状态的颜色
by_state color_k 参见 color 列表 亮黄色|黄色 K 状态的颜色
by_state color_w 参见 color 列表 亮黄色|黄色 W 状态的颜色
by_state color_p 参见 color 列表 亮黄色|黄色 P 状态的颜色
by_unit color_k 参见 color 列表 亮蓝色|蓝色 在单位 K 的颜色
by_unit color_m 参见 color 列表 亮绿色|绿色 在单位 M 的颜色
by_unit color_g 参见 color 列表 亮黄色|黄色 在单位 G 的颜色
by_unit color_t 参见 color 列表 亮红色|红色 在单位 T 的颜色
by_unit color_p 参见 color 列表 亮红色|红色 在单位 P 的颜色
by_unit color_x 参见 color 列表 亮蓝色|蓝色 在其他单位上的颜色

color 列表

  • 亮黑色
  • 亮红色
  • 亮绿色
  • 亮黄色
  • 亮蓝色
  • 亮品红色
  • 亮青色
  • 亮白色
  • 黑色
  • 红色
  • 绿色
  • 黄色
  • 蓝色
  • 品红色
  • 青色
  • 白色
  • Color256

颜色可以通过主题通过 | 来配置。

style = "BrightWhite|Black" # BrightWhite for dark theme and Black for light theme
style = "BrightWhite"       # BrightWhite for both theme

第一个颜色用于暗色主题,第二个用于亮色主题。如果只指定一个颜色,则颜色应用于两种主题。

Color256 可以通过 0-255 的值指定,如下所示

style = "223|112" # 223 for dark theme and 112 for light theme
style = "223"     # 223 for both theme

[search] 部分

[search] 部分定义了关键字搜索的选项。

默认值 描述
numeric_search 精确,部分 精确 是否数值关键字完全匹配或部分匹配
nonnumeric_search 精确,部分 部分 是否非数值关键字完全匹配或部分匹配
逻辑 与,或,与非,或非 关键字之间的逻辑运算
case 智能,不区分大小写,区分大小写 智能 搜索中的大小写敏感度

case

case 是搜索中的大小写敏感度。

  • Smart:如果关键字包含大写字母,则进行大小写敏感搜索。否则进行不区分大小写的搜索
  • Insensitive:不区分大小写的搜索
  • Sensitive:大小写敏感的搜索

[display] 部分

[display] 部分定义了输出显示的选项。

默认值 描述
show_self true, false false 是否显示自身进程( procs
show_self_parents true, false false 是否显示作为唯一子进程的父进程
show_thread true, false false 是否显示线程信息(仅限 Linux)
show_thread_in_tree true, false true 是否在树模式中显示线程信息(仅限 Linux)
show_parent_in_tree true, false true 是否在树模式中显示父进程
show_children_in_tree true, false true 是否在树模式中显示子进程
show_header true, false true 是否显示表头行
show_footer true, false false 是否显示表尾行
show_kthreads true, false true 是否显示属于 kthread 的进程(仅限 Linux)
cut_to_terminal true, false true 是否为了输出到终端而截断输出行
cut_to_pager true, false false 是否为了输出到分页器而截断输出行
cut_to_pipe true, false false 是否为了输出到管道而截断输出行
color_mode 自动,总是,禁用 自动 没有 --color 命令行选项的输出着色的默认行为
分隔符 [String] 用作分隔符的字符串
升序 [String] 升序排序指示符
降序 [String] 降序排序指示符
树符号 [String; 5] [│, ─, ┬, ├, └] 树视图中使用的符号
abbr_sid true, false true 是否缩写机器SID(仅限Windows)
主题 自动, 暗色, 亮色 自动 默认主题

如果 color_mode自动,则终端和分页器启用颜色,管道禁用颜色。

如果 theme自动,则从终端自动检测主题。某些终端不支持自动检测,因此可以明确指定 暗色亮色

abbr_sid

Windows SID太长,因此默认缩写。如果 abbr_sidfalse,则SID完全显示如下

S-1-5-21-789457439-2186958450-1652286173-1001

如果 abbr_sidtrue,则SID显示如下

S-1-5-21-...-1001

[sort] 部分

[sort] 部分定义了用于排序的列和排序顺序。

默认值 描述
[Number] 0 用于排序的列号
顺序 升序,降序 升序 排序顺序

如果 column 是 0,则按左侧列排序。

[docker] 部分

[docker] 部分定义了如何与docker守护进程通信。

默认值 描述
路径 [路径] unix:///var/run/docker.sock UNIX域套接字到docker守护进程

[pager] 部分

[pager] 部分定义了分页器的行为。

默认值 描述
模式 自动,总是,禁用 自动 使用 --pager 命令行选项无的默认分页器行为
detect_width true, false false 是否 auto 模式检测终端宽度溢出
use_builtin true, false false 是否使用内置分页器
command [命令] less -SR 分页器命令

如果 mode自动,则仅在输出行数超过终端高度时使用分页器。默认分页器是 less -SR(如果找不到 less,则使用 more -f)。

依赖

~12–27MB
~404K SLoC