kmon

kmon

Linux内核模块管理与监控的文本界面工具

kmon是一个用于Linux内核管理和监控的开源工具。它提供文本用户界面,支持加载、卸载和查看内核模块信息,实时监控内核活动。kmon整合了多个Linux工具的功能,让用户可在单个终端窗口完成内核相关任务。该工具支持模块搜索、排序和黑名单等功能,操作界面简洁,快捷键丰富,适合Linux系统管理员使用。

Linux内核管理kmon模块管理系统监控Github开源项目
<p align="center"> <a href="https://github.com/orhun/kmon"> <img src="https://yellow-cdn.veclightyear.com/0a4dffa0/e7b2d2fa-1196-447b-ba55-7be83c13a94d.png" width="500"></a> <br> <b>Linux 内核管理器和活动监视器 🐧💻</b> <br> <br> <a href="https://github.com/orhun/kmon/releases"> <img src="https://img.shields.io/github/v/release/orhun/kmon?color=000000&style=flat-square"> </a> <a href="https://crates.io/crates/kmon/"> <img src="https://img.shields.io/crates/v/kmon?color=000000&style=flat-square"> </a> <a href="https://www.archlinux.org/packages/extra/x86_64/kmon/"> <img src="https://img.shields.io/archlinux/v/extra/x86_64/kmon?color=000000&style=flat-square"> </a> <br> <a href="https://github.com/orhun/kmon/actions?query=workflow%3A%22Continuous+Integration%22"> <img src="https://img.shields.io/github/actions/workflow/status/orhun/kmon/ci.yml?branch=master&color=000000&label=CI&style=flat-square"> </a> <a href="https://github.com/orhun/kmon/actions?query=workflow%3A%22Continuous+Deployment%22"> <img src="https://img.shields.io/github/actions/workflow/status/orhun/kmon/cd.yml?color=000000&label=CD&style=flat-square"> </a> <a href="https://codecov.io/gh/orhun/kmon"> <img src="https://img.shields.io/codecov/c/gh/orhun/kmon?color=000000&style=flat-square"> </a> <a href="https://github.com/orhun/kmon/blob/master/LICENSE"> <img src="https://img.shields.io/crates/l/kmon?color=000000&style=flat-square"> </a> <a href="https://github.com/orhun/kmon"> <img src="https://yellow-cdn.veclightyear.com/0a4dffa0/a4833cb9-d053-4635-8284-1f93f4359f94.gif"> </a> </p>

内核是操作系统的一部分,负责协调硬件和软件组件之间的交互。在大多数系统中,它在启动时由引导加载程序加载,并处理I/O请求以及键盘、显示器、网络适配器和扬声器等外围设备。通常,内核负责内存管理进程管理设备管理系统调用安全

应用程序使用系统调用机制向操作系统请求服务,大多数情况下,这个请求通过操作系统提供的库传递给内核,以调用相关的内核函数。当内核执行这些底层任务时,它驻留在内存的一个单独部分,称为受保护的内核空间,应用程序和系统的其他部分无法访问。相比之下,浏览器、文本编辑器、窗口管理器或音视频播放器等应用程序使用内存的另一个单独区域,即用户空间。这种分离防止用户数据和内核数据相互干扰并导致不稳定和速度变慢,同时也防止运行不正常的应用程序使整个操作系统崩溃。

由于管理系统调用和资源的方式不同,存在着不同的内核设计。例如,宏内核为了速度将所有操作系统指令运行在同一地址空间,而微内核为了模块化在不同的空间运行用户和内核服务。除此之外,还有混合内核纳内核外内核。混合内核架构基于结合微内核和宏内核的特点。

Linux内核是开源的、宏内核的、类Unix操作系统内核,用于Linux发行版、各种嵌入式系统(如路由器)以及所有基于Android的系统。Linus Torvalds于1991年构思并创建了Linux内核,至今仍有成千上万的开发者在开发它。它是自由开源软件的突出例子,也用于其他自由软件项目,尤其是GNU操作系统

