当前位置:首页>Linux>Linux 必学目录:/sys/kernel

Linux 必学目录:/sys/kernel

  • 2026-09-18 17:32:40
Linux 必学目录:/sys/kernel
大家好!我是大虫子🐛!
今天继续 /sys 目录,这次分享的是 /sys/kernel 目录~
/sys/kernel 目录会把内核的运行状态、各类配置参数,通过文件系统的形式开放给用户空间。不管是系统管理员还是内核开发者,都能通过这个目录,方便地查看和内核行为、调试信息、性能监控相关的内容。
目录结构
该目录通常包含以下几个重要的子目录和文件:
1. /sys/kernel/hostname :系统主机名(最常用)
  • 作用:实时查看 / 临时修改当前系统主机名
  • 类型:可读可写
  • 查看:
cat /sys/kernel/hostname
  • 临时修改(重启失效):
echo "new-hostname" > /sys/kernel/hostname
对比和 hostname 命令等价,本质就是读写这个文件。
2. /sys/kernel/printk 内核日志输出级别(排错神器)
控制内核日志(dmesg)的输出级别,决定哪些内核信息会打印到控制台、日志文件。
  • 文件包含 4 个数字(以空格分隔):
控制台日志级别 | 默认消息级别 | 最低控制台级别 | 引导时默认级别
  • 常用操作(临时调高日志,方便排错):
# 查看当前级别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 安全策略
  • 查看 SELinux 状态:
    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 下的文件。
9. 其他高频小文件
  • /sys/kernel/osrelease:内核版本(同 uname -r)
  • /sys/kernel/version:内核编译版本信息
  • /sys/kernel/modprobe:模块加载相关
  • /sys/kernel/uevent:硬件热插拔事件(内核与 udev 通信)
关键文件和功能
  • 状态信息: 每个子目录通常包含许多状态信息文件,这些文件显示内核当前的配置和状态。例如,在 /sys/kernel/debug 下,你可以找到特定硬件的调试信息。
  • 控制文件: 文件如 /sys/kernel/printk 提供了控制内核日志行为的接口。这使得在调试时可以灵活地调整信息的详细程度。
  • 调试信息: /sys/kernel/debug 是进行内核调试的重要位置,尤其对开发者和系统管理员来说,能够帮助定位问题和分析性能。
实际应用
1. 内核调试:
  • 开发驱动程序时,可以利用 /sys/kernel/debug 中的信息来检查驱动是否正常工作。
  • 使用 ftrace 进行函数跟踪,以优化性能。
2. 性能监控:
  • 通过 /sys/kernel/perf 跟踪性能计数器,分析 CPU 的使用情况。
  • 在高负荷情况下,可以监控内存分配情况,确保没有出现内存泄漏。
3. 系统配置:
修改 /sys/kernel/printk 的设置,可以帮助识别在启动过程中遇到的问题,特别是在引导失败时。
小结
/sys/kernel 是 Linux 内核非常关键的一个目录,它直接向我们提供了一套查看和管理内核运行状态的文件接口。借助目录里的各类信息,我们可以很方便地监控系统性能、排查内核问题,甚至调整内核的运行行为。不管是日常运维、内核开发还是故障定位,搞懂 /sys/kernel 的结构和用途,都特别重要。

最新文章

随机文章