今天继续 /sys 目录,这次分享的是 /sys/kernel 目录~/sys/kernel 目录会把内核的运行状态、各类配置参数,通过文件系统的形式开放给用户空间。不管是系统管理员还是内核开发者,都能通过这个目录,方便地查看和内核行为、调试信息、性能监控相关的内容。1. /sys/kernel/hostname :系统主机名(最常用)echo "new-hostname" > /sys/kernel/hostname
对比和 hostname 命令等价,本质就是读写这个文件。2. /sys/kernel/printk 内核日志输出级别(排错神器)控制内核日志(dmesg)的输出级别,决定哪些内核信息会打印到控制台、日志文件。控制台日志级别 | 默认消息级别 | 最低控制台级别 | 引导时默认级别
# 查看当前级别cat /sys/kernel/printk# 临时打开全部内核日志(调试用)echo "8 8 8 8" > /sys/kernel/printk
3. /sys/kernel/mm/ 内存管理子系统(性能调优核心)mm = Memory Management,内存管理的全部可调参数都在这里,是服务器性能优化高频目录。- /sys/kernel/mm/transparent_hugepage/:透明大页 THP(影响 Redis/MySQL/Nginx 性能)
- /sys/kernel/mm/min_free_kbytes:系统保留最小空闲内存(防 OOM、防业务卡顿)
- /sys/kernel/mm/oom_kill_allocating_task:OOM 时杀死分配内存的进程(快速定位内存溢出)
- /sys/kernel/mm/page_size:系统默认页大小(通常 4KB)
mount -t debugfs none /sys/kernel/debug
4. /sys/kernel/debug/ 内核调试文件系统(debug 专用)- 作用:内核开发者 / 高级排错用,挂载后暴露内核内部数据结构、锁状态、栈跟踪、驱动状态
mount -t debugfs none /sys/kernel/debug
- 场景:驱动崩溃、内核死锁、性能 profiling(perf 配合使用)
5. /sys/kernel/sched/ CPU 调度器配置(高并发优化)控制 Linux 进程 / 线程调度策略,对高并发、低延迟服务(网关、数据库、消息队列)至关重要。- /sys/kernel/sched/wakeup_granularity_ns:唤醒粒度(影响调度延迟)
- /sys/kernel/sched/min_granularity_ns:最小调度粒度
- /sys/kernel/sched/rt_*:实时进程调度相关
6. /sys/kernel/security/ 安全相关(SELinux/AppArmor/LSM)- /sys/kernel/security/selinux/:SELinux 状态与配置
- /sys/kernel/security/apparmor/:AppArmor 安全策略
cat /sys/kernel/security/selinux/enforce
7. /sys/kernel/power/ 电源管理(笔记本 / 嵌入式常用)- /sys/kernel/power/state:设置休眠状态(disk/mem/off)
- /sys/kernel/power/suspend_time:睡眠相关计时
8. /sys/kernel/cgroup/ 控制组(容器 / 云原生核心)cgroup v1/v2 接口,Docker/K8s 资源限制(CPU / 内存 / IO)的底层实现就在这里。- 容器的 CPU 限额、内存限流、POD 隔离,本质都是读写 /sys/kernel/cgroup 下的文件。
- /sys/kernel/osrelease:内核版本(同 uname -r)
- /sys/kernel/version:内核编译版本信息
- /sys/kernel/modprobe:模块加载相关
- /sys/kernel/uevent:硬件热插拔事件(内核与 udev 通信)
- 状态信息: 每个子目录通常包含许多状态信息文件,这些文件显示内核当前的配置和状态。例如,在 /sys/kernel/debug 下,你可以找到特定硬件的调试信息。
- 控制文件: 文件如 /sys/kernel/printk 提供了控制内核日志行为的接口。这使得在调试时可以灵活地调整信息的详细程度。
- 调试信息: /sys/kernel/debug 是进行内核调试的重要位置,尤其对开发者和系统管理员来说,能够帮助定位问题和分析性能。
- 开发驱动程序时,可以利用 /sys/kernel/debug 中的信息来检查驱动是否正常工作。
- 通过 /sys/kernel/perf 跟踪性能计数器,分析 CPU 的使用情况。
- 在高负荷情况下,可以监控内存分配情况,确保没有出现内存泄漏。
修改 /sys/kernel/printk 的设置,可以帮助识别在启动过程中遇到的问题,特别是在引导失败时。/sys/kernel 是 Linux 内核非常关键的一个目录,它直接向我们提供了一套查看和管理内核运行状态的文件接口。借助目录里的各类信息,我们可以很方便地监控系统性能、排查内核问题,甚至调整内核的运行行为。不管是日常运维、内核开发还是故障定位,搞懂 /sys/kernel 的结构和用途,都特别重要。