尽管基于Linux的操作系统主导了大部分计算领域,但它仍然存在一些在Linux早期就有争议的设计缺陷。例如,与其他类型的内核相比,它具有最大的占用空间最高的复杂性。但这是宏内核固有的设计特征。这些设计问题促使开发者为Linux内核添加了其他内核没有的新功能和机制。

与标准宏内核不同,Linux内核也是模块化的,接受可加载内核模块(LKM),通常用于添加新硬件支持(作为设备驱动程序)和/或文件系统,或添加系统调用。由于LKM可以在运行时加载和卸载到系统中,它们具有无需重启和重新编译就能扩展内核的优势。因此,模块提供的内核功能在不使用时不会占用内存,相关模块可以卸载以释放内存和其他资源。

可加载内核模块位于Linux的/lib/modules目录下,扩展名为.ko(内核对象)。可以使用lsmod命令列出已加载的内核模块,使用modprobeinsmod/rmmod加载或卸载内核模块。insmod/rmmod用于独立于modprobe的模块,无需安装到/lib/modules/$(uname -r)

以下是一个简单的Linux内核模块示例,在加载和卸载时打印消息。使用Makefile构建和安装模块的步骤如下。

make                         # 构建
sudo make install            # 安装
sudo modprobe lkm_example    # 加载
sudo modprobe -r lkm_example # 卸载

下面使用dmesg命令检索内核的消息缓冲区。

[16994.295552] [+] Example kernel module loaded.
[16996.325674] [-] Example kernel module unloaded.

kmon提供了一个基于文本的用户界面,用于管理Linux内核模块和监控内核活动。管理指的是加载、卸载、黑名单和显示模块信息。可以通过kmon的实时活动监视器跟踪内核模块的这些更新、硬件日志和其他内核消息。由于Linux中这些任务需要使用不同的工具,如dmesgkmod,kmon旨在将它们集中在一个终端窗口中,尽可能简化使用,同时保持功能性。 kmon 使用 Rust 编写,并使用 Ratatuitermion 库实现其基于文本的用户界面。

目录

<!-- vim-markdown-toc GFM --> <!-- vim-markdown-toc -->

安装

打包状态

Cargo

如果已安装 Rust,可以使用 Cargo 从 crates.io 安装 kmon

cargo install kmon

最低支持的 Rust 版本 (MSRV) 为 1.70.0

Arch Linux

可以从 Arch Linux 官方仓库 安装 kmon

pacman -S kmon

AUR 上也有开发版本的软件包。使用你喜欢的 AUR 助手 进行安装。例如,

paru -S kmon-git

Nixpkgs

可以使用 Nix 包管理器nixpkgs-unstable 频道安装 kmon

nix-channel --add https://nixos.org/channels/nixpkgs-unstable
nix-channel --update nixpkgs
nix-env -iA nixpkgs.kmon

NixOS 上:

nix-channel --add https://nixos.org/channels/nixos-unstable
nix-channel --update nixos
nix-env -iA nixos.kmon

Alpine Linux

kmon 可用于 Alpine Edge。在启用 community 仓库 后,可以通过 apk 安装。

apk add kmon

Docker

Docker Hub 构建状态

docker run -it --cap-add syslog orhunp/kmon:标签名

构建

docker build -t kmon .

运行

docker run -it --cap-add syslog kmon

手动安装

  1. releases 部分下载最新的二进制文件,并选择 glibcmusl-libc 二进制文件。
  2. 要下载使用 glibc 编译的软件包,请运行:
wget https://github.com/orhun/kmon/releases/download/v[版本]/kmon-[版本]-x86_64-unknown-linux-gnu.tar.gz
  1. 要下载使用 musl-libc 编译的软件包,请运行:
wget https://github.com/orhun/kmon/releases/download/v[版本]/kmon-[版本]-x86_64-unknown-linux-musl.tar.gz
  1. 解压文件。
tar -xvzf kmon-*.tar.gz
  1. 进入新文件夹。
cd kmon-[版本]
  1. 运行二进制文件。
./kmon
  1. 将二进制文件移动到 /usr/local/bin/,以便从终端使用 kmon 命令运行它。

  2. 手册页和 shell 补全在构建时生成于 target 目录中。

注意

应安装 libxcb 以使用 X11 的复制/粘贴命令。

