Linux相关知识积累

Linux相关知识积累

Linux系统启动流程

Linux 系统的启动流程是一个复杂且有序的过程,
涉及:
1、硬件初始化;
2、Bootloader 引导程序加载、
3、内核启动、
4、用户空间初始化等多个阶段。

关键组件总结

阶段核心组件/工具作用
固件启动BIOS/UEFI硬件自检,定位引导设备
引导加载GRUB2/LILO加载内核和 initramfs,提供启动菜单
内核初始化vmlinuz + initramfs检测硬件、加载驱动、挂载根文件系统
init 进程systemd/upstart/init启动用户空间服务,管理系统目标和依赖
服务管理systemd 单元文件定义服务启动顺序、依赖关系和资源限制
登录环境getty/GDM/LightDM提供登录界面,初始化用户会话

Linux文件系统

Linux 根目录核心目录分类表

Linux 根目录(/)下主要目录的分类表格,按功能划分并标注核心用途和注意事项:

类别目录名称路径主要用途注意事项
系统核心(必需)/bin/bin存放所有用户可用的基本命令(二进制可执行文件),如 lscpsh 等。系统启动必需,即使根目录只读也可访问;所有用户可读可执行。
/sbin/sbin存放系统管理命令(如 rebootshutdown),通常仅 root 用户可用。/bin 类似,供系统维护使用,非日常用户命令。
/etc/etc存储系统和程序的配置文件(文本文件),如用户信息、网络配置、服务启动脚本等。非运行时文件,修改后需重启服务生效;建议定期备份。
/boot/boot存放系统启动文件(内核、引导程序、初始化文件),如 vmlinuzgrub/通常单独分区,避免根目录空间不足导致无法启动;权限严格(仅 root 可写)。
/dev/dev存储设备文件(块设备、字符设备、特殊文件),如 /dev/sda/dev/null内核动态生成,内容随硬件变化;通过文件访问硬件设备(“一切皆文件”)。
用户与程序数据/home/home普通用户的主目录(每个用户一个子目录,如 /home/user),存储个人数据和配置。通常单独分区,用户数据与系统分离;权限为用户私有(700)。
/root/root管理员(root 用户)的主目录,存储其配置文件和脚本。与普通用户 home 分离,权限更严格(仅 root 可访问)。
/usr/usr存放用户共享的只读数据(程序、库、文档),类似 “Program Files”。子目录 /usr/bin(普通命令)、/usr/lib(库文件)、/usr/share(资源文件);只读,系统升级时可整体替换。
/opt/opt第三方软件安装目录(如 nginxtomcat),通常以厂商命名。非系统必需,用户自定义安装路径;权限需 root 控制。
运行时数据/tmp/tmp临时文件目录,所有用户可读写,系统重启后清空(部分文件保留短时间)。权限 1777(防删除);不建议存储重要数据。
/var/var存放运行时可变数据(日志、缓存、队列),如 /var/log(日志)、/var/lib(程序数据)。子目录功能细分(如日志、数据库);通常单独分区,避免占用根目录空间。
/run/run存储系统运行时临时数据(进程 PID、套接字文件),等效于 /var/run 的符号链接。系统启动后创建,关机后清空;比 /var 更“临时”。
文件系统与设备/mnt/mnt手动挂载点(临时挂载 U 盘、NFS 共享等),如 mount /dev/sdb1 /mnt/usb传统用法,现代系统多使用 /media(自动挂载);需 root 权限操作。
/media/media自动挂载点(系统或桌面环境自动挂载可拆卸设备,如 U 盘、CD-ROM)。插入设备后自动创建,权限随设备类型变化。
/proc/proc虚拟文件系统,映射内核运行时信息(进程、硬件状态),如 /proc/cpuinfo非真实磁盘文件,内容由内核动态生成;用于监控和调试(如查看进程状态)。
/sys/sys虚拟文件系统,提供内核设备驱动和系统配置接口(比 /proc 更结构化)。支持动态修改内核参数(如设备属性);需 root 权限操作敏感文件。
/srv/srv存放服务器提供的服务数据(如 Web 网页、FTP 文件),如 /srv/www由服务自身管理,非系统必需;权限根据服务配置调整。
特殊目录/lost+found/lost+found文件系统检查(fsck)时恢复的损坏文件存放目录。每个分区独立存在,如根分区和 /home 分区各有一个;手动恢复文件需谨慎。
/selinux/selinux存储 SELinux 安全策略和配置文件(仅当启用 SELinux 时存在)。Linux 安全增强模块,控制进程对文件的访问权限;需单独配置策略。
/bin/sh/bin/sh指向默认 shell 的符号链接(通常指向 /usr/bin/bash/bin/dash)。

Linux查看系统资源相关命令及意义

cat /proc/meminfo

在这里插入图片描述

