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
反向选择(不匹配的行)。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 - [用户名]
:切换用户身份(-
表示加载目标用户的环境变量)。chmod [选项] [模式] [文件/目录]
:修改文件/目录权限。模式可以是符号法(u/g/o/a +/- /= rwx
)或数字法(如 755
)。chown [选项] [用户][:组] [文件/目录]
:修改文件/目录的所有者及所属组。选项 -R
递归修改目录下所有文件。chgrp [组名] [文件/目录]
:修改文件/目录的所属组。s
(有执行权限时)或 S
(无执行权限时)在用户执行位。常见于 /usr/bin/passwd
。s
或 S
在组执行位。t
或 T
在其他用户执行位。常见于 /tmp
目录。setfacl [选项] [规则] [文件/目录]
:设置ACL。规则格式如 -m u:用户名:rw-
(为用户添加读写权限)。getfacl [文件/目录]
:查看ACL设置。setfacl -b [文件/目录]
:删除所有ACL设置。
用户类别:
u
表示文件所有者(user)。g
表示文件所属组(group)。o
表示其他用户(others)。a
表示所有类别(all)。权限操作:
+
表示添加权限。-
表示移除权限。=
表示设置确切的权限,替换原有的权限设置。权限类型:
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 权限。
三、 进程管理
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 %任务号
:将暂停的后台任务继续在后台运行。0
(无操作),1
(SIGHUP,重新加载配置),2
(SIGINT,中断,如Ctrl+C),3
(SIGQUIT,退出并转储核心),9
(SIGKILL,强制终止),15
(SIGTERM,请求终止),18
(SIGCONT,继续执行),19
(SIGSTOP,暂停)。systemctl [命令] [服务名]
:管理systemd服务。常用命令:start
, stop
, restart
, reload
, enable
(开机启动),disable
(取消开机启动),status
(查看状态)。systemctl
:不带参数查看所有服务状态。四、 网络管理
nmcli networking on/off
:开启/关闭网络功能。nmcli connection up/down [连接名]
:激活/停用网络连接。nmcli connection show
:查看所有连接配置。nmcli connection edit [连接名]
:编辑连接配置。nmcli connection reload
:重新加载网络配置。/etc/NetworkManager/system-connections/连接名称.nmconnection
600
(root:root)。[connection]
id=连接名称
type=ethernet //网络类型
interface-name=网卡名称[ipv4]
method=manual //手动指定
address1=IP地址/netmask,网关
dns=DNS服务器地址[ipv6]
method=ignore
###版本9###
/etc/sysconfig/network-scripts/ifcfg-接口名
600
(root:root)。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
(在rhel7中进入/etc/sysconfig/selinux 改为selinux=disabled)
网络配置:
nmcli
和 nmtui
工具进行配置。配置文件通常位于 /etc/NetworkManager/system-connections/
,文件权限为 600。nmcli
和 nmtui
,配置文件位置和格式与 RHEL 7/8 类似,但可能有一些细微调整。注意,RHEL 9 默认使用 systemd-networkd
作为网络管理后端之一,但 NetworkManager
仍然广泛使用。/etc/sysconfig/network-scripts/ifcfg-<接口名>
文件进行配置。ifup
, ifdown
命令用于激活/禁用接口。nmcli connection up
和 nmcli connection down
是更现代的方式。软件包管理:
yum
。dnf
(yum
的更快速、更现代的替代品)。dnf
的命令行选项与 yum
大部分兼容,但有些新特性或更简洁的语法。防火墙管理:
iptables
。firewalld
,一个动态管理的防火墙。常用命令包括 firewall-cmd
。iptables
仍然可用,但通常需要额外安装(如 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
永久设置布尔值。五. 补充遗漏的重要命令/概念
系统服务管理:
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 <服务名>
:查看服务的依赖关系。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
:系统启动时自动挂载文件系统的配置文件。格式:<设备> <挂载点> <文件系统类型> <挂载选项>
。df -h
:以人类可读格式显示磁盘分区使用情况。du -sh <目录/文件>
:以人类可读格式显示目录或文件的总大小。fsck <设备>
:检查并尝试修复文件系统错误。通常在单用户模式下使用,特别是对于 XFS 文件系统,可能需要特定工具如 xfs_repair
。日志管理:
journalctl -xe
:查看系统日志并显示未显示的日志。journalctl -u <服务名>
:查看特定服务的日志。journalctl --since "2023-01-01 12:00:00"
:查看指定时间后的日志。journalctl --until "2023-01-01 13:00:00"
:查看指定时间前的日志。/var/log/
目录下,如 messages
, secure
, cron
, maillog
, dmesg
等。可以用 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 开头的最近一条命令。六. 增加示例与解释
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) 逻辑卷管理:
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 <卷组名>
:移除卷组。pvdisplay
, vgdisplay
, lvdisplay
, lvs
, vgs
, pvs
。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 > ... <:使用 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
作为文件名,内容格式为键值对。
八. 检查遗漏的重要概念
nice
值(0-19,值越大优先级越低),renice
命令调整优先级。top
, htop
(需要安装), vmstat
, mpstat
, iostat
(需要安装 sysstat
包)。id
, whoami
, w
, users
, groups
, lastlog
, chage
(管理密码过期策略)。httpd_sys_content_t
, user_home_dir_t
)。firewalld
使用区域概念管理不同网络接口的防火墙规则(如 public
, internal
, home
, trusted
)。/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
: KBM
: MBG
: 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
文件并删除。xargs
:find /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 提供了更灵活的磁盘管理方式,允许动态调整卷的大小。
pvcreate /dev/sdXN
pvdisplay
, pvscan
vgcreate vg_name /dev/sdXN /dev/sdYM ...
vgdisplay
, vgscan
lvcreate -L size -n lv_name vg_name
(size: 如 10G, 50%FREE)lvdisplay
, lvscan
mkfs.ext4 /dev/vg_name/lv_name
mount /dev/vg_name/lv_name /mnt/lv_mount
vgextend vg_name /dev/sdYN
(将新 PV 加入 VG)lvextend -L +size /dev/vg_name/lv_name
或 lvextend -L 100%VG /dev/vg_name/lv_name
(size: 如 5G)resize2fs /dev/vg_name/lv_name
xfs_growfs /mnt/lv_mount
resize2fs /dev/vg_name/lv_name size
或 xfs_repair -L /dev/vg_name/lv_name && xfs_growfs -D size /mnt/lv_mount
(xfs 调整复杂,通常建议先备份)lvreduce -L -size /dev/vg_name/lv_name
补充重要概念和操作:
文件系统挂载:
mount source destination
: 挂载文件系统。source 是设备名 (如 /dev/sda1, /dev/md0, /dev/vg0/lv0) 或挂载点 (如果 source 是一个目录)。destination 是挂载点目录。umount mountpoint
: 卸载文件系统。/etc/fstab
: 用于配置系统启动时自动挂载的文件系统。格式通常为:
: 设备名 (推荐使用 UUID 或 LABEL) 或远程文件系统地址。
: 挂载点目录。
: 文件系统类型 (如 ext4, xfs, nfs)。
: 挂载选项 (如 defaults
, rw
, ro
, noatime
, user
)。
: 由 dump 命令使用,用于备份。0 表示不备份,1 表示备份 (通常根分区为 1,其他为 0)。
: 由 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 使用情况。磁盘健康检查:
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 性能,显示设备使用率、等待时间等关键指标。十.软件管理
rpm 命令用于管理RPM软件包。常用选项包括:
-ivh:安装软件包,显示进度、校验包完整性并显示安装信息。
-ql:列出软件包安装的文件。
-qa:列出所有已安装的软件包。
-qf:查询文件属于哪个软件包。
-qc:显示软件包的配置文件。
-qd:显示软件包的文档文件。
–scripts:显示软件包包含的脚本。
–nodeps:不检查依赖关系安装软件包。
–force:强制安装软件包,即使已经安装或存在依赖问题。
RHEL 9 使用 DNF(Dandified Yum)作为默认的包管理器,而 RHEL 7 使用 YUM(Yellowdog Updater Modified)。
[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]
实例(版本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
[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做示例)
[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
十一.脚本文件(用于改网卡名,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 <
[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 <
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
}