例如:对于 Debian/Ubuntu* 安装 libxcb1-dev 包,对于 Fedora/openSUSE/Void Linux 安装 libxcb-devel 包。

使用方法

kmon [选项] [命令]

选项

-a, --accent-color <颜色>  设置强调色,使用十六进制值或颜色名称 [默认: 白色]
-c, --color <颜色>         设置主色,使用十六进制值或颜色名称 [默认: 深灰色]
-t, --tickrate <毫秒>      设置终端刷新率 [默认: 250]
-r, --reverse              反转内核模块列表
-u, --unicode              使用Unicode符号显示区块标题
-h, --help                 打印帮助信息
-V, --version              打印版本信息

命令

sort  排序内核模块

排序

kmon sort [选项]

选项:

-s, --size       按大小排序模块
-n, --name       按名称排序模块
-d, --dependent  按依赖模块数量排序模块
-h, --help       打印帮助信息

快捷键

[?], F1帮助
右/左, h/l在区块间切换
上/下, k/j, alt-k/j上下滚动 [选中的区块]
pgup/pgdown上下滚动 [内核活动]
</>上下滚动 [模块信息]
alt-h/l左右滚动 [内核活动]
ctrl-t/b, home/end滚动到顶部/底部 [模块列表]
alt-e/s展开/收缩选中的区块
ctrl-x更改区块位置
ctrl-l/u, alt-c清除内核环形缓冲区
[d], alt-d显示依赖模块
[1]..[9]跳转到依赖模块
[\], tab, backtab显示下一个内核信息
[/], s, enter搜索内核模块
[+], i, insert加载内核模块
[-], u, backspace卸载内核模块
[x], b, delete将内核模块加入黑名单
ctrl-r, alt-r重新加载内核模块
m, o显示选项菜单
y/n执行/取消命令
c/v复制/粘贴
r, F5刷新
q, ctrl-c/d, ESC退出

功能

帮助

运行终端UI时按 '?' 键查看快捷键。

帮助

导航和滚动

使用 方向键 在区块间导航和滚动。

导航和滚动

滚动内核活动

某些内核消息可能太长而无法完全显示在内核活动区块中,因为它们没有自动换行。在这种情况下,可以使用 alt-h 和 alt-l 键水平滚动内核活动。垂直滚动机制与其他区块相同。

滚动内核活动

平滑滚动

使用 alt-j 和 alt-k 键可以慢速滚动内核活动和模块信息区块。

平滑滚动

选项菜单

mo 键可用作内核管理操作的快捷键。按下时,将提供一个选项菜单用于管理当前选中的内核模块。

选项菜单

区块大小

使用 alt-e 和 alt-s 键可以展开/收缩选中的区块。

区块大小

区块位置

使用 ctrl-x 键可以更改区块的位置。

区块位置

内核信息

使用 \, tab, backtab 键之一切换内核发行版、版本和平台信息。

内核信息

模块信息

选中时显示内核模块的状态。

模块信息

显示依赖模块

使用 d, alt-d 键之一显示选中模块的所有依赖模块。

显示依赖模块

跳转到依赖模块

要从父模块跳转到依赖内核模块,可以使用 数字键 (1-9) 指定 Used By 列中模块的索引。

依赖信息

搜索模块

使用方向键或 /, s, enter 键之一切换到搜索区域,并输入模块名称的搜索查询。

搜索模块

加载模块

要向Linux内核添加模块,使用 +, i, insert 键之一切换到加载模式,并提供要加载的模块名称。然后使用 y/n 确认/取消执行加载命令。

加载模块

用于加载模块的命令:

modprobe <模块名称> || insmod <模块名称>.ko

卸载模块

使用 -, u, backspace 键之一从Linux内核中移除选中的模块。

卸载模块

用于移除模块的命令:

modprobe -r <模块名称> || rmmod <模块名称>

将模块列入黑名单

列入黑名单是一种阻止内核模块加载的机制。要将所选模块列入黑名单,请使用 x、b、delete 键之一并确认执行。

将模块列入黑名单

用于将模块列入黑名单的命令:

