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
每月下载量 2,568
420KB
12K SLoC
procs
procs 是用 Rust 编写的 ps
的替代品。
文档快速链接
功能
- 彩色且易于阅读的输出
- 基于终端背景自动检测主题
- 多列关键字搜索
- 一些 ps 不支持的额外信息
- TCP/UDP 端口
- 读写吞吐量
- Docker 容器名称
- 更多内存信息
- 分页支持
- 监视模式(类似
top
) - 树视图
平台
- 支持 Linux。
- 实验性支持 macOS。
- 仅 GitHub Actions 环境检查 macOS 版本。
- 欢迎报告由真实机器引起的问题。
- 支持 Windows。
- 实验性支持 FreeBSD。
安装
下载二进制文件
从 发布页面 下载,并解压到 PATH 目录中。
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
按非数字关键字搜索
如果您将任何关键字作为参数添加,则默认将其匹配到 USER
、Command
。
procs zsh
如果您想在配置文件中添加匹配非数字关键字的列,可以使用 nonnumeric_search
选项。
按数字关键字搜索
如果使用数字作为关键字,则默认将其匹配到 PID
。数字被视为精确匹配,非数字被视为部分匹配。
procs --or 6000 60000 60001 16723
如果您想在配置文件中添加匹配数字关键字的列,可以使用 numeric_search
选项。
注意,procfs 权限仅允许识别当前用户拥有的进程的监听端口,因此除非以 root 运行,否则不会显示所有端口。
搜索关键字的逻辑运算
如果有一些关键字,可以通过命令行选项指定关键字之间的逻辑运算。
--and
:显示匹配所有关键字的进程。--or
:显示匹配任何关键字的进程。--nand
:除非这些进程与所有关键字匹配,否则显示进程。--nor
:除非这些进程与任何关键字匹配,否则显示进程。
默认操作可以在 配置文件 中指定。请参阅 [search]
部分。
显示 Docker 容器名称
如果您有访问 docker 守护进程的权限(unix:///var/run/docker.sock
),将添加 Docker
列。
procs growi
注意,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
如果配置中存在 TreeSlot
列,依赖树将显示在该槽位。
排序列
可以通过 --sorta
或 --sortd
选项更改列排序顺序。这两个选项的最后一个字符表示排序顺序:“a”代表升序,“d”代表降序。
通过选项关键字选择排序列。关键字与 --list
选项显示的列类型匹配。如果使用 --sorta cputime
,则按 CpuTime
升序排序。如果使用 --sortd rss
,则按 VmRss
降序排序。关键字部分匹配,不区分大小写。
默认排序由 配置文件 中的 [sort]
部分指定。
procs --sortd cpu
插入列
--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
- 按百分比
- 按状态
- 按单元
有一些特殊样式,例如 ByPercentage
、ByState
、ByUnit
。这些是值感知着色的样式。例如,如果选择 ByUnit
,则可以为每个值单位指定颜色(例如 K
、M
、G
等)。颜色可以在 [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_sid
是 false
,则SID完全显示如下
S-1-5-21-789457439-2186958450-1652286173-1001
如果 abbr_sid
是 true
,则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