Linux 操作系统结构与日志体系

Linux 操作系统结构

                                       [用户空间]
────────────────────────────────────────────────
 应用程序:MySQL / Nginx / Mosquitto / Python
 系统组件: systemd / sshd / bash / 系统库 / 工具
 ────────────────────────────────────────────────
                 │
                 │ 系统调用
                 ↓                      [内核空间]
────────────────────────────────────────────────
             Kernel
      进程 / 内存 / VFS / 网络 / 驱动
                 │
                 ↓                      [硬件资源]
────────────────────────────────────────────────
         硬件: CPU / 内存 / 磁盘 / 网卡 等

操作系统可以理解为就是介于计算机硬件 和 应用程序之间的一种基础系统软件,两个作用:

  • 管理计算机资源

  • 屏蔽底层硬件复杂性,为应用程序提供统一接口和运行环境

操作系统的简化模型:

  • 操作系统的核心是内核,内核负责 CPU 调度、内存管理、进程管理、文件系统、网络协议栈、设备驱动 等核心功能,并提供系统调用接口。

  • 在内核之上还有系统库、系统服务、工具、接口等,是利用内核提供的能力实现更高层的系统功能。

Linux 日志体系结构

                         日志产生者
                            │
             ┌──────────────┴────────────────────┐
             │                                   │
          Kernel                             用户空间程序
             │                                   │         
             │                                   │     
             ↓                                   │
     Kernel Ring Buffer                          │
        │         │                              │
        │         │                              │
        ↓         └───────────┌──────────────────┐
      dmesg                   ↓                  ↓ 
                       systemd-journald     自己直接写日志文件
                              │
                 ┌────────────┴─────────────┐
                 │                          │
                 ↓                          ↓
           journal日志存储              转发日志消息(将日志消息转发给 rsyslog)
                 │                           │
                 ↓                           ↓
            journalctl                    rsyslog
                                              │
                                   ┌──────────┼─────────┐
                                   ↓          ↓         ↓
                                 日志文件   远程日志   其他处理

日志本质上就是某段程序代码主动记录出来的信息,是程序运行过程中,主动记录相关信息,让人知道某个时刻发生了什么。

日志可以分为 内核产生的日志 和 用户空间程序产生的日志 两大类:

  • 因为内核本质也是程序代码,内核程序代码主动打印的日志,在 Linux 中可以通过 dmesg 或 journalctl -k 查看。

  • 用户空间程序产生的日志,一种是直接写入对应文件存储,另一种是通过日志系统来统一管理。

很多现代 Linux 发行版会同时使用 systemd-journald 和 rsyslog

  • 现在操作系统使用 systemd 做为 PID 为1 的进程,systemd 体系引入了 systemd-journald 作为日志收集组件;

  • 但是很多 Linux 发行版仍然同时部署 rsyslog,用于传统文本日志、日志分类和远程日志转发等功能。

查看内核日志有两种方式:

  • 通过 dmesg 工具:直接从 Kernel Ring Buffer(内核环形缓冲区) 中读取日志信息,重启会被清空,所以只能看到机器开机到当前的日志信息,并且 Ring Buffer 容量有限,较早的日志可能被后续日志覆盖,不能保证看到当前启动以来的全部内核日志

  • 通过 journalctl -k:systemd-journald 收集日志,并使用自己的二进制 journal 格式进行存储,通过 -k 看到的就是内核日志。

posted on 2026-08-17 18:53  一直小爪子  阅读(4)  评论(0)    收藏  举报