鸟哥的私房菜:高级文件系统管理
一、软件磁盘阵列 (Software RAID)1.1 RAID 基础概念1.1.1 RAID 定义与目标 全称:Redundant Arrays of Independent Disks(独立容错式磁盘阵列) 核心目标:扩大磁盘容量、实现磁盘容错、提升读写性能 分类:硬件 RAID(独立 RAID 芯片)与软件 RAID(通过 mdadm 软件实现) 1.1.2 常见 RAID 级别对比 RAID 级别 最少磁盘数 容错能力 可用容量 性能特点 适用场景 RAID 0 2 无 n×磁盘容量 读写性能最佳 临时存储、非关键数据 RAID 1 2 n-1 50%磁盘容量 读性能提升,写性能不变 数据备份、高可用性 RAID 10 4 每组 RAID1 容错 50%磁盘容量 高性能 + 高容错 数据库服务器 RAID 5 3 1 (n-1)×磁盘容量 读写性能均衡 企业级存储 RAID 6 4 2 (n-2)×磁盘容量 更强容错,性能略降 关键业务数据 1.2 软件 RAID 实践 (mdadm)1.2.1 创建 RAID 阵列123456#...
鸟哥的私房菜:服务管理与开机流程管理
一、服务管理基础1.1 程序信号与 kill 命令在 Linux 操作系统中,信号(signal)作为进程间通信的重要机制,用于实现对程序运行状态的控制。常见的信号类型包括: SIGHUP(1):触发程序重新加载配置文件,在不中断服务的情况下实现配置更新 SIGINT(2):向进程发送中断请求,功能等同于用户在终端执行 Ctrl+C 操作 SIGKILL(9):强制执行进程终止操作,该信号不可被捕获或忽略 SIGTERM(15):请求进程正常终止,允许程序执行必要的清理工作 SIGSTOP(19):暂停进程的执行,等效于终端操作中的 Ctrl+Z kill 命令作为信号发送的核心工具,其语法结构如下: 12kill -信号 PID # 向指定进程标识符(PID)发送信号killall -信号 程序名 # 向所有匹配程序名的进程实例发送信号 例如,通过执行 kill -1 748 命令,可使 rsyslogd 服务重新加载配置文件,实现动态配置更新。 1.2 systemd 服务管理机制systemd 作为 Linux...
鸟哥的私房菜:软件管理与安装及登录文件初探
一、主流 Linux 软件管理机制目前主流 Linux 发行版使用的软件管理机制主要有两类: 发行版代表 软件管理机制 使用指令 线上升级机制 (指令) Red Hat/Fedora RPM rpm, rpmbuild YUM (yum, dnf) Debian/Ubuntu DPKG dpkg APT (apt-get) RockyLinux RPM rpm, rpmbuild YUM (yum, dnf) 二、RPM 基础概念2.1 RPM 简介 全称:RedHat Package Manager 特点:以数据库记录方式管理软件安装,安装前检查依赖关系 优势: 预编译打包,安装方便 数据库记录软件信息,便于查询、升级和反安装 SRPM:含源代码的 RPM 包,用于自定义修改软件参数 2.2 RPM 软件命名规则以 chrony-4.2-1.el9.rocky.1.0.x86_64.rpm 为例: 12chrony- 4.2- 1. el9.rocky.1.0.x86\_64 ...
Linux:输入输出与文件操作函数学习笔记整理
导言在 C 语言的编程世界里,输入输出以及文件操作是与外界交互、处理数据存储的重要环节。scanf、printf、open、fopen、read、fread、write、fwrite、fseek、lseek、mmap这些函数各司其职,共同构建起强大的数据处理体系。本文将详细介绍这些函数的功能、用法、示例,并进行对比分析。 一、标准输入输出函数:scanf 与 printf1. printf 函数及其变体printf函数是 C 标准输入输出库(stdio.h)中用于格式化输出的函数,其原型为int printf(const char *format, ...)。其中,format是格式控制字符串,包含普通文本和格式说明符;...表示可变参数列表。 123456789#include <stdio.h>int main() { int num = 10; float f = 3.14; char str[] = "Hello, World!"; ...
鸟哥的私房菜:基础设置、备份、文件压缩打包与工作排程
一、网络设定RockyLinux 9 通过 Network Manager 服务管理网络,使用 nmcli 指令配置。 查看网络信息:用 ip link show 查看网络接口,nmcli connection show 查询连接代号。如需重建连接,可执行 nmcli connection delete ens3 和 nmcli connection add con-name ens3 ifname ens3 type ethernet。 关键参数:connection.autoconnect 控制开机自启,ipv4.method 设为 auto 自动获取 IP,设为 manual 则手动配置。 设定 IP:自动获取时,nmcli connection modify ens3 ipv4.method auto 并启用;手动配置示例: 1234567nmcli connection modify ens3 \connection.autoconnect yes \ipv4.method manual \ipv4.addresses 172.16.50.1/16...
鸟哥的私房菜:用户管理与 ACL 权限设置
一、Linux 账号之 UID 与 GID1.1 账号信息存储与 UID/GID 范围Linux 系统通过特定文件记录账号的 UID(用户标识符)与 GID(组标识符)信息。/etc/passwd文件记录 UID,同时也包含 GID 相关信息;/etc/group文件则专门记录 GID 以及组成员信息。 ID 范围 使用者特性 0 系统管理员账号,拥有最高权限 1 - 999 系统账号,用于系统服务运行等,1 - 200 由系统发行版自行建立,201 - 999 可供用户按需创建系统账号 1000 - 60000 普通用户账号,供日常使用 1.2 账号文件结构与解析 /etc/passwd文件:以冒号分隔,包含七个字段,具体含义如下: 账号名称:用户登录系统使用的名称。 密码:早期存储加密密码,现已移至/etc/shadow,此处通常为x。 UID:用户标识符,唯一标识用户。 GID:用户初始群组的 ID。 使用者信息说明栏:可记录用户相关信息,如姓名等。 家目录所在处:用户登录后的默认工作目录。 预设登入时所取得的 shell...
鸟哥的私房菜:正规表示法与 shell script 学习整理
一、正规表示法的理论与实践1.1 grep 指令的应用范式grep 作为基于正规表示法的基础文本搜索工具,通过 grep [选项] 模式 文件名 的语法结构实现文本匹配功能。在系统配置文件检索场景中,命令 grep -n student /etc/passwd 可精准定位包含 "student" 字符串的行,并输出行号信息。面对系统日志数据处理需求,如筛选 dmesg 命令输出的网卡 ens3 相关日志,可采用管道技术结合选项参数实现:dmesg | grep -n -i ens3。此外,-A 与 -B 选项支持上下文信息输出,-v 选项则实现反向匹配,例如 df | grep -v tmpfs 可过滤掉临时文件系统信息,聚焦常规文件系统数据展示。 1.2 正规表示法的符号语义体系正规表示法通过特定元字符构建强大的模式匹配规则: 定位符:^ 匹配行首,$ 匹配行尾,如 grep -n '^#' regular_express.txt 可检索注释行 通配符:. 匹配任意单个字符,\ 用于转义特殊字符 重复限定符:*...
Linux:stat 与 fstat 函数学习笔记
一、函数概述在 UNIX 和 Linux 系统编程中,stat和fstat用于获取文件状态信息,如大小、权限、修改时间等,信息存于struct stat结构体。二者功能相似,但参数类型和使用场景不同,合理使用可提升文件操作效率。 二、函数原型与参数对比 函数 原型 参数说明 stat int stat(const char *pathname, struct stat *statbuf); pathname:文件路径;statbuf:存储信息的结构体指针 fstat int fstat(int fd, struct stat *statbuf); fd:已打开文件描述符;statbuf:存储信息的结构体指针 stat依赖文件路径,适用于文件未打开时;fstat基于文件描述符,需文件已打开。 三、返回值与结构体信息成功返回0,填充struct stat结构体;失败返回-1,设置errno。结构体常见字段包括设备 ID、inode 编号、权限等。 四、核心差异分析4.1 参数类型差异stat用路径名,如stat("example.txt",...
鸟哥的私房菜:bash 指令连续下达与数据流重导向
一、连续指令的下达1.1 指令返回值在 Bash shell 环境中,特殊符号承担着指令执行、变量处理等核心功能。其中,var=${}用于变量替换;var=$( )可嵌入指令执行结果;var=$(( ))实现数学运算;var=" "保留特殊字符功能;var=' '将内容解析为纯文本;反引号 () 与$( )` 功能等效,均用于指令执行并获取结果。 指令执行后的退出状态码(exit status)是评估执行结果的重要指标。依据 Linux 系统规范,当指令正常结束时,其返回值为 0,可通过echo $?获取该状态码。例如,执行不存在的文件路径(如/etc/passwd,此处作为错误输入示例)或指令(如vbirdcommand)时,Bash 将返回非零状态码。通过查阅man bash中关于^exit status的描述,可获取详细的状态码解释。不同指令的退出状态码虽由开发者自定义,但需遵循 Bash 的基本规范。 1.2...
鸟哥的私房菜:认识 bash 基础与系统救援
一、系统与用户的 shell 配置 合法 shell 清单系统支持的合法 shell 列表存储于 /etc/shells 配置文件中。常见类型包括已被替代的 /bin/sh(现多指向 /bin/bash)、Linux 标准默认 shell /bin/bash、集成 C 语言特性的 /bin/tcsh,以及逐步被取代的 /bin/csh。在基础安装的 RockyLinux 训练环境中,该文件内容通常仅包含 bash 与 sh 两项。 默认 shell 查询机制用户账户的默认 shell 配置存储于 /etc/passwd 文件,具体表现为以冒号分隔的第七字段。可通过 cut 命令实现精准提取,例如执行 cut -d: -f1,7 /etc/passwd 指令,即可输出用户名与对应 shell 信息。 shell 切换技术用户可根据需求切换 shell 环境,但不同 shell 在变量定义语法上存在显著差异(如 bash 采用 var='content',csh 使用 set var = 'content')。切换前需确保目标 shell...
鸟哥的私房菜:基础文件系统管理学习笔记
一、认识 Linux 文件系统1.1 磁盘文件名与磁盘分区 物理特性:磁区(Sector)是最小物理存储单元,现代磁盘常见 512 字节与 4K 两种格式。多个磁区在物理上连续排列形成磁柱(Cylinder),磁盘读写以磁柱为单位进行寻址。例如,传统机械硬盘通过磁头沿磁柱移动实现数据读写,固态硬盘则通过闪存芯片的区块管理模拟类似机制。 分区表格式 MSDOS(MBR):磁盘首个磁区包含 446 字节的主要开机区(MBR Boot Code)和 64 字节的分区表。由于仅能记录 4 笔主分区信息,若需更多分区需通过扩展分区实现逻辑分区。其容量上限受限于 32 位地址空间,无法管理超过 2TB 的磁盘。 GPT:使用 34 个 LBA 区块记录分区信息,磁盘末尾 33 个 LBA 作为备份。支持创建 128 个以上分区,突破 2TB 容量限制,且每个分区记录可独立格式化。GPT 还引入 CRC 校验机制,提高分区表的可靠性。 磁盘文件名:实体磁盘文件名遵循 /dev/sd[a-p] 规则(如 /dev/sda 表示第一块 SCSI/SATA 磁盘),虚拟磁盘(如...
鸟哥的私房菜:权限应用、程序观察与基本管理学习笔记
导言 在 Linux 系统的理论研究与工程实践过程中,权限分配机制、程序运行监控及基础管理策略构成了系统安全与资源调度的核心理论体系。深入解析这些关键技术,不仅有助于构建稳固的系统安全防线,还能通过资源的精细化管理提升系统整体运行效能。以下将对这些核心内容展开系统性探讨。 一、权限在目录与文件系统中的作用机制 Linux 系统基于用户身份(所有者、所属组、其他用户)与权限类型(读r、写w、执行x)构建三维权限管理模型。不同文件类型(普通文件、目录文件)权限语义差异显著,影响资源访问与操作。 普通文件权限:读权限允许查看内容;写权限支持内容修改但不包括删除;执行权限赋予运行能力,但需文件内容有效。 目录文件权限:读权限可枚举文件名;写权限能修改目录结构;执行权限决定能否进入目录。 二、程序管理的理论与实践 在 Linux 系统运行中,程序从外部设备加载到内存后成为进程,对进程的监控与调度是系统管理关键。 1. 程序与进程的概念辨析 程序:静态存储于硬盘等介质的二进制文件,无运行时动态特征。 进程:程序执行时,系统将代码、数据及权限载入内存并分配...
Linux:基于 select 的即时聊天程序设计与实现
引言在网络编程的世界里,即时通信是一个核心话题。如何实现一个高效、稳定的聊天系统?本文将通过分析一个基于 select 的即时聊天程序 B 端代码,深入探讨 Unix/Linux 环境下的网络编程技术,包括命名管道、I/O 多路复用和非阻塞 I/O 等核心概念。 一、 整体架构设计 这个即时聊天程序采用客户端 - 客户端 (C2C) 架构,通过命名管道实现两个客户端之间的双向通信。系统结构简洁明了,如下图所示: 12345678+----------------+ +----------------+| 客户端A进程 | | 客户端B进程 || | | || 写入1.pipe |--------------> | 读取1.pipe || | | || 读取2.pipe ...
Leecode 0072. Edit Distance
72. Edit DistanceGiven two strings word1 and word2, return the minimum number of operations required to convert word1 to word2. You have the following three operations permitted on a word: Insert a character Delete a character Replace a character Example 1: 123456Input: word1 = "horse", word2 = "ros"Output: 3Explanation: horse -> rorse (replace 'h' with 'r')rorse -> rose (remove 'r')rose -> ros (remove 'e') Example...
Leecode 0070. Climbing Stairs
70. Climbing Stairs题目You are climbing a stair case. It takes n steps to reach to the top. Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top? Note: Given n will be a positive integer. Example 1: Input: 2 Output: 2 Explanation: There are two ways to climb to the top. 1. 1 step + 1 step 2. 2 steps Example 2: Input: 3 Output: 3 Explanation: There are three ways to climb to the top. 1. 1 step + 1 step + 1 step 2. 1 step + 2 steps 3. 2 steps + 1...
Leecode 0073. Set Matrix Zeroes
73. Set Matrix Zeroes题目Given an *m* x *n* matrix. If an element is 0, set its entire row and column to 0. Do it in-place. Follow up: A straight forward solution using O(mn) space is probably a bad idea. A simple improvement uses O(m + n) space, but still not the best solution. Could you devise a constant space solution? Example 1: 12Input: matrix = [[1,1,1],[1,0,1],[1,1,1]]Output: [[1,0,1],[0,0,0],[1,0,1]] Example 2: 12Input: matrix = [[0,1,2,0],[3,4,5,2],[1,3,1,5]]Output:...
鸟哥的私房菜:Linux 基础文件权限与基础账号管理读书笔记
在学习 Linux 系统的过程中,文件权限与账号管理是极为重要的基础内容,这部分知识对于理解系统安全机制、实现资源合理分配与管理有着关键作用。下面对“Linux基础文件权限与基础账号管理” 课程内容进行梳理总结。 一、课程整体框架 课程围绕 RockyLinux 9.x 展开 Linux 基础训练,涵盖初次使用、指令列模式、文件管理、vim 使用等多方面内容。本次重点学习的第四课,聚焦于 Linux 基础文件权限与基础账号管理,后续课程还将深入权限应用、程序管理、文件系统管理等进阶内容,形成完整的学习体系。 二、Linux 传统权限 1.权限概念与身份划分Linux 权限旨在保护文件资料,其设置基于用户、群组、其他人三种身份。用户即文件所有者;群组是文件所属的团队;其他人则是不属于用户且未加入群组的账号。以学校借书为例,小老师为使用者,本班同学为群组,隔壁班同学为其他人,清晰展现了不同身份在文件管理中的权限差异。 2.文件权限观察查看指令:使用ls -l或ll可查看文件权限,如ls -ld...
鸟哥的私房菜:Linux文件管理与Vim编辑器进阶教程
一、批量文件创建技术与花括号扩展应用 1.1 多维度参数组合文件创建在 Linux 中,利用花括号{}的扩展功能可高效创建具有规律命名的文件。以在/dev/shm/testing目录下创建 36 个名为mytest_XX_YY_ZZ的文件为例,其中XX为jan,feb,mar,apr,YY为one,two,three,ZZ为a1,b1,c1,可通过以下命令实现: 12mkdir -p /dev/shm/testingtouch /dev/shm/testing/mytest_{jan,feb,mar,apr}_{one,two,three}_{a1,b1,c1} 原理解析:花括号内的参数会被展开为所有可能的组合,等价于执行 3×3×4=36 次touch操作。mkdir -p用于确保目录存在,避免因路径不存在导致错误。 1.2 序列数字文件批量生成若需创建4XXXC001到4XXXC050的 50 个文件,可结合{}与序列生成语法: 12mkdir -p...
鸟哥的私房菜:指令下达行为与基础档案管理
一、date 指令相关操作 显示 “小时:分钟” 格式:执行指令date +%H:%M,即可按照 “小时:分钟” 的格式输出当前时间,如 “15:20” 。其中%H表示 24 小时制的小时数,%M表示分钟数。 date +%s****输出信息:该指令输出的是从 1970 年 1 月 1 日 00:00:00 UTC 到当前时间的秒数,也被称为 Unix 时间戳。它常用于时间相关的计算和记录,在编程和系统管理中应用广泛 。 显示两天前的+%Y/%m/%d****格式日期:使用指令date -d "2 days ago" +%Y/%m/%d,-d选项用于指定日期字符串,“2 days ago” 表示两天前,后面的+%Y/%m/%d用于指定输出格式,以 “年 / 月 / 日” 的形式展示日期。 显示 “西元年 - 日 - 月 小时:分钟” 格式:执行指令date +%Y-%d-%m...
鸟哥私房菜:命令初识
计算机与操作系统知识要点解析 在计算机技术不断发展的今天,深入了解计算机组成、操作系统相关知识,对我们更好地使用和探索计算机世界有着重要意义。接下来,就让我们一同深入探讨这些知识要点,这也是对鸟哥的私房菜课后题回答的整理。 计算机概论基础Unix 基础Linux 基础RockyLinux 9 的基本操作一、计算机概论基础 1. 计算机组成的五大单元计算机组成的五大单元分别是运算器、控制器、存储器、输入设备和输出设备。运算器负责算术运算和逻辑运算;控制器是计算机的指挥中心,控制各部件协调工作;存储器用于存储数据和程序;输入设备将外部信息转换为计算机能接受的形式;输出设备则把计算机处理的结果以人们能识别的形式输出。 2. CPU 主要包含的单元CPU 主要包含运算器和控制器这两个单元。运算器执行具体的运算操作,控制器则根据指令的要求,协调和控制计算机各部件的工作,二者协同工作,使得 CPU 能够高效地处理各种任务。 3. I/O bound 与 CPU boundI/O bound 指的是输入 /...