1. RH134常用知识点深度解析
作为红帽认证系统管理员(RHCSA)的进阶课程,RH134涵盖了Linux系统管理中诸多实用技能。在实际工作中,我发现很多知识点虽然教材中一笔带过,但却是日常运维的高频需求。这里我将结合多年运维经验,分享那些官方文档不会告诉你的实战细节。
提示:本文所有命令示例均基于RHEL 8/CentOS 8环境,其他发行版可能需要适当调整
1.1 系统服务管理进阶技巧
systemd作为现代Linux的标准初始化系统,其核心命令systemctl看似简单,实则暗藏玄机。比如查看服务依赖关系这个实用功能:
bash复制# 显示服务的完整依赖树
systemctl list-dependencies --reverse nginx.service
# 显示服务启动时间线
systemd-analyze plot > boot.svg
更实用的服务故障排查命令组合:
bash复制# 查看服务最新日志(自动跟踪)
journalctl -u sshd -f
# 按时间范围过滤日志
journalctl --since "2023-07-01" --until "2023-07-02"
1.2 存储管理实战要点
LVM的常规操作教材都有,但实际工作中这些场景更常见:
场景1:在线扩展根分区
bash复制# 查看当前VG空间
vgs
# 创建新物理卷
pvcreate /dev/sdb
# 扩展卷组
vgextend rhel /dev/sdb
# 扩展逻辑卷(+10G)
lvextend -L +10G /dev/rhel/root
# 调整文件系统(xfs与ext4不同)
xfs_growfs / # 对于xfs
resize2fs /dev/rhel/root # 对于ext4
场景2:创建快照备份
bash复制lvcreate -L 5G -s -n db_snap /dev/vg00/mysql
重要:快照空间耗尽会导致自动失效,生产环境建议监控快照空间使用率
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 网络配置深度优化
2.1 nmcli高阶用法
NetworkManager的CLI工具nmcli功能强大但语法复杂,这些模板建议收藏:
绑定网卡配置:
bash复制nmcli con add type bond ifname bond0 mode active-backup
nmcli con add type bond-slave ifname eth0 master bond0
nmcli con add type bond-slave ifname eth1 master bond0
nmcli con mod bond0 ipv4.addresses 192.168.1.100/24
nmcli con mod bond0 ipv4.gateway 192.168.1.1
nmcli con mod bond0 ipv4.dns "8.8.8.8"
nmcli con mod bond0 ipv4.method manual
nmcli con up bond0
VLAN配置一行命令:
bash复制nmcli con add type vlan con-name vlan10 dev eth0 id 10 ip4 10.0.10.2/24 gw4 10.0.10.1
2.2 防火墙策略优化
firewalld的富规则(Rich Rule)语法复杂但功能强大,这些规则模板可直接使用:
bash复制# 允许特定IP访问SSH
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" service name="ssh" accept'
# 限制连接速率
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="http" limit value="5/m" accept'
# 端口转发
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" forward-port port="8080" protocol="tcp" to-port="80" to-addr="192.168.2.100"'
3. 安全加固实操指南
3.1 SELinux故障排查三板斧
- 查看拒绝日志:
bash复制ausearch -m avc -ts recent
- 生成自定义策略模块:
bash复制audit2allow -a -M mypolicy
semodule -i mypolicy.pp
- 临时调试开关:
bash复制setenforce 0 # 宽容模式
setenforce 1 # 强制模式
3.2 账户安全最佳实践
密码策略强化:
bash复制# 编辑/etc/login.defs
PASS_MAX_DAYS 90
PASS_MIN_DAYS 7
PASS_MIN_LEN 12
PASS_WARN_AGE 14
# 使用pam_pwquality
echo "password requisite pam_pwquality.so retry=3 minlen=12 difok=3 ucredit=-1 lcredit=-1 dcredit=-1" >> /etc/pam.d/system-auth
sudo权限精细控制:
bash复制# 示例:允许运维组无需密码执行特定命令
%ops ALL=(ALL) NOPASSWD: /bin/systemctl restart nginx, /bin/systemctl status nginx
4. 性能调优实战技巧
4.1 系统资源监控组合拳
实时监控黄金命令:
bash复制# CPU/内存/IO综合监控
dstat -tcmnd --disk-util --top-cpu --top-io
# 网络流量分析
nethogs eth0 # 按进程统计
iftop -i eth0 # 按连接统计
自动化收集脚本:
bash复制#!/bin/bash
LOG_DIR=/var/log/perf
mkdir -p $LOG_DIR
# 每隔5秒采集一次,共采集10次
sar -u -r -d -n DEV 5 10 > $LOG_DIR/$(date +%F)_system.log
pidstat -d 5 10 > $LOG_DIR/$(date +%F)_disk.log
4.2 内核参数调优示例
网络性能优化:
bash复制# 编辑/etc/sysctl.conf
net.core.rmem_max=16777216
net.core.wmem_max=16777216
net.ipv4.tcp_keepalive_time=600
net.ipv4.tcp_fin_timeout=30
net.ipv4.tcp_tw_reuse=1
文件系统缓存优化:
bash复制vm.dirty_ratio=10
vm.dirty_background_ratio=5
vm.swappiness=10
5. 自动化运维实战
5.1 定时任务进阶用法
防止任务重叠的模板:
bash复制* * * * * /usr/bin/flock -n /tmp/myjob.lock /path/to/script.sh
带日志记录的任务:
bash复制0 3 * * * /root/backup.sh >> /var/log/backup.log 2>&1
5.2 Ansible速查模板
主机批量操作:
yaml复制- name: 批量更新软件包
hosts: webservers
tasks:
- name: 更新所有包
yum:
name: '*'
state: latest
async: 3600
poll: 0
文件分发模板:
yaml复制- name: 部署配置文件
copy:
src: /local/path/nginx.conf
dest: /etc/nginx/nginx.conf
owner: root
group: root
mode: '0644'
notify: restart nginx
6. 故障排查工具箱
6.1 系统启动问题排查
救援模式实用命令:
bash复制# 检查启动日志
journalctl -b -1 # 上一次启动日志
journalctl -xb -p err # 错误日志
# 修复grub
grub2-install /dev/sda
grub2-mkconfig -o /boot/grub2/grub.cfg
6.2 性能瓶颈快速定位
CPU瓶颈:
bash复制perf top # 实时热点函数
pidstat 1 # 进程级CPU统计
IO瓶颈:
bash复制iotop -o # 实时IO监控
iostat -x 1 # 设备级IO统计
内存瓶颈:
bash复制vmstat 1 # 内存/swap使用趋势
slabtop # 内核slab缓存分析
7. 实用脚本片段库
7.1 日志分析脚本
bash复制#!/bin/bash
# 分析nginx访问日志TOP10 IP
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -10
# 统计HTTP状态码
awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -nr
7.2 系统信息收集
bash复制#!/bin/bash
echo "===== System Info ====="
hostnamectl
echo -e "\n===== Disk Usage ====="
df -hT
echo -e "\n===== Memory Usage ====="
free -h
echo -e "\n===== Top Processes ====="
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head
8. 软件管理技巧
8.1 YUM/DNF高阶用法
创建本地仓库:
bash复制# 安装必要工具
dnf install createrepo httpd -y
# 复制RPM包到目录
mkdir -p /var/www/html/repo
cp *.rpm /var/www/html/repo/
# 创建仓库元数据
createrepo /var/www/html/repo
# 配置客户端
cat > /etc/yum.repos.d/local.repo <<EOF
[local]
name=Local Repository
baseurl=http://server_ip/repo
enabled=1
gpgcheck=0
EOF
下载包及其依赖:
bash复制dnf download --resolve nginx
8.2 RPM实用操作
查询文件属于哪个包:
bash复制rpm -qf /etc/nginx/nginx.conf
验证包完整性:
bash复制rpm -V nginx
提取RPM文件:
bash复制rpm2cpio package.rpm | cpio -idmv
9. 终端生产力工具
9.1 tmux高效用法
会话管理模板:
bash复制# 新建命名会话
tmux new -s session_name
# 分离会话
Ctrl+b d
# 列出会话
tmux ls
# 附加会话
tmux a -t session_name
窗口分割快捷键:
bash复制Ctrl+b % # 垂直分割
Ctrl+b " # 水平分割
Ctrl+b 方向键 # 切换窗格
9.2 SSH技巧合集
免密登录配置:
bash复制ssh-keygen -t ed25519
ssh-copy-id user@remote_host
通过跳板机连接:
bash复制ssh -J jump_user@jump_host:port target_user@target_host
保持连接不断开:
bash复制# 客户端配置(~/.ssh/config)
Host *
ServerAliveInterval 60
TCPKeepAlive yes
10. 内核与模块管理
10.1 内核参数动态调整
bash复制# 查看当前值
sysctl kernel.pid_max
# 临时修改
sysctl -w kernel.pid_max=65535
# 永久修改
echo "kernel.pid_max=65535" >> /etc/sysctl.conf
sysctl -p
10.2 内核模块操作
常用命令:
bash复制lsmod # 已加载模块
modinfo ext4 # 模块信息
modprobe -r module_name # 移除模块
modprobe module_name # 加载模块
模块黑名单:
bash复制echo "blacklist module_name" >> /etc/modprobe.d/blacklist.conf
11. 日志管理进阶
11.1 logrotate配置实例
bash复制# /etc/logrotate.d/nginx
/var/log/nginx/*.log {
daily
missingok
rotate 30
compress
delaycompress
notifempty
create 640 nginx adm
sharedscripts
postrotate
/bin/kill -USR1 $(cat /run/nginx.pid 2>/dev/null) 2>/dev/null || true
endscript
}
11.2 集中式日志方案
rsyslog转发配置:
bash复制# 客户端配置(/etc/rsyslog.conf)
*.* @192.168.1.100:514
# 服务端配置
module(load="imudp")
input(type="imudp" port="514")
12. 时间同步最佳实践
12.1 chrony配置模板
bash复制# /etc/chrony.conf
server ntp1.aliyun.com iburst
server ntp2.aliyun.com iburst
stratumweight 0
driftfile /var/lib/chrony/drift
rtcsync
makestep 1.0 3
allow 192.168.1.0/24
local stratum 10
常用命令:
bash复制chronyc sources -v # 查看源状态
chronyc tracking # 查看同步状态
chronyc makestep # 立即同步
13. 文件系统实用技巧
13.1 文件查找高效命令
bash复制# 按名称查找(忽略大小写)
find / -iname "*.conf" -type f
# 按大小查找(大于10MB)
find / -size +10M -exec ls -lh {} \;
# 按时间查找(7天内修改过)
find / -mtime -7
13.2 文件权限深度管理
ACL权限设置:
bash复制setfacl -m u:user:rwx /path/to/file # 添加用户权限
setfacl -m g:group:rx /path/to/file # 添加组权限
getfacl /path/to/file # 查看ACL
特殊权限位:
bash复制chmod +t /shared_dir # 设置粘滞位
chmod u+s /usr/bin/passwd # 设置SUID
14. 备份与恢复策略
14.1 tar高级用法
bash复制# 增量备份
tar -g /backup/snapshot -czvf /backup/incr_$(date +%F).tar.gz /data
# 排除特定文件
tar --exclude='*.tmp' -czvf backup.tar.gz /home
# 并行压缩(pigz工具)
tar -cf - /data | pigz -p 8 > backup.tar.gz
14.2 rsync实时同步
bash复制# 镜像同步
rsync -avz --delete /source/ user@remote:/target/
# 带宽限制
rsync --bwlimit=1000 -avz /source/ user@remote:/target/
# 增量备份
rsync -avz --link-dest=/previous_backup /source/ /new_backup/
15. 容器化基础操作
15.1 Podman快速入门
bash复制# 替代docker命令
alias docker=podman
# 运行容器
podman run -d --name nginx -p 8080:80 nginx
# 查看容器
podman ps -a
# 构建镜像
podman build -t myapp .
15.2 系统容器管理
bash复制# 启动容器服务
systemctl start podman.socket
# 自动启动容器
podman generate systemd --new --name nginx > /etc/systemd/system/nginx.service
systemctl enable --now nginx.service
16. 性能分析工具链
16.1 perf实战示例
bash复制# CPU热点分析
perf record -F 99 -ag -- sleep 30
perf report
# 函数调用图
perf record -g -- sleep 10
perf script | stackcollapse-perf.pl | flamegraph.pl > flame.svg
16.2 bpftrace快速入门
bash复制# 跟踪open系统调用
bpftrace -e 'tracepoint:syscalls:sys_enter_open { printf("%s %s\n", comm, str(args->filename)); }'
# 统计系统调用次数
bpftrace -e 'tracepoint:syscalls:sys_enter_* { @[probe] = count(); }'
17. 系统调优检查清单
17.1 安全基线检查
bash复制# 检查空密码账户
awk -F: '($2 == "") {print $1}' /etc/shadow
# 检查SUID文件
find / -perm -4000 -type f -exec ls -la {} \;
# 检查世界可写文件
find / -perm -2 -type f ! -path "/proc/*" -exec ls -la {} \;
17.2 性能基线检查
bash复制# 检查最大打开文件数
ulimit -n
cat /proc/sys/fs/file-max
# 检查内核参数
sysctl -a | grep -E 'tcp_max_syn_backlog|somaxconn'
# 检查磁盘调度器
cat /sys/block/sda/queue/scheduler
18. 实用命令速查表
18.1 文本处理三剑客
grep进阶:
bash复制grep -P 'pattern' # 启用PCRE正则
grep -o 'pattern' # 只输出匹配部分
grep -C 3 'pattern' # 显示上下文3行
awk模板:
bash复制awk '{sum+=$3} END {print sum}' data.txt # 列求和
awk 'NR>=10 && NR<=20' file.txt # 提取10-20行
sed技巧:
bash复制sed -i.bak 's/old/new/g' file.txt # 替换并备份
sed '/pattern/d' file.txt # 删除匹配行
18.2 系统信息速查
bash复制# CPU信息
lscpu
cat /proc/cpuinfo
# 内存信息
free -h
cat /proc/meminfo
# 硬件信息
dmidecode -t system
lshw -short
19. 终端快捷键大全
19.1 Bash高效操作
bash复制Ctrl + r # 命令历史搜索
Ctrl + a # 移动到行首
Ctrl + e # 移动到行尾
Alt + . # 插入上一个命令的最后一个参数
!! # 上一条命令
!$ # 上条命令的最后一个参数
19.2 命令行编辑技巧
bash复制# 快速修改上条命令
^old^new # 替换上条命令中的字符串
# 使用fc编辑历史命令
fc # 编辑上条命令
fc 123 # 编辑历史编号123的命令
20. 系统救援实用技巧
20.1 单用户模式操作
bash复制# 修改root密码
passwd root
# 修复文件系统
fsck -y /dev/sda1
# 重新安装grub
grub2-install /dev/sda
grub2-mkconfig -o /boot/grub2/grub.cfg
20.2 急救模式挂载
bash复制# 查看磁盘分区
lsblk
# 挂载根分区
mkdir /mnt/sysroot
mount /dev/sda2 /mnt/sysroot
mount --bind /proc /mnt/sysroot/proc
mount --bind /dev /mnt/sysroot/dev
mount --bind /sys /mnt/sysroot/sys
chroot /mnt/sysroot