if ! grep -q <模块名称> /etc/modprobe.d/blacklist.conf; then
  echo 'blacklist <模块名称>' >> /etc/modprobe.d/blacklist.conf
  echo 'install <模块名称> /bin/false' >> /etc/modprobe.d/blacklist.conf
fi

重新加载模块

使用 ctrl-ralt-r 键重新加载所选模块。

重新加载模块

用于重新加载模块的命令:

modprobe -r <模块名称> || rmmod <模块名称> && modprobe <模块名称> || insmod <模块名称>.ko

清除内核环形缓冲区

可以使用 ctrl-l/u、alt-c 键之一清除内核环形缓冲区。

清除环形缓冲区

dmesg --clear

复制和粘贴

c/v 键用于复制/粘贴操作。

复制和粘贴

在输入模式下使用 ctrl-c/ctrl-v 进行复制和粘贴。

对内核模块进行排序/反转

可以使用 sort 子命令按名称、大小或依赖模块对内核模块进行排序。

kmon sort --name
kmon sort --size
kmon sort --dependent

对内核模块排序

同时,-r, --reverse 标志用于反转内核模块列表。

kmon --reverse

反转内核模块

自定义颜色

kmon 默认使用终端的颜色,但可以通过 -c, --color 选项指定高亮颜色。另外,可以通过 -a, --accent-color 选项设置默认文本颜色。

支持的颜色

支持的终端颜色有 黑色、红色、绿色、黄色、蓝色、洋红色、青色、灰色、深灰色、浅红色、浅绿色、浅黄色、浅蓝色、浅洋红色、浅青色、白色

kmon --color red

支持的颜色

使用自定义颜色

提供要使用的颜色的十六进制值。

kmon --color 19683a

使用自定义颜色

更改强调色

在某些具有透明度的主题上,默认文本颜色可能会导致可读性问题。可以使用 -a, --accent-color 选项,类似于 -c, --color 选项,来解决此问题。

kmon --color 6f849c --accent-color e35760

更改强调色

Unicode 符号

使用 -u, --unicode 标志显示块标题的 Unicode 符号。

kmon --unicode

Unicode 符号

设置终端刷新率

-t, --tickrate 选项可用于以毫秒为单位设置终端 UI 的刷新间隔。

设置终端刷新率

路线图

kmon 的目标是成为一个标准的 Linux 内核管理工具,同时支持大多数 Linux 发行版。

可访问性

为实现此目标,kmon 应该可以从不同的包管理器(如 Snap*RPM)访问。

依赖项

系统需要有如 dmesgkmod 等基本工具,以便 kmon 能按预期工作。因此,下一步将是仅使用系统资源来实现这些功能。

功能

kmon 应该能够执行有关 Linux 内核的管理操作,以最大限度地减少对命令行和其他工具的依赖。

测试

应在不同的架构上测试和报告 kmon,以进一步开发和支持。

资源

关于项目

文章

媒体报道

图库

Fedora 31Debian 10Manjaro 19
kmon在Fedora上kmon在Debian上kmon在Manjaro上
Ubuntu 18.04openSUSEVoid Linux
kmon在Ubuntu上kmon在openSUSE上kmon在Void Linux上

社交媒体

资助

GitHub

通过在GitHub赞助上支持我来支持我项目的开发。

Patreon

Patreon按钮

Open Collective

Open Collective支持者 Open Collective赞助商

通过成为支持者赞助商来支持开源开发工作。

Open Collective按钮

许可证

GNU通用公共许可证(3.0

版权

版权所有 © 2020-2024,Orhun Parmaksız

编辑推荐精选

TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

热门AI工具生产力协作转型TraeAI IDE
蛙蛙写作

蛙蛙写作

AI小说写作助手,一站式润色、改写、扩写

蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。

AI助手AI工具AI写作工具AI辅助写作蛙蛙写作学术助手办公助手营销助手
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

聊天机器人AI助手热门AI工具AI对话
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

热门AI工具AI办公办公工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

模型训练热门AI工具内容创作智能问答AI开发讯飞星火大模型多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

AI助手热门AI工具AI创作AI辅助写作讯飞绘文内容运营个性化文章多平台分发
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

下拉加载更多