top命令

在这里插入图片描述

htop

与 top 命令类似, 但 htop 还展示了其他的各种信息, 而且支持彩色显示
在这里插入图片描述
在这里插入图片描述

free

在这里插入图片描述

vmstat

在这里插入图片描述

进程间通信

底层实现的核心差异

IPC方式数据中转位置跨进程访问机制同步控制实现
管道内核环形缓冲区文件描述符共享(无名)/路径打开(FIFO)内核等待队列(自动阻塞)
消息队列内核消息链表队列ID(System V)或路径(POSIX)内核队列容量检查
共享内存物理内存(共享映射)虚拟地址映射(修改页表)用户态同步机制(信号量等)
信号量内核计数器信号量ID(System V)或命名(POSIX)内核原子操作+等待队列
信号无(仅事件通知)进程PID标识内核信号掩码+处理函数表
套接字内核套接字缓冲区网络地址/本地路径协议栈状态机(网络)/缓冲区锁(本地)

内核信息排查命令dmseg

dmesg 命令用于显示 Linux 内核环形缓冲区(Ring Buffer)中的日志信息,主要包含内核启动、运行时状态、硬件交互、驱动行为及错误警告等关键内容。以下是其输出的主要信息分类及说明:

一、系统启动与初始化信息

信息类型具体内容
内核版本与编译信息内核版本号、编译时间、架构(如 Linux version 6.2.0-34-generic)、编译选项等。
硬件检测日志CPU 型号、核心数、缓存信息;内存容量、控制器;主板、固件(BIOS/UEFI)版本等。
设备初始化日志存储设备(硬盘、SSD)、网络设备(网卡)、USB 设备、显卡、声卡等的探测与驱动加载过程。
文件系统与进程初始化根文件系统挂载(如 VFS: Mounted root (ext4 filesystem) readonly on device ...)、init 进程启动等。

二、运行时内核事件

信息类型具体内容
模块加载与卸载内核模块(如驱动、文件系统)的加载/卸载状态(如 usbcore: registered new interface driver usb-storage)。
资源管理事件内存分配/释放(如 OOM Killer 触发时的日志:Out of memory: Killed process ...)、CPU 调度事件等。
设备状态变更设备热插拔(如 USB 设备插入/拔出)、网络连接状态变化(如 e1000: eth0: Link is up)。
文件系统操作磁盘分区挂载/卸载、文件系统错误(如 EXT4-fs error (device sda1): ...)。

三、错误与警告信息

信息类型具体内容
严重错误(致命问题)内核崩溃(Oops/Panic)、硬件致命故障(如内存校验错误、CPU 异常)。
非致命错误驱动初始化失败(如 Failed to initialize device)、设备通信超时(如 scsi host0: Timeout sending cmd)。
警告与异常资源不足(如 Possible missing firmware for ...)、配置异常(如 Module was built with kernel version ... which is different from current kernel version)。

四、调试与详细信息

信息类型具体内容
驱动调试日志内核开发者通过 printk 添加的调试信息(需内核开启调试选项,如 CONFIG_DEBUG_KERNEL)。
子系统状态内核子系统(如调度器、内存管理、网络协议栈)的详细运行状态(如 TCP: Hash tables configured)。
固件交互日志与 BIOS/UEFI、ACPI、设备固件的交互细节(如 ACPI: Interpreter enabled)。

五、日志格式与关键字段

dmesg 输出的每条日志通常包含以下字段(以示例说明):

[    0.000000] Linux version 6.2.0-34-generic (builduser@buildhost) (x86_64-linux-gnu-gcc-12 (Ubuntu 12.3.0-1ubuntu1~22.04) 12.3.0, GNU ld (GNU Binutils for Ubuntu) 2.38) #34-Ubuntu SMP PREEMPT_DYNAMIC Thu Mar 21 12:54:29 UTC 2024
  • 时间戳[0.000000] 表示系统启动后的秒数(可通过 dmesg --time-format iso 显示绝对时间)。
  • 模块/子系统名:如 usbcoreEXT4-fs,标识日志来源。
  • 日志内容:具体事件描述,包含状态、错误码、设备名称等关键信息。

六、日志级别与过滤

dmesg 会显示内核定义的 7 级日志级别(数值越小优先级越高,详见下表),可通过 grep 或日志级别参数过滤特定信息:

日志级别宏定义数值典型场景
紧急KERN_EMERG0内核崩溃、硬件致命错误(如 PANIC)
严重错误KERN_CRIT2OOM Killer 触发、磁盘 I/O 错误
错误KERN_ERR3驱动初始化失败、网络连接超时
警告KERN_WARNING4资源不足、固件缺失警告
信息KERN_INFO6设备正常识别、模块加载成功
调试KERN_DEBUG7内核调试信息(需手动开启)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值