当前位置: 首页 > ops >正文

CA复习功课

RHCSA 复习笔记(完善版)

一、 文件管理

  • 创建文件/目录:
    • touch [文件名]:创建空文件或更新现有文件时间戳。
    • mkdir [目录名]:创建目录。常用选项:-p 递归创建多级目录。
  • 查看文件/目录:
    • ls [选项] [文件/目录]:列出目录内容。常用选项:-l 详细列表,-a 显示隐藏文件,-h 人性化大小显示。
    • cat [文件名]:查看文件内容(小文件),无法翻页。
    • less [文件名]:分页查看文件内容,支持搜索(/),适合大文件。
    • head [选项] [文件名]:查看文件开头部分,默认10行。选项 -n [数字] 指定行数。
    • tail [选项] [文件名]:查看文件末尾部分,默认10行。选项 -n [数字] 指定行数,-f 动态跟踪文件新增内容。
    • watch [命令]:周期性执行指定命令,并显示结果。常用选项 -n [秒数] 指定间隔时间。
  • 文本处理:
    • sort [文件名]:对文件内容进行排序。常用选项 -n 数字排序,-r 逆序,-u 去重。
    • wc [选项] [文件名]:统计文件行数、单词数、字节数。选项 -l 仅统计行数,-w 仅统计单词数,-c 仅统计字节数。
    • uniq [选项] [文件名]:过滤连续的重复行。通常与 sort 结合使用。选项 -c 显示每行出现次数,-d 仅显示重复行。
    • tr [字符集1] [字符集2]:替换或删除字符。例如 echo "hello" | tr 'a-z' 'A-Z' 将小写转为大写。
    • sed [选项] '命令' [文件名]:流编辑器,用于过滤和转换文本。常用命令 s/旧内容/新内容/(替换),d(删除行),p(打印行)。选项 -n 静默模式,-e 执行多个命令。
    • awk '{print $1}' [文件名]:强大的文本分析工具,按字段处理文本。$1 表示第一列,{print} 表示打印。
      • 示例:ls /mnt/*.conf | awk '{system("cp " $1 " "$1".bak")}' 将 /mnt 下所有 .conf 文件备份为 .conf.bak
    • grep [选项] '模式' [文件名]:在文件中搜索匹配指定模式的行。常用选项 -i 忽略大小写,-r 递归搜索目录,-v 反向选择(不匹配的行)。
  • 管理输入输出:
    • 文件描述符(FD): 每个进程打开的文件或设备都有对应的文件描述符,如 0(标准输入 stdin),1(标准输出 stdout),2(标准错误 stderr)。
      • 示例:cd /proc/[PID]/fd 查看某个进程的文件描述符。0 -> /dev/pts/0 表示标准输入连接到终端 /dev/pts/0
    • 重定向:
      • >:将命令的标准输出重定向到文件(覆盖原有内容)。
      • >>:将命令的标准输出重定向到文件(追加到文件末尾)。
      • 2>:将命令的标准错误重定向到文件(覆盖)。
      • 2>>:将命令的标准错误重定向到文件(追加)。
      • &> 或 >&:将标准输出和标准错误都重定向到同一文件(覆盖)。
      • &>> 或 >>&:将标准输出和标准错误都重定向到同一文件(追加)。
    • 管道(|): 将一个命令的标准输出作为下一个命令的标准输入。
    • tee [选项] [文件名]:从标准输入读取数据,并同时输出到标准输出和指定文件。选项 -a 追加到文件而非覆盖。例如:command | tee output.log
    • &1:在 x >&1 形式中,表示将标准错误(x)重定向到标准输出(1)。

二、 用户和权限

  • 用户信息相关文件:
    • /etc/passwd:存储用户账户基本信息(用户名、UID、GID、家目录、默认shell)。
    • /etc/shadow:存储加密后的用户密码及其他认证信息。
    • /etc/group:存储组信息(组名、GID、组成员)。
    • /etc/skel/:用户骨架目录,新用户创建时,此目录下的文件会自动复制到用户家目录。
    • /var/spool/mail/[username]:用户邮件存放目录。
    • /home/[username]:用户家目录。
  • 用户管理操作:
    • useradd [选项] [用户名]:创建新用户。常用选项 -m 创建家目录,-G [组名] 指定附加组,-s [shell] 指定默认shell。
    • usermod [选项] [用户名]:修改用户属性。常用选项 -L 锁定用户,-U 解锁用户,-G [组名] 修改附加组,-d [家目录] 修改家目录。
    • userdel [选项] [用户名]:删除用户。选项 -r 同时删除家目录。
    • groupadd [组名]:创建新组。
    • groupmod [选项] [组名]:修改组属性。常用选项 -n [新组名] 重命名组。
    • groupdel [组名]:删除组(必须没有用户属于该组)。
    • id [用户名]:查看用户UID、GID及所属组信息。
    • whoami:显示当前有效用户名。
    • su - [用户名]:切换用户身份(- 表示加载目标用户的环境变量)。
  • 权限管理:
    • 权限类型: r(读权限,数值4)、w(写权限,数值2)、x(执行权限,数值1)。
    • chmod [选项] [模式] [文件/目录]:修改文件/目录权限。模式可以是符号法(u/g/o/a +/- /= rwx)或数字法(如 755)。
    • chown [选项] [用户][:组] [文件/目录]:修改文件/目录的所有者及所属组。选项 -R 递归修改目录下所有文件。
    • chgrp [组名] [文件/目录]:修改文件/目录的所属组。
    • 特殊权限:
      • SUID (Set User ID): 执行者临时获得文件所有者的权限。显示为 s(有执行权限时)或 S(无执行权限时)在用户执行位。常见于 /usr/bin/passwd
      • SUID (Set User ID): 对应数字 4
      • SGID (Set Group ID): 执行者临时获得文件所属组的权限,或目录下新创建的文件自动继承目录的所属组。显示为 s 或 S 在组执行位。
      • SGID (Set Group ID): 对应数字 2
      • Sticky Bit: 设置在目录上,防止用户删除其他用户创建的文件。显示为 t 或 T 在其他用户执行位。常见于 /tmp 目录。
      • Sticky Bit: 对应数字 1
    • ACL (Access Control List) 权限:
      • 提供比传统rwx更灵活的权限控制,可以为特定用户或组设置额外权限。
      • setfacl [选项] [规则] [文件/目录]:设置ACL。规则格式如 -m u:用户名:rw-(为用户添加读写权限)。
      • getfacl [文件/目录]:查看ACL设置。
      • setfacl -b [文件/目录]:删除所有ACL设置。
  1. 用户类别:

    • u 表示文件所有者(user)。
    • g 表示文件所属组(group)。
    • o 表示其他用户(others)。
    • a 表示所有类别(all)。
  2. 权限操作:

    • + 表示添加权限。
    • - 表示移除权限。
    • = 表示设置确切的权限,替换原有的权限设置。
  3. 权限类型:

    • r 表示读权限(read)。
    • w 表示写权限(write)。
    • x 表示执行权限(execute)。

例如,以下是一些使用符号表示法的 chmod 命令示例:

  • chmod u+x file:给文件所有者添加执行权限。
  • chmod g-w file:从文件所属组移除写权限。
  • chmod o=r file:设置其他用户的权限为只读。
  • chmod u=rwx,g=rx,o=r file:设置文件所有者拥有读写执行权限,文件所属组拥有读执行权限,其他用户只有读权限。
  • chmod a-x file:从所有类别中移除执行权限。

特殊权限(SUID、SGID、Sticky Bit)也可以使用符号表示法设置:

  • chmod u+s file:设置 SUID 权限。
  • chmod g+s file:设置 SGID 权限。
  • chmod o+t directory:设置目录的 Sticky Bit 权限。

三、 进程管理

  • 基本概念:
    • 程序 (Program): 存储在磁盘上的可执行文件。
    • 进程 (Process): 程序在内存中的一次执行实例。每个进程有唯一PID(Process ID)。
    • 线程 (Thread): 进程内的执行单元,共享进程资源。
  • 进程状态: 运行、睡眠(可中断、不可中断)、停止、僵尸。
  • 进程查看:
    • ps [选项]:查看当前终端的进程状态。常用选项 aux 查看所有进程详细信息,ef 查看所有进程及父进程关系。
    • pstree [选项]:以树状结构显示进程间的关系。选项 -p 显示PID。
    • pidof [进程名]:查找指定进程的PID。
    • top:动态实时显示系统进程状态,包括CPU、内存占用等。按 q 退出。
    • pgrep [选项] [进程名]:根据进程名或其他属性查找进程PID,返回列表。
  • 进程管理:
    • kill [信号] [PID]:向进程发送信号,终止或控制进程。常用信号 9 (SIGKILL,强制终止),15 (SIGTERM,请求终止,允许清理)。
    • killall [信号] [进程名]:根据进程名发送信号,终止所有匹配的进程。
    • pkill [信号] [条件]:根据更复杂的条件(如用户、终端)发送信号终止进程。
  • 进程前后台调用:
    • 在命令后加 & 将命令放入后台执行。
    • jobs:查看当前shell中的后台任务。
    • fg %任务号:将后台任务调回前台。
    • bg %任务号:将暂停的后台任务继续在后台运行。
  • 信号 (Signals): 进程间通信的一种方式,用于发送控制指令。常用信号:0 (无操作),1 (SIGHUP,重新加载配置),2 (SIGINT,中断,如Ctrl+C),3 (SIGQUIT,退出并转储核心),9 (SIGKILL,强制终止),15 (SIGTERM,请求终止),18 (SIGCONT,继续执行),19 (SIGSTOP,暂停)。
  • 系统服务管理:
    • systemctl [命令] [服务名]:管理systemd服务。常用命令:startstoprestartreloadenable(开机启动),disable(取消开机启动),status(查看状态)。
    • systemctl:不带参数查看所有服务状态。

四、 网络管理

  • 网络配置(RHEL7/8/9):
    • nmcli 命令行工具:
      • nmcli networking on/off:开启/关闭网络功能。
      • nmcli connection up/down [连接名]:激活/停用网络连接。
      • nmcli connection show:查看所有连接配置。
      • nmcli connection edit [连接名]:编辑连接配置。
      • nmcli connection reload:重新加载网络配置。
    • 配置文件(RHEL9):
      • 文件位置:/etc/NetworkManager/system-connections/连接名称.nmconnection
      • 文件权限:通常为 600 (root:root)。
      • 文件格式(示例,静态IP):

            [connection]
id=连接名称
type=ethernet        //网络类型
interface-name=网卡名称

            [ipv4]
method=manual        //手动指定
address1=IP地址/netmask,网关
dns=DNS服务器地址

            [ipv6]
method=ignore
###版本9###

 

  • 配置文件(RHEL7):
    • 文件位置:/etc/sysconfig/network-scripts/ifcfg-接口名
    • 文件权限:通常为 600 (root:root)。
    • 文件格式(示例,静态IP):

             DEVICE=ens33
NAME=连接名称
BOOTPROTO=none
IPADDR0=IP地址
PREFIX0=前缀长度
GATEWAY0=网关
DNS1=主DNS
DNS2=备用DNS (可选)
ONBOOT=yes        #系统开启时自动激活此块网卡
###版本7###

 

  • 网络命令:
    • ip [选项] [命令] [地址/链接/路由]:强大的网络配置工具。常用命令:
      • ip addr show (ip a):查看IP地址信息。
      • ip link show (ip l):查看网络接口状态。
      • ip route show (ip r):查看路由表。
    • ipconfig:Windows下的网络配置工具,Linux下不适用。
    • nmcli device show [设备名]:查看网络设备详细信息。
    • route -n:查看路由表(旧命令)。
    • netstat -antulpe:查看网络连接、监听端口、路由表、接口统计、伪装连接等信息(旧命令,推荐用 ss)。
    • ss [选项]:比 netstat 更快的查看套接字状态工具。常用选项 -t (TCP), -u (UDP), -n (不解析服务名), -a (所有), -l (监听), -p (程序), -e (详细信息)。
    • hostnamectl [命令]:管理主机名。常用命令 set-hostname [主机名]status 查看当前主机名。
    • ping [选项] [主机名/IP]:测试网络连通性。选项 -c [次数] 指定发送包数,-w [秒数] 指定超时时间。
    • dig [选项] [主机名]:强大的DNS查询工具。
    • nslookup [主机名]:查询DNS信息。
    • ifconfig:旧的网络接口配置工具,在较新系统中被 ip 和 nmcli 取代。
  • 网卡名称调整:
    • 修改引导参数:grubby --update-kernel ALL --args net.ifnames=0
    • 禁用selinux:grubby --update-kernel ALL --args selinux=0   #关闭selinux,不是必须

      (在rhel7中进入/etc/sysconfig/selinux  改为selinux=disabled)

  • 网络配置:

    • RHEL 7 / RHEL 8: 主要使用 nmcli 和 nmtui 工具进行配置。配置文件通常位于 /etc/NetworkManager/system-connections/,文件权限为 600。
    • RHEL 9: 继续使用 nmcli 和 nmtui,配置文件位置和格式与 RHEL 7/8 类似,但可能有一些细微调整。注意,RHEL 9 默认使用 systemd-networkd 作为网络管理后端之一,但 NetworkManager 仍然广泛使用。
    • RHEL 6 / RHEL 7 (传统方式): 使用 /etc/sysconfig/network-scripts/ifcfg-<接口名> 文件进行配置。ifupifdown 命令用于激活/禁用接口。nmcli connection up 和 nmcli connection down 是更现代的方式。
  • 软件包管理:

    • RHEL 7: 主要使用 yum
    • RHEL 8 / RHEL 9: 主要使用 dnfyum 的更快速、更现代的替代品)。dnf 的命令行选项与 yum 大部分兼容,但有些新特性或更简洁的语法。
  • 防火墙管理:

    • RHEL 6: 主要使用 iptables
    • RHEL 7 / RHEL 8 / RHEL 9: 默认使用 firewalld,一个动态管理的防火墙。常用命令包括 firewall-cmdiptables 仍然可用,但通常需要额外安装(如 iptables-services)并可能需要重启相关服务。
  • SELinux:

    • 状态管理: setenforce 0 (临时禁用强制模式), setenforce 1 (启用强制模式)。getenforce 查看当前状态。
    • 策略模式: sestatus 查看当前策略模式(Enforcing/Permissive)和 SELinux 版本。修改 /etc/selinux/config 文件中的 SELINUX=enforcing 或 SELINUX=permissive 可以永久改变模式,但需要重启生效。
    • 上下文标签: ls -Z 查看文件/目录的 SELinux 上下文。chcon 临时修改上下文。restorecon 恢复默认上下文。
    • 布尔值: getsebool -a 查看所有布尔值。setsebool <布尔值名> 1 或 setsebool <布尔值名> 0 临时设置布尔值。setsebool -P <布尔值名> 1 永久设置布尔值。

五. 补充遗漏的重要命令/概念

  • 系统服务管理:

    • systemd (RHEL 7/8/9): 现代系统服务管理器。
      • systemctl status <服务名>:查看服务状态。
      • systemctl start <服务名>:启动服务。
      • systemctl stop <服务名>:停止服务。
      • systemctl restart <服务名>:重启服务。
      • systemctl enable <服务名>:设置服务开机自启。
      • systemctl disable <服务名>:取消服务开机自启。
      • systemctl is-active <服务名>:检查服务是否活动。
      • systemctl is-enabled <服务名>:检查服务是否启用。
      • systemctl list-unit-files --type=service:列出所有服务单元文件及其状态(enabled/disabled)。
      • systemctl list-dependencies <服务名>:查看服务的依赖关系。
    • SysVinit (RHEL 6 及更早): 旧的服务管理方式。
      • service <服务名> status:查看服务状态。
      • service <服务名> start/stop/restart:管理服务。
      • chkconfig --list <服务名>:查看服务开机自启状态。
      • chkconfig <服务名> on/off:设置服务开机自启。
  • 文件系统管理:

    • 挂载/卸载:
      • mount <设备> <挂载点>:挂载文件系统。常用选项 -t <文件系统类型> (如 ext4, xfs), -o <选项> (如 ro 只读, rw 读写, acl 启用ACL, user 允许普通用户挂载)。
      • umount <挂载点> | <设备>:卸载文件系统。
      • findmnt:查看当前挂载的文件系统。
      • /etc/fstab:系统启动时自动挂载文件系统的配置文件。格式:<设备> <挂载点> <文件系统类型> <挂载选项> <dump> <fsck>
    • 磁盘空间检查:
      • df -h:以人类可读格式显示磁盘分区使用情况。
      • du -sh <目录/文件>:以人类可读格式显示目录或文件的总大小。
    • 文件系统检查与修复:
      • fsck <设备>:检查并尝试修复文件系统错误。通常在单用户模式下使用,特别是对于 XFS 文件系统,可能需要特定工具如 xfs_repair
  • 日志管理:

    • journalctl (systemd 日志):
      • journalctl -xe:查看系统日志并显示未显示的日志。
      • journalctl -u <服务名>:查看特定服务的日志。
      • journalctl --since "2023-01-01 12:00:00":查看指定时间后的日志。
      • journalctl --until "2023-01-01 13:00:00":查看指定时间前的日志。
    • 传统日志文件: 通常位于 /var/log/ 目录下,如 messagessecurecronmaillogdmesg 等。可以用 tail -f <日志文件> 实时查看日志。
  • Shell 编程基础:

    • 变量: VAR_NAME="value" 定义变量,echo $VAR_NAME 使用变量。
    • 条件判断: [ condition ] 或 [[ condition ]]。常用条件:文件测试 (-f-d-e), 整数比较 (-eq-gt-lt), 字符串比较 (=!=), 逻辑运算 (-a-o!)。
    • 流程控制:
      • if ... then ... elif ... then ... else ... fi
      • for var in list; do ... done
      • while condition; do ... done
    • 函数: function_name() { ... } 或 function function_name { ... }
  • Shell 基础与技巧:

    • 通配符: * (任意数量字符), ? (单个字符), [] (字符范围), [] (字符范围, 取反)。
    • 重定向: > (覆盖写入), >> (追加写入), < (输入重定向)。
    • 管道: | 将前一个命令的输出作为下一个命令的输入。
    • 命令替换: `command` 或 $(command) 将命令的输出赋值给变量或嵌入到其他命令中。
    • 历史命令: history 查看历史命令,!n 执行第 n 条历史命令,!! 执行上一条命令,!string 执行以 string 开头的最近一条命令。
    • Tab 补全: 按下 Tab 键自动补全命令、文件名、目录名。

六. 增加示例与解释

  • ACL (Access Control List) 权限:

    • 查看: getfacl <文件/目录>getfacl -R <目录> 递归查看。
    • 设置: setfacl [选项] <文件/目录>
      • setfacl -m u:<用户名>:<权限> <文件>:为指定用户添加 ACL 权限 (如 setfacl -m u:john:rwx file.txt)。
      • setfacl -m g:<组名>:<权限> <文件>:为指定组添加 ACL 权限。
      • setfacl -m d:<默认权限> <目录>:为目录设置默认 ACL 权限,新创建的文件/子目录会继承。
      • setfacl -x <主体>:<权限> <文件>:删除指定的 ACL 条目。
      • setfacl -b <文件>:删除所有 ACL 条目。
      • setfacl -R <选项> <目录>:递归设置 ACL。
    • 启用: 确保文件系统挂载时包含 acl 选项(通常默认启用)。可以通过 mount | grep <挂载点> 查看选项。
  • LVM (Logical Volume Manager) 逻辑卷管理:

    • 基本概念: 物理卷(PV) -> 卷组(VG) -> 逻辑卷(LV)。允许动态调整分区大小。
    • 常用命令:
      • pvcreate <物理设备>:将磁盘分区创建为物理卷。
      • vgcreate <卷组名> <物理卷>:创建卷组。
      • lvcreate -L <大小> -n <逻辑卷名> <卷组名>:创建逻辑卷(如 lvcreate -L 10G -n mydata vg01)。
      • mkfs -t <文件系统类型> <逻辑卷设备路径>:格式化逻辑卷(如 mkfs.xfs /dev/vg01/mydata)。
      • lvresize -L <新大小> /dev/<卷组名>/<逻辑卷名>:调整逻辑卷大小。
      • vgextend <卷组名> <新物理卷>:向卷组中添加物理卷以扩展空间。
      • lvreduce -L <减少大小> /dev/<卷组名>/<逻辑卷名>:缩小逻辑卷(需先卸载并确保数据安全)。
      • vgreduce <卷组名> <要移除的物理卷>:从卷组中移除物理卷。
      • pvremove <物理设备>:移除物理卷。
      • lvremove /dev/<卷组名>/<逻辑卷名>:移除逻辑卷。
      • vgremove <卷组名>:移除卷组。
    • 查看状态: pvdisplayvgdisplaylvdisplaylvsvgspvs
  • RAID (Redundant Array of Independent Disks) 磁盘阵列:

    • 基本概念: 将多个磁盘组合起来,提高性能或数据冗余。
    • 常用工具: mdadm
    • 常用命令:
      • mdadm --create --verbose /dev/md0 --level=<级别> --raid-devices=<磁盘数> /dev/sd<磁盘列表>:创建 RAID 阵列(如 mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc 创建 RAID1)。
      • mdadm --detail /dev/md0:查看 RAID 阵列详细信息。
      • mdadm --stop /dev/md0:停止 RAID 阵列。
      • mdadm --assemble /dev/md0 /dev/sd<磁盘列表>:重新组装 RAID 阵列。
      • mdadm --manage /dev/md0 --add /dev/sdd:向 RAID 阵列中添加磁盘(通常用于替换故障盘)。
      • mdadm --monitor --daemonize --pid=/var/run/mdadm.pid:启动 RAID 监控守护进程。

七. 补充脚本示例解释

  • RHEL 9 网络脚本:

    • ifconfig $1 &> /dev/null || { ... }:检查指定的网络接口 $1 是否存在。如果不存在,输出错误信息并退出脚本。
    • ping -c1 -w1 $2 &> /dev/null && { ... }:尝试向 IP 地址 $2 发送一次 (-c1) ping 包,超时时间为 1 秒 (-w1)。如果成功收到响应 (&& 表示逻辑与,前一个命令成功才执行后面),输出信息并退出。
    • grep $1 -r /etc/NetworkManager/system-connections/ | awk -F : '{system("rm -fr "$1)}':查找 /etc/NetworkManager/system-connections/ 目录下是否已存在名为 $1 的连接配置文件。如果存在,则使用 awk 提取文件名并删除该文件(rm -fr)。
    • cat > ... <<EOF ... EOF:使用 Here Document 将配置内容写入到新的网络连接配置文件中。文件内容包含连接标识、类型、接口名、IP 配置、DNS 等。
    • chmod 600 ...:设置新创建的连接配置文件权限为 600,只有所有者可读写。
    • nmcli connection reload:通知 NetworkManager 重新加载连接配置。
    • nmcli connection up $1:激活新创建的连接。
    • hostnamectl hostname $3:设置系统主机名为 $3
    • grep -e "$2\t$3" /etc/hosts || { ... }:检查 /etc/hosts 文件中是否已存在 IP 地址 $2 对应主机名 $3 的记录。如果不存在,则将其追加到文件末尾。
  • RHEL 7 网络脚本: 逻辑与 RHEL 9 类似,但配置文件格式和存放位置不同,使用 ifcfg-$1 作为文件名,内容格式为键值对。

八. 检查遗漏的重要概念

  • 进程状态: 运行®, 中断(S), 不可中断(D), 僵死(Z), 停止(T)。
  • 进程优先级: nice 值(0-19,值越大优先级越低),renice 命令调整优先级。
  • 系统资源监控: tophtop (需要安装), vmstatmpstatiostat (需要安装 sysstat 包)。
  • 用户和组管理: idwhoamiwusersgroupslastlogchage (管理密码过期策略)。
  • SELinux 上下文类型: 文件、进程、用户等都有对应的 SELinux 类型(如 httpd_sys_content_tuser_home_dir_t)。
  • 防火墙区域: firewalld 使用区域概念管理不同网络接口的防火墙规则(如 publicinternalhometrusted)。
  • 网络配置文件: /etc/hosts (主机名解析), /etc/resolv.conf (DNS 配置), /etc/hostname (主机名), /etc/sysconfig/network (RHEL 7 旧网络配置,可能存在)。
  • 备份与恢复: rsync (同步文件/目录), tar (打包压缩), dd (低级复制,可用于备份磁盘镜像)。

 九.磁盘管理

1. 文件查找工具 find (在磁盘内容管理中的应用)

find 虽然是文件查找工具,但在磁盘管理中,它常用于定位特定文件或目录,这对于备份、迁移或清理磁盘空间非常有用。

  • 常用选项详解与示例:
    • -name "pattern": 按文件名查找,支持通配符(*?)。
      • 示例:find /var/log -name "*.log" 查找 /var/log 目录下所有 .log 结尾的文件。
    • -type [f|d|l|c|b|p|s]: 按文件类型查找。
      • f: 普通文件
      • d: 目录
      • l: 符号链接
      • c: 字符设备文件
      • b: 块设备文件 (常用于查找磁盘分区)
      • 示例:find /dev -type b 查找所有块设备文件。
    • -size [+-]N[kMG]: 按文件大小查找。
      • N: 数字
      • k: KB
      • M: MB
      • G: GB
      • +: 大于
      • -: 小于
      • 示例:find /home -size +100M -type f 查找 /home 下大于 100MB 的普通文件。
    • -user username: 按文件所有者查找。
      • 示例:find / -user nobody 查找所有属于 nobody 用户的文件。
    • -group groupname: 按文件所属组查找。
      • 示例:find /tmp -group users 查找 /tmp 下属于 users 组的文件。
    • -perm mode: 按文件权限查找。可以是精确模式(如 0755)或包含模式(如 =644 表示精确权限,-444 表示至少有 r–r–r–)。
      • 示例:find /etc -perm 644 查找 /etc 下权限为 rw-r--r-- 的文件。
    • -a: 逻辑与,默认操作符,表示条件需同时满足。
      • 示例:find /home -size +50M -a -user root 查找 /home 下大于 50MB 且属于 root 的文件。
    • -o: 逻辑或,表示条件满足其一即可。
      • 示例:find /var/log -name "*.log" -o -name "*.txt" 查找 /var/log 下 .log 或 .txt 结尾的文件。
    • -not 或 !: 逻辑非,表示不满足条件。
      • 示例:find / -not -user root 查找所有不属于 root 用户的文件。
    • -exec command {} \;: 对找到的每个文件执行指定的命令。{} 代表找到的文件,\; 表示命令结束。
      • 示例:find /tmp -name "*.tmp" -exec rm -f {} \; 查找 /tmp 下所有 .tmp 文件并删除。
      • 更安全的替代方案是 xargsfind /tmp -name "*.tmp" | xargs rm -f

2. 磁盘分区工具 fdisk

fdisk 是传统的磁盘分区工具,适用于 MBR(Master Boot Record)分区表。

  • 基本操作:
    • fdisk /dev/sdX (X 是磁盘号,如 a, b) 启动分区工具。
    • m: 显示帮助菜单。
    • p: 打印当前分区表。
    • n: 创建新分区 (选择主分区 p 或扩展分区 e,然后选择分区号、起始扇区、结束扇区)。
    • d: 删除分区。
    • t: 更改分区类型 (如改为 Linux swap)。
    • w: 保存更改并退出。
    • q: 不保存退出。
  • 注意: fdisk 不支持 GPT 分区表,对于大于 2TB 的磁盘或需要更灵活分区的场景,建议使用 parted

3. 块设备列表 lsblk

lsblk 提供了一个更现代、更易读的方式来列出块设备(磁盘、分区、RAID、LVM 等)及其关系。

  • 常用选项与输出解读:
    • lsblk: 显示所有块设备及其树状关系。
    • -f: 显示文件系统类型、挂载点、UUID 等信息。
    • -o NAME,SIZE,TYPE,MOUNTPOINT,FSTYPE,LABEL,UUID: 自定义显示列。
    • 输出列说明:
      • NAME: 设备名 (如 sda, sda1)。
      • MAJ:MIN: 主设备号和次设备号。
      • RM: 是否可移除 (0: 否, 1: 是)。
      • SIZE: 设备大小。
      • RO: 是否只读 (0: 否, 1: 是)。
      • TYPE: 设备类型 (disk: 磁盘, part: 分区, lvm: LVM 逻辑卷, raid: RAID 设备等)。
      • MOUNTPOINT: 挂载点 (如果已挂载)。
      • FSTYPE: 文件系统类型 (如 ext4, xfs, swap)。
      • LABEL: 卷标。
      • UUID: 统一唯一标识符。
    • 用途: 快速查看磁盘布局、分区情况、哪些分区已挂载、文件系统类型等。

4. 获取块设备 UUID/TYPE blkid

blkid 用于快速查询块设备(通常是分区)的文件系统类型和 UUID。

  • 用法:
    • blkid /dev/sdXN: 查询指定分区 /dev/sdXN 的 UUID 和文件系统类型。
    • blkid: 查询所有块设备的 UUID 和文件系统类型。
  • 用途: 在 /etc/fstab 中挂载分区时,使用 UUID 比使用设备名更可靠,可以避免因设备名变化导致挂载失败。

5. 查看磁盘空间使用 df

df (Disk Free) 报告文件系统的总空间、已用空间、可用空间和使用百分比。

  • 常用选项:
    • -h: 以人类易读的格式显示大小 (如 KB, MB, GB)。
    • -T: 显示文件系统类型。
    • -i: 显示 inode 使用情况 (对于包含大量小文件的情况很有用)。
  • 输出列说明:
    • Filesystem: 文件系统所在设备或挂载点。
    • Size: 总大小。
    • Used: 已用空间。
    • Available: 可用空间。
    • Use%: 使用百分比。
    • Mounted on: 挂载点。
  • 用途: 监控各文件系统的磁盘空间使用情况,及时发现空间不足问题。

6. 磁盘分区与格式化工具 parted

parted 是一个功能更强大的分区工具,支持 MBR 和 GPT 分区表,并且可以处理更大的磁盘。

  • 基本操作:
    • parted /dev/sdX: 启动 parted 工具。
    • print: 显示当前分区表。
    • mklabel gpt/mbr: 创建 GPT 或 MBR 分区表。
    • mkpart part-type start end: 创建分区 (part-type: primary, logical, extended; start/end: 起始/结束位置,如 1GB, 100%).
    • rm N: 删除编号为 N 的分区。
    • resizepart N end: 调整分区 N 的大小 (end: 新的结束位置)。
    • set N flag on/off: 设置/取消分区标志 (如 boot, hidden, lba)。
    • quit: 退出。
  • 注意: parted 操作是直接在磁盘上进行的,务必小心,操作前最好备份重要数据或创建分区表备份 (parted ... backup ...)。

7. 软件RAID管理 mdadm

mdadm 是 Linux 下管理软件 RAID 的标准工具。

  • 基本操作:
    • mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sd{b,c,d}1: 创建一个 RAID 5 阵列,使用 /dev/sdb1, /dev/sdc1, /dev/sdd1 三个分区。
    • mdadm --detail /dev/md0: 查看 RAID 阵列详细信息。
    • mdadm --stop /dev/md0: 停止 RAID 阵列。
    • mdadm --assemble /dev/md0 /dev/sd{b,c,d}1: 重新组装 RAID 阵列。
    • mdadm --manage /dev/md0 --add /dev/sde1: 向 RAID 阵列中添加一个热备盘或替换故障盘。
    • mdadm --monitor --daemonize --delay=60 --pid=/var/run/mdadm/monitor.pid: 启动 RAID 监控守护进程。
  • 配置文件: /etc/mdadm.conf 或 /etc/mdadm/mdadm.conf 存储了 RAID 阵列的配置信息,用于系统启动时自动组装阵列。可以使用 mdadm --detail --scan > /etc/mdadm.conf 生成配置文件内容。

8. 逻辑卷管理 LVM

LVM 提供了更灵活的磁盘管理方式,允许动态调整卷的大小。

  • 基本概念:
    • 物理卷 (PV, Physical Volume): 磁盘或分区,是 LVM 的基础。
    • 卷组 (VG, Volume Group): 由一个或多个 PV 组成,是 LVM 的存储池。
    • 逻辑卷 (LV, Logical Volume): 从 VG 中分配空间创建,对用户和应用程序表现为一个独立的块设备,可以格式化并挂载。
  • 基本操作:
    • 创建 PV: pvcreate /dev/sdXN
    • 查看 PV: pvdisplaypvscan
    • 创建 VG: vgcreate vg_name /dev/sdXN /dev/sdYM ...
    • 查看 VG: vgdisplayvgscan
    • 创建 LV: lvcreate -L size -n lv_name vg_name (size: 如 10G, 50%FREE)
    • 查看 LV: lvdisplaylvscan
    • 格式化 LV: mkfs.ext4 /dev/vg_name/lv_name
    • 挂载 LV: mount /dev/vg_name/lv_name /mnt/lv_mount
    • 调整 LV 大小:
      • 扩展 VG: vgextend vg_name /dev/sdYN (将新 PV 加入 VG)
      • 扩展 LV: lvextend -L +size /dev/vg_name/lv_name 或 lvextend -L 100%VG /dev/vg_name/lv_name (size: 如 5G)
      • 调整文件系统大小 (取决于文件系统类型):
        • ext2/ext3/ext4: resize2fs /dev/vg_name/lv_name
        • xfs: xfs_growfs /mnt/lv_mount
    • 缩小 LV: (需要先卸载 LV,调整文件系统大小,再缩小 LV)
      • 调整文件系统大小 (缩小): resize2fs /dev/vg_name/lv_name size 或 xfs_repair -L /dev/vg_name/lv_name && xfs_growfs -D size /mnt/lv_mount (xfs 调整复杂,通常建议先备份)
      • 缩小 LV: lvreduce -L -size /dev/vg_name/lv_name
    • 删除 LV/VG/PV: 按相反顺序删除,并确保 LV 未挂载,VG 中无 LV,PV 不属于任何 VG。

补充重要概念和操作:

  • 文件系统挂载:

    • mount source destination: 挂载文件系统。source 是设备名 (如 /dev/sda1, /dev/md0, /dev/vg0/lv0) 或挂载点 (如果 source 是一个目录)。destination 是挂载点目录。
    • umount mountpoint: 卸载文件系统。
    • /etc/fstab: 用于配置系统启动时自动挂载的文件系统。格式通常为:<file system> <mount point> <type> <options> <dump> <pass>
      • <file system>: 设备名 (推荐使用 UUID 或 LABEL) 或远程文件系统地址。
      • <mount point>: 挂载点目录。
      • <type>: 文件系统类型 (如 ext4, xfs, nfs)。
      • <options>: 挂载选项 (如 defaultsrwronoatimeuser)。
      • <dump>: 由 dump 命令使用,用于备份。0 表示不备份,1 表示备份 (通常根分区为 1,其他为 0)。
      • <pass>: 由 fsck 命令使用,指定文件系统检查的顺序。0 表示不检查,1 表示最先检查 (通常根分区为 1),其他数字按顺序检查。
    • 示例 /etc/fstab 条目:
      • UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /data ext4 defaults 0 2
      • LABEL=backup /mnt/backup xfs defaults,noatime 0 0
      • 192.168.1.100:/export/share /mnt/nfs nfs defaults 0 0
  • 文件系统创建 (格式化):

    • mkfs.ext4 /dev/sdXN: 创建 ext4 文件系统。
    • mkfs.xfs /dev/vg0/lv0: 创建 xfs 文件系统。
    • mkswap /dev/sdXN: 创建 swap 分区。
    • swapon /dev/sdXN: 启用 swap 分区。
    • swapoff /dev/sdXN: 禁用 swap 分区。
    • free -h: 查看 swap 使用情况。
  • 磁盘健康检查:

    • SMART (Self-Monitoring, Analysis, and Reporting Technology): 硬盘自监测技术。
    • smartctl -a /dev/sdX: 查看硬盘 SMART 信息。
    • smartctl -s on /dev/sdX: 启用 SMART。
    • smartctl -t short /dev/sdX: 运行短测试。
    • smartctl -H /dev/sdX: 检查硬盘健康状态。
  • 磁盘性能监控:

    • iostat -x 1: 监控磁盘 I/O 性能,显示设备使用率、等待时间等关键指标。

十.软件管理

  1. RPM包管理器(RPM Package Manager)
  • rpm 命令用于管理RPM软件包。常用选项包括:
    -ivh:安装软件包,显示进度、校验包完整性并显示安装信息。
    -ql:列出软件包安装的文件。
    -qa:列出所有已安装的软件包。
    -qf:查询文件属于哪个软件包。
    -qc:显示软件包的配置文件。
    -qd:显示软件包的文档文件。
    –scripts:显示软件包包含的脚本。
    –nodeps:不检查依赖关系安装软件包。
    –force:强制安装软件包,即使已经安装或存在依赖问题。

  • RHEL 9 使用 DNF(Dandified Yum)作为默认的包管理器,而 RHEL 7 使用 YUM(Yellowdog Updater Modified)。

  1. 绿色软件(免安装软件)
  • 这类软件通常是指解压后即可直接运行的软件,不需要安装过程。
  1. 源码编译安装
  • 源码编译安装软件通常包括下载源码、解压、编译和安装几个步骤。编译安装可以更好地定制软件选项和优化性能。
  1. 建立本地软件仓库
  • 在虚拟机中加载系统镜像并设置虚拟光驱开机启动。
  • 挂载光驱到系统目录。

[root@rhe19 ~l# mkdir  /rhe19.4

[rootarhe19 ~l# mount  /dev/cdrom  /rhe19.4/

  • 设置光驱开机自动挂载。

[root@rhe19 ~]# vim /etc/rc.d/rc.1ocal #开机自运行脚本

[root@rhe19 ~l# chmod  +x  /etc/rc.d/rc.loca]

  • 配置仓库指向文件,指定软件仓库的位置和是否启用 GPG 校验。

实例(版本9):

[rootarhe19 ~]# cd /etc/yum.repos.d/

[rootarhe19 yum.repos.d]# vim rhel9.repo

[Appstream]

name = Appstream

baseurl= file:///rhe19.4/Appstream

gpgcheck = 1

gpgkey = file:///rhe19.4/RPM-GPG-KEY-redhat-release(密钥,在挂载目录下)

enabled =1

[Baseos]

name = BaseOs

baseurl= file:///rhe19.4/Baseos

gpgcheck=1

gpgkey =file:///rhe19.4/RPM-GPG-KEY-redhat-release

enabled=1

(版本7):

[rhe17]

name = rhel7

baseurl = file:///rhe17

gpgcheck=0

  1. 建立第三方软件仓库
  • 下载第三方软件到指定目录。

[rootarhe19 ~l# mkdir /software

[rootarhe19 software]# wget  

https://d1dir1v6.99.com/qqfi1e/qq/Q0NT/Linux/00_3.2.18_250626_x86_64_01.rpm(这里以QQ做示例)

  • 安装软件信息采集工具(如 createrepo)。

[root@rhe19 software]# dnf install createrepo -y

[root@rhel9 software]# createrepo -v /software/

[root@rhel9 software]# ls

00 3.2.18 250626 x86 64 01.rpm repodata #repodata目录是通过createrepo命令采集出来的数据目录

  • 配置系统以使用第三方软件仓库。

[root@rhe19 software]# vim /etc/yum.repos.d/rhe19.repo

[qq]

name = qq

baseur] = file:///software

gpgcheck=0

enabled =1

  1. 软件包查询和安装
  • 使用 dnf whatprovides 命令可以根据文件名查找提供该文件的软件包。
  • 使用 dnf install 命令可以安装软件包。
  1. 开机执行命令文件
  • /etc/rc.d/rc.local 文件用于存储开机时需要执行的命令。

十一.脚本文件(用于改网卡名,IP,主机名)

版本9

#!/bin/bash

ifconfig $l &> /dev/null || {

echo "net device $l is not exist"

exit

}

ping -cl -wl $2 &> /dev/null && {

echo "$2 is exist"

exit

}

grep $1 -r /etc/NetworkManager/system-connections/ | awk -F : '{system("rm -fr " $1)}'

cat >/etc/NetworkManager/system-connections/$1.nmconnection <<EOF

[connection]

id=$1

type=ethernet

interface-name=$1

[ipv4]

method=manual

address1=$2/24,172.25.254.2

dns=8.8.8.8

EOF

chmod 600 /etc/NetworkManager/system-connections/$1.nmconnection

nmcli connection reload

nmcli connection up $1

hostnamectl hostname $3

grep -e "$2\t$3" /etc/hosts || {

echo -e "$2\t$3" >> /etc/hosts

}

版本7

#!/bin/bash

ifconfig $l &> /dev/null || {

echo "net device $l is not exist"

exit

}

ping -c1 -wl $2 &> /dev/null && {

echo "$2 is exist"

exit

}

grep $1 -r /etc/sysconfig/network-scripts/ | awk -F : '{system("rm -fr " $l)}'

cat >/etc/sysconfig/network-scripts/ifcfg-$1 <<EOF

DEVICE=$1

NAME=$1

BOOTPROTO=none

IPADDR0=$2

PREFIX0=24

GATEWAY0=172.25.254.2

DNS1=8.8.8.8

ONBOOT=yes

EOF

nmcli connection reload

nmcli connection up $1

hostnamectl set-hostname $3

grep -e "$2\t$3" /etc/hosts || {

echo -e "$2\t$3" >> /etc/hosts

}

http://www.xdnf.cn/news/15259.html

相关文章:

  • 前端进阶之路-从传统前端到VUE-JS(第五期-路由应用)
  • react中为啥使用剪头函数
  • 【Java入门到精通】(三)Java基础语法(下)
  • 博途多重背景、参数实例--(二)
  • 多线程的区别和联系
  • 子数组最大平均数 I
  • Leetcode力扣解题记录--第3题(滑动窗口)
  • WildCard野卡已跑路(包含gpt plus升级方案)
  • 程序改错---字符串
  • 【notes】注意力和KV Cache
  • 检查输入有效性(指针是否为NULL)和检查字符串长度是否为0
  • 阻有形,容无声——STA 签核之RC Corner
  • 加法器学习
  • docker搭建 与镜像加速器
  • scrapy项目开发流程
  • 【数据结构初阶】--单链表(一)
  • C++ Primer(第5版)- Chapter 7. Classes -001
  • AI大模型(七)Langchain核心模块与实战(二)
  • 嵌入式领域编码合集(为什么中文会乱码)
  • (一)一阶数字低通滤波器---原理及其推导
  • web网站无法抓包排查;burp无法抓包情况
  • 实用技巧 Excel 与 XML互转
  • 鸿蒙进程通信的坑之ServiceExtensionAbility
  • 【大模型】深度学习之神经网络
  • Scrapy爬虫中间件核心技术解析:定制化爬虫的神经中枢
  • 9.2 埃尔米特矩阵和酉矩阵
  • 张量拼接操作
  • Git系列--4.Git分支设计规范
  • 深大计算机游戏开发 实验二
  • 8. JVM类装载的执行过程