Linux:文件系统结构与启动过程深度解析
Linux 核心知识体系:文件系统结构与启动过程深度解析1. Linux 文件系统结构(FHS)文件系统层次结构标准(Filesystem Hierarchy Standard,FHS) 是 Linux 操作系统中文件和目录布局的规范。它确保了不同 Linux 发行版之间的一致性,便于软件管理、系统维护和可移植性。 FHS 的核心理念是将系统文件和用户数据、静态数据和可变数据进行逻辑分离,以实现系统稳定性、可管理性和多用户兼容性。 1.1 FHS 主要目录及其用途 / (根目录) 文件系统层次结构的起点,所有其他目录和文件都在其下。 只包含系统启动和运行所需的最少文件和目录。 /bin (用户二进制文件) 所有用户都可用的基本命令,如 ls, cp, mv。这些命令是单用户模式下系统启动和维护所必需的。 /sbin (系统二进制文件) 系统管理员使用的基本系统管理命令,如 fdisk, mkfs, reboot。通常用于系统启动、恢复和维护。 /etc (配置文件) 所有系统范围的配置文件,如 /etc/passwd, /etc/group, 服务配置文件。通常是文本...
find
find 是一个在 Linux 和类 Unix 系统中用于在文件系统中搜索文件和目录的强大命令行工具。它能够根据各种条件(如名称、大小、类型、修改时间、权限、所有者等)进行搜索,并对找到的文件执行指定的操作。 find 的核心作用是: 递归搜索:从指定目录开始,递归地遍历其所有子目录,查找符合条件的文件和目录。 多条件组合:支持使用逻辑运算符(AND, OR, NOT)组合多个搜索条件。 执行操作:对找到的文件执行命令(如删除、复制、移动、修改权限等)。 基本语法1find [路径] [表达式] **[路径]**:指定从哪个目录开始搜索。可以是一个或多个目录。如果省略,则默认为当前目录 (.)。 **[表达式]**:由选项、测试、动作和操作符组成,用于定义搜索条件和对找到的文件执行的操作。 如果路径是相对径,输出就是相对路径;如果是绝对路径,输出就是绝对路径。 find 的常用选项和用法示例1. 按名称或模式搜索 -name <pattern>:按文件名(或目录名)搜索,支持通配符(*, ?, [])。区分大小写。 12find . -name &qu...
hardware management
Linux 硬件管理1. CPU 和内存相关 lscpu top / htop free vmstat numactl 2. 硬盘与存储设备 lsblk fdisk parted blkid df du mount / umount smartctl(smartmontools 工具包) hdparm 2.1 lsblklsblk (list block devices) 是一个 Linux 命令行工具,用于列出系统中所有可用的块设备信息,比如硬盘、固态硬盘 (SSD)、U盘、分区以及逻辑卷等。它会以树状结构显示这些设备及其分区、逻辑卷或 RAID 阵列之间的层级关系。 好的,这是 lsblk 命令的常用选项列表,没有具体的例子: 常用选项: -a, --all:显示所有块设备,包括空设备或通常隐藏的设备。 -b, --bytes:以字节为单位显示设备大小。 -d, --nodeps:不打印设备的从属设备(例如,不显示磁盘下的分区)。 -D, --discard:显示设备的丢弃(TRIM/UNMAP)功能。 -f, --fs:显示文件系统信息(...
tcpdump
Tcpdumptcpdump 是一个强大的命令行工具,用于捕获和分析网络流量。它是网络管理员、安全专业人员和开发人员在 Linux/Unix-like 系统上进行网络故障排除、监控、安全审计和协议分析的必备工具。 你可以把 tcpdump 想象成是给你的网卡安装了一双“透视眼”: 它让你实时看到数据包是怎么在网络中穿梭的,从 MAC 层到 IP 层再到应用层,全都一览无遗。你不仅能“看到”别人说了什么(数据内容),还能知道他们从哪里来、去哪儿、用了哪种语言(协议)、走了哪条路(路由) 一、Tcpdump 核心概念:捕获与过滤tcpdump 的核心功能: 实时数据包捕获:tcpdump 可以实时地从网络接口捕获数据包,并将其内容打印到标准输出或保存到文件。 丰富的过滤表达式:它支持使用 BPF (Berkeley Packet Filter) 语法创建高度定制的过滤规则,只捕获你感兴趣的流量。 协议解析:tcpdump 可以解析多种网络协议的头部信息,包括 Ethernet, IP, TCP, UDP, ICMP, ARP, DNS, HTTP 等,并以可读的格式显...
iptables/nftables
在 Linux 中,最核心的防火墙管理工具是 Netfilter 框架,Netfilter 是 Linux 内核中的一个框架,它允许在网络数据包通过协议栈的不同阶段时进行截取、检查、修改和丢弃,而与它交互的主要命令行工具是 iptables 和 nftables。 许多 Linux 发行版还提供了更高级、更易于使用的前端工具,来简化防火墙的配置。 Ubuntu 及其衍生版本上默认的防火墙管理工具UFW, Red Hat 系列发行版(如 CentOS, RHEL, Fedora)上默认的动态防火墙管理工具Firewalld。 1. iptablesiptables 是一个非常强大且灵活的命令行工具,用于配置 Linux 内核中的 Netfilter 数据包过滤规则。它通过定义一系列的规则来决定如何处理网络流量。 工作原理: iptables 组织规则成**表 (tables),每个表包含多个链 (chains)**。数据包根据其类型(例如,传入、传出、转发)经过不同的链,并根据链中的规则进行匹配和处理。 表(Tables):iptables 的规则被组织成不同的“表”,每个表处理...
process management
进程是程序的执行实例,是操作系统资源分配的基本单位。 每个运行的程序在 Linux 中都是一个进程(具有独立的地址空间、代码段、堆、栈、数据段),包括 shell、nginx、mysqld、bash 等。 进程生命周期: 创建:通过 fork()、exec() 系列系统调用 就绪:等待内核调度 运行:CPU 调度运行中 阻塞:等待资源或事件(如 I/O) 终止:执行完毕或被杀死 僵尸:子进程结束但父进程未回收资源 进程状态 状态符 含义 说明 R Running 正在运行或可运行状态 S Sleeping 可中断的休眠 D Uninterruptible 不可中断(一般是 I/O 阻塞) T Stopped 被暂停或调试 Z Zombie 僵尸状态,需父进程回收 X Dead 已终止(很少见) psps 命令(process status 的缩写)用于报告当前系统中运行的进程快照。它提供了关于正在运行的进程的信息,包括它们的 PID(进程 ID)、TTY(终端)、运行时间、CPU 使用情况以及命令名称等。 ps...
Network Commands & Debugging
1. ip:现代网络配置与诊断工具ip 命令是 iproute2 工具集的核心,它已经取代了传统但逐渐过时的 ifconfig、route、arp 等命令,成为 Linux 系统上配置和诊断网络接口、路由表、IP 地址、ARP 缓存、隧道、IPSEC 等的首选工具。它的设计更符合现代网络协议栈,并且提供了更一致、更强大的语法。 核心功能ip 命令通过操纵内核的网络协议栈对象(如链路、地址、路由、邻居等)来管理和显示网络信息。它的通用语法是 ip [OPTIONS] OBJECT { COMMAND | help }。 深入解析与高级应用 对象 (Objects) 的理解: ip 命令的操作对象非常多,理解这些对象是掌握 ip 的关键: link: 网络设备(物理或虚拟接口,如 eth0, lo, br0, tun0)。 显示所有网络接口及其状态: ip link show (或 ip a 的简化输出) 启用/禁用接口: ip link set dev eth0 up / ip link set dev eth0 down (取代 ifc...
text processing
1. cat:连接文件并打印到标准输出cat (concatenate) 命令是最基本也是最常用的文本命令之一。它主要用于显示文件内容,但其核心功能是连接(concatenate)文件流。 核心功能: cat 读取一个或多个文件,然后将其内容按顺序输出到标准输出(通常是你的终端)。 基本用法: cat <文件>: 显示单个文件的内容。 示例: cat /etc/passwd cat <文件1> <文件2>: 连接两个或多个文件的内容并显示。 示例: cat file1.txt file2.txt cat > <文件>: 创建一个新文件并向其中写入内容。你输入的所有内容都会被重定向到文件中,直到你按下 Ctrl+D(表示文件结束)。 示例: cat > new_file.txt (输入内容,然后按 Ctrl+D) cat >> <文件>: 将内容追加到一个现有文件。 示例: cat >> existing_file.txt (输入内容,然后按 Ctrl+D) 常用选...
user and group management
Linux user and group management commands:User Management Commands useradd – Add a new user adduser – Add a new user (more user-friendly wrapper for useradd) usermod – Modify an existing user userdel – Delete a user passwd – Set or change user password chage – Manage user password expiry information id – Show user ID (UID), group ID (GID), and groups whoami – Display the current username 1. useradd:添加新用户useradd 命令用于在 Linux 系统中创建一个新的用户账户。它是创建用户的第一步,为用户在系统中分配一个独特的身份。 基本用途: 当你需要为新员工、新的服...
git push and deploy
之前通过本地生成public远程到gh-pages分支,都是在pc端编辑并部署,但随时需要手机编辑时,就像pc端一样就比较麻烦。 实现手机编辑并推送,同时电脑端也可以,建立两个仓库soure和static,配置github ations实现自动构建并部署,在source仓库下新建 .github/workflows/deploy.yml。其内容放在了source仓库根下。 1234567891011121314151617181920git remote -v # 查看当前远程他说配置,如果不是源仓库则更改git remote set-url origin https://github.com/xxxx/xxxx_source.git#如果要设置双远端,手机可以推送并部署,电脑也可以用之前方式部署git remote set-url origin https://github.com/xxx/xxx_source.gitgit remote add deploy git@github.com:xxxx/xxx.static.git# 上传源码git add ....
