1. Linux基础操作进阶指南
作为一个在Linux环境下摸爬滚打多年的老运维,我深知系统基础操作的重要性。很多人觉得Linux命令行枯燥难懂,其实只要掌握几个核心概念和技巧,就能大幅提升工作效率。今天我们就来深入探讨那些真正实用的Linux基础操作,这些内容都是我每天实际工作中高频使用的技能。
2. 文件系统深度探索
2.1 目录结构解析
Linux的文件系统采用树形结构,与Windows的盘符概念完全不同。理解这个结构是高效使用Linux的基础:
code复制/
├── bin -> usr/bin # 基础命令二进制文件
├── boot # 启动相关文件
├── dev # 设备文件
├── etc # 系统配置文件
├── home # 用户主目录
├── lib -> usr/lib # 系统库文件
├── media # 可移动设备挂载点
├── mnt # 临时挂载点
├── opt # 第三方软件安装目录
├── proc # 进程和系统信息
├── root # root用户主目录
├── run # 运行时数据
├── sbin -> usr/sbin # 系统管理命令
├── srv # 服务数据
├── sys # 系统设备信息
├── tmp # 临时文件
├── usr # 用户程序
└── var # 可变数据(日志等)
提示:
/proc和/sys是虚拟文件系统,不占用实际磁盘空间,它们提供了访问内核数据的接口。
2.2 文件权限管理实战
Linux权限系统由三部分组成:用户(u)、组(g)、其他(o),每个部分有读(r)、写(w)、执行(x)权限。理解权限表示法至关重要:
bash复制-rw-r--r-- 1 user group 1024 Jun 1 10:00 file.txt
drwxr-xr-x 2 user group 4096 Jun 1 10:00 directory/
权限修改的几种实用方式:
bash复制chmod u+x file.sh # 给所有者添加执行权限
chmod 755 script.sh # 数字表示法:rwxr-xr-x
chown user:group file # 修改所有者和组
常见问题:执行脚本时报"Permission denied",通常需要
chmod +x添加执行权限。
3. 文本处理三剑客
3.1 grep进阶技巧
grep是文本搜索的利器,这些选项能大幅提升效率:
bash复制grep -r "pattern" /path # 递归搜索目录
grep -i "pattern" file # 忽略大小写
grep -v "pattern" file # 反向匹配
grep -A 3 -B 2 "pattern" file # 显示匹配行前后内容
grep -E "regex" file # 使用扩展正则
3.2 sed流编辑器实战
sed特别适合批量文本替换,记住这个万能公式:
bash复制sed -i 's/old/new/g' file.txt # 全局替换
sed -n '5,10p' file.txt # 打印5-10行
sed '/pattern/d' file.txt # 删除匹配行
sed '1i\插入内容' file.txt # 第一行前插入
3.3 awk数据处理专家
awk是处理结构化文本的神器,基本模式是pattern {action}:
bash复制awk '{print $1,$3}' file.txt # 打印第1和第3列
awk -F: '{print $1}' /etc/passwd # 以冒号分隔
awk '$3 > 100 {print $0}' file # 条件筛选
awk '{sum+=$1} END{print sum}' file # 求和计算
4. 系统监控与进程管理
4.1 实时系统监控工具
bash复制top # 经典系统监控
htop # 增强版top(需安装)
iotop -o # 显示磁盘I/O进程
nethogs # 按进程显示网络流量
技巧:在top界面按
M按内存排序,P按CPU排序,q退出。
4.2 进程管理核心命令
bash复制ps aux | grep process # 查找进程
kill -9 PID # 强制终止进程
pkill -f "pattern" # 按名称终止进程
nice -n 10 command # 调整进程优先级
注意事项:
kill -9是最后手段,可能导致数据丢失,应先尝试kill -15(默认信号)。
5. 网络配置与诊断
5.1 基础网络命令
bash复制ifconfig # 查看网络接口(老版本)
ip addr # 新版IP查看命令
netstat -tulnp # 查看监听端口
ss -tulnp # netstat的现代替代
ping -c 4 example.com # 基本连通性测试
traceroute example.com # 路由追踪
5.2 网络问题诊断流程
- 检查物理连接
- 确认IP配置(
ip addr) - 测试本地回环(
ping 127.0.0.1) - 测试网关连通性
- 测试DNS解析(
dig example.com) - 检查防火墙规则(
iptables -L)
6. 实用脚本编写基础
6.1 Shell脚本基本结构
bash复制#!/bin/bash
# 注释:这是一个示例脚本
# 变量定义
name="Linux"
version=$(uname -r)
# 函数定义
function say_hello() {
echo "Hello, $1!"
}
# 主程序
say_hello "$name用户"
echo "当前内核版本: $version"
6.2 脚本调试技巧
bash复制bash -x script.sh # 显示执行过程
set -e # 遇到错误立即退出
set -u # 使用未定义变量时报错
trap 'echo "Line $LINENO"' ERR # 捕获错误
7. 系统服务管理
7.1 systemd核心命令
bash复制systemctl start service # 启动服务
systemctl stop service # 停止服务
systemctl restart service # 重启服务
systemctl status service # 查看服务状态
systemctl enable service # 设置开机启动
journalctl -u service -f # 查看服务日志
7.2 常见服务管理场景
bash复制# 查看所有服务状态
systemctl list-units --type=service
# 查找特定服务
systemctl list-unit-files | grep nginx
# 分析服务启动时间
systemd-analyze blame
8. 磁盘与文件系统管理
8.1 磁盘空间分析
bash复制df -h # 查看磁盘使用情况
du -sh * # 查看当前目录大小
ncdu # 交互式磁盘分析工具
find / -size +100M # 查找大文件
8.2 文件系统操作
bash复制mkfs.ext4 /dev/sdb1 # 创建ext4文件系统
mount /dev/sdb1 /mnt/data # 挂载文件系统
umount /mnt/data # 卸载文件系统
fsck /dev/sdb1 # 检查修复文件系统
重要提示:操作磁盘分区前务必确认设备标识,错误的操作可能导致数据丢失。
9. 用户与权限体系
9.1 用户管理命令
bash复制useradd -m username # 创建用户并创建家目录
passwd username # 设置密码
usermod -aG group username # 添加用户到附加组
userdel -r username # 删除用户及家目录
9.2 权限特殊设置
bash复制chmod +s file # 设置SUID/SGID
chmod +t directory # 设置粘滞位(常用于/tmp)
setfacl -m u:user:rw file # 设置ACL权限
getfacl file # 查看ACL权限
10. 环境变量与Shell配置
10.1 环境变量管理
bash复制echo $PATH # 查看PATH变量
export VAR=value # 设置临时环境变量
env # 查看所有环境变量
unset VAR # 取消环境变量
10.2 Shell配置文件加载顺序
/etc/profile- 系统全局配置~/.bash_profile- 用户级配置~/.bashrc- 交互式shell配置~/.bash_logout- 退出时执行的命令
个人习惯:将常用别名和函数放在
~/.bashrc中,确保交互式shell可用。
11. 软件包管理
11.1 主流包管理器对比
| 命令 | 系统 | 安装软件 | 更新系统 |
|---|---|---|---|
| apt | Debian/Ubuntu | apt install |
apt update && apt upgrade |
| yum/dnf | RHEL/CentOS | yum install |
yum update |
| pacman | Arch | pacman -S |
pacman -Syu |
| zypper | openSUSE | zypper in |
zypper up |
11.2 常见问题解决
bash复制# 解决依赖问题
apt --fix-broken install
# 查找提供某个文件的包
dnf provides /usr/bin/vim
# 清理包缓存
pacman -Scc
12. 日志分析基础
12.1 主要日志文件位置
bash复制/var/log/messages # 通用系统消息
/var/log/auth.log # 认证相关日志
/var/log/syslog # 系统日志
/var/log/nginx/ # Nginx日志目录
journalctl -xe # 查看systemd日志
12.2 日志分析技巧
bash复制# 查看最新日志
tail -f /var/log/syslog
# 统计404错误
grep " 404 " access.log | wc -l
# 按小时统计请求量
awk '{print $4}' access.log | cut -d: -f2 | sort | uniq -c
13. 定时任务管理
13.1 crontab使用指南
bash复制crontab -e # 编辑当前用户cron任务
crontab -l # 列出cron任务
基本格式:
code复制* * * * * command
┬ ┬ ┬ ┬ ┬
│ │ │ │ └─ 星期 (0 - 6) (0是周日)
│ │ │ └─── 月 (1 - 12)
│ │ └───── 日 (1 - 31)
│ └─────── 时 (0 - 23)
└───────── 分 (0 - 59)
13.2 实用cron示例
bash复制0 3 * * * /path/to/backup.sh # 每天3点执行备份
*/5 * * * * /path/to/check.sh # 每5分钟执行检查
0 0 1 * * /path/to/report.sh # 每月1日执行报告
注意事项:cron执行环境与交互式shell不同,建议脚本中使用绝对路径。
14. 安全加固基础
14.1 SSH安全配置
编辑/etc/ssh/sshd_config:
bash复制Port 2222 # 修改默认端口
PermitRootLogin no # 禁止root登录
PasswordAuthentication no # 禁用密码认证
AllowUsers yourusername # 只允许特定用户
14.2 基础安全实践
bash复制# 检查空密码账户
awk -F: '($2 == "") {print $1}' /etc/shadow
# 检查SUID文件
find / -perm -4000 -type f 2>/dev/null
# 检查最近登录
last
15. 性能调优入门
15.1 系统资源监控
bash复制vmstat 1 # 查看系统整体状态
iostat -xz 1 # 查看磁盘I/O
sar -n DEV 1 # 查看网络流量
free -h # 查看内存使用
uptime # 查看负载平均值
15.2 简单调优技巧
bash复制# 调整swappiness(0-100)
echo 10 > /proc/sys/vm/swappiness
# 增加文件描述符限制
ulimit -n 65536
# 优化磁盘I/O调度器
echo deadline > /sys/block/sda/queue/scheduler
16. 终端使用技巧
16.1 提高效率的快捷键
bash复制Ctrl + A # 移动到行首
Ctrl + E # 移动到行尾
Ctrl + U # 删除到行首
Ctrl + K # 删除到行尾
Ctrl + R # 搜索历史命令
!! # 重复上一条命令
!$ # 上条命令的最后一个参数
16.2 终端复用器tmux
bash复制tmux new -s session_name # 新建会话
tmux attach -t session_name # 附加到会话
Ctrl + b % # 垂直分割窗口
Ctrl + b " # 水平分割窗口
Ctrl + b d # 分离会话
17. 备份与恢复策略
17.1 简单备份方案
bash复制# 使用tar创建完整备份
tar -czvf backup-$(date +%F).tar.gz /path/to/backup
# 使用rsync增量备份
rsync -avz --delete /source/ /backup/
# 使用dd克隆磁盘
dd if=/dev/sda of=/dev/sdb bs=4M status=progress
17.2 备份验证与恢复
bash复制# 验证tar备份完整性
tar -tzvf backup.tar.gz
# 测试rsync备份
rsync -n -avz /backup/ /tmp/test-restore/
# 从备份恢复单个文件
tar -xzvf backup.tar.gz path/to/file
18. 容器化基础
18.1 Docker核心命令
bash复制docker ps # 查看运行中的容器
docker images # 查看本地镜像
docker run -it ubuntu bash # 运行交互式容器
docker exec -it container bash # 进入运行中的容器
docker build -t image . # 构建镜像
18.2 常用容器操作
bash复制# 查看容器日志
docker logs -f container
# 清理无用容器和镜像
docker system prune
# 持久化数据存储
docker run -v /host/path:/container/path image
19. 版本控制基础
19.1 Git基本工作流
bash复制git init # 初始化仓库
git add file # 添加文件到暂存区
git commit -m "message" # 提交更改
git push origin main # 推送到远程
git pull # 拉取更新
19.2 实用Git技巧
bash复制# 查看更改
git diff
# 撤销工作区修改
git checkout -- file
# 修改最后一次提交
git commit --amend
# 创建并切换分支
git checkout -b new-branch
20. 远程服务器管理
20.1 SSH密钥认证设置
bash复制# 生成密钥对
ssh-keygen -t ed25519
# 复制公钥到服务器
ssh-copy-id user@host
# 使用密钥登录
ssh -i ~/.ssh/id_ed25519 user@host
20.2 远程文件传输
bash复制# 安全复制文件
scp file.txt user@host:/path/
# 同步目录
rsync -avz /local/path/ user@host:/remote/path/
# 通过SSH执行远程命令
ssh user@host "command"
21. 系统启动过程解析
21.1 Linux启动阶段
- BIOS/UEFI初始化
- 引导加载程序(GRUB)
- 内核初始化
- systemd/sysvinit启动
- 运行级别/目标启动服务
- 用户登录
21.2 启动问题排查
bash复制# 查看启动日志
journalctl -b
# 查看服务启动时间
systemd-analyze blame
# 进入救援模式
在GRUB界面按e编辑,在linux行尾添加`init=/bin/bash`
22. 内核模块管理
22.1 基本模块操作
bash复制lsmod # 列出已加载模块
modinfo module_name # 显示模块信息
modprobe module_name # 加载模块
rmmod module_name # 卸载模块
22.2 内核参数调整
bash复制# 查看当前参数
sysctl -a
# 临时修改参数
sysctl -w kernel.parameter=value
# 永久修改
echo "kernel.parameter=value" >> /etc/sysctl.conf
sysctl -p
23. 硬件信息查询
23.1 系统硬件概览
bash复制lspci # PCI设备信息
lsusb # USB设备信息
lscpu # CPU信息
lsblk # 块设备信息
dmidecode # 详细硬件信息
23.2 特定硬件信息
bash复制# 查看磁盘详细信息
hdparm -I /dev/sda
# 查看内存信息
free -h
cat /proc/meminfo
# 查看网卡信息
ethtool eth0
24. 环境问题排查
24.1 常见问题诊断流程
- 重现问题并收集现象
- 检查相关日志文件
- 确认系统资源状态
- 隔离问题范围
- 测试可能的解决方案
- 实施修复并验证
24.2 实用诊断命令
bash复制# 查看系统消息
dmesg
# 检查磁盘错误
smartctl -a /dev/sda
# 测试网络连通性
mtr example.com
# 检查DNS解析
dig +trace example.com
25. 自动化运维入门
25.1 简单自动化脚本
bash复制#!/bin/bash
# 自动备份脚本示例
BACKUP_DIR="/backups"
DATE=$(date +%F)
LOG_FILE="/var/log/backup.log"
# 创建备份目录
mkdir -p $BACKUP_DIR/$DATE
# 执行备份
tar -czf $BACKUP_DIR/$DATE/home.tar.gz /home 2>> $LOG_FILE
# 删除7天前的备份
find $BACKUP_DIR -type d -mtime +7 -exec rm -rf {} \;
25.2 进阶自动化工具
bash复制# 使用Ansible执行批量命令
ansible all -m ping
ansible webservers -m apt -a "name=nginx state=present"
# 使用cron定时执行
0 2 * * * /path/to/backup.sh
26. 多系统管理技巧
26.1 跨平台命令对比
| Linux命令 | Windows等效命令 | 说明 |
|---|---|---|
| ls | dir | 列出目录内容 |
| grep | findstr | 文本搜索 |
| ssh | Putty/mstsc | 远程连接 |
| rsync | robocopy | 文件同步 |
| cron | Task Scheduler | 定时任务 |
26.2 在Windows中使用Linux工具
- 使用WSL(Windows Subsystem for Linux)
- 安装Git for Windows(包含bash和常用工具)
- 使用Cygwin提供Linux环境
- 通过Docker运行Linux容器
27. 性能基准测试
27.1 常用基准测试工具
bash复制# CPU性能测试
sysbench cpu --cpu-max-prime=20000 run
# 磁盘I/O测试
fio --name=randread --ioengine=libaio --rw=randread --bs=4k --numjobs=4 --size=1G --runtime=60 --time_based --end_fsync=1
# 内存测试
sysbench memory --memory-block-size=1K --memory-total-size=10G run
# 网络测试
iperf3 -c server_ip
27.2 测试结果解读
bash复制# sysbench CPU测试结果示例
events per second: 1234.56
# 表示每秒能完成1234次计算,数值越高性能越好
# fio磁盘测试关键指标
read: IOPS=10.3k, BW=40.2MiB/s
# IOPS(每秒I/O操作数)和带宽是主要指标
28. 系统时间管理
28.1 时间同步配置
bash复制# 安装NTP客户端
apt install chrony
# 查看时间同步状态
chronyc tracking
# 手动同步时间
chronyc makestep
# 查看当前时区
timedatectl
28.2 时区设置与调整
bash复制# 列出可用时区
timedatectl list-timezones
# 设置时区
timedatectl set-timezone Asia/Shanghai
# 硬件时钟与系统时钟同步
hwclock --systohc
29. 系统日志管理
29.1 日志轮转配置
编辑/etc/logrotate.conf示例:
bash复制/var/log/nginx/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
/usr/sbin/nginx -s reload
endscript
}
29.2 日志分析工具
bash复制# 使用awk分析日志
awk '{print $1}' access.log | sort | uniq -c | sort -nr
# 使用专用工具
goaccess access.log -o report.html
lnav /var/log/syslog
30. 终端美化与个性化
30.1 Shell提示符定制
在~/.bashrc中添加:
bash复制# 彩色提示符
PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
# Git分支显示
parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}
PS1+='\[\033[01;33m\]$(parse_git_branch)\[\033[00m\] '
30.2 终端增强工具
bash复制# 安装zsh和oh-my-zsh
sudo apt install zsh
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
# 实用插件
plugins=(git zsh-autosuggestions zsh-syntax-highlighting)
31. 系统救援与修复
31.1 常见故障修复
bash复制# 修复grub引导
boot-repair
# 修复文件系统
fsck /dev/sda1
# 重置root密码
在GRUB编辑内核行添加`init=/bin/bash`,然后执行`passwd`
31.2 制作救援USB
bash复制# 使用dd制作启动盘
dd if=ubuntu.iso of=/dev/sdX bs=4M status=progress
# 使用专用工具
sudo apt install usb-creator-gtk
usb-creator-gtk
32. 虚拟化基础
32.1 KVM虚拟化配置
bash复制# 检查虚拟化支持
egrep -c '(vmx|svm)' /proc/cpuinfo
# 安装KVM
sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils
# 创建虚拟机
virt-install --name vm1 --ram 2048 --disk path=/var/lib/libvirt/images/vm1.qcow2,size=20 --vcpus 2 --os-type linux --os-variant ubuntu20.04 --network bridge=virbr0 --graphics none --console pty,target_type=serial --location 'http://archive.ubuntu.com/ubuntu/dists/focal/main/installer-amd64/' --extra-args 'console=ttyS0,115200n8 serial'
32.2 虚拟机管理命令
bash复制virsh list --all # 列出所有虚拟机
virsh start vm1 # 启动虚拟机
virsh shutdown vm1 # 关闭虚拟机
virsh console vm1 # 连接虚拟机控制台
virsh edit vm1 # 编辑虚拟机配置
33. 系统安全扫描
33.1 基础安全扫描工具
bash复制# 使用lynis进行安全审计
sudo lynis audit system
# 检查rootkit
sudo rkhunter --check
# 扫描开放端口
nmap -sV localhost
33.2 安全加固检查清单
- 更新所有软件包
- 禁用不必要的服务
- 配置防火墙规则
- 设置强密码策略
- 启用SSH密钥认证
- 配置日志监控
- 定期审计系统
34. 高级文件操作
34.1 文件查找与处理
bash复制# 查找并处理文件
find /path -type f -name "*.log" -exec rm {} \;
# 批量重命名文件
rename 's/old/new/' *.txt
# 比较文件差异
diff file1 file2
34.2 文件内容处理
bash复制# 统计文件行数
wc -l file.txt
# 排序并去重
sort file.txt | uniq
# 分割大文件
split -b 100M largefile part
35. 系统资源限制
35.1 用户资源限制配置
编辑/etc/security/limits.conf:
bash复制# 限制用户进程数
username hard nproc 100
# 限制打开文件数
username soft nofile 1024
username hard nofile 2048
35.2 临时资源限制
bash复制# 限制CPU使用
cpulimit -l 50 -p pid
# 限制内存使用
ulimit -v 500000
36. 系统快照与回滚
36.1 LVM快照管理
bash复制# 创建快照
lvcreate -L 10G -s -n snap01 /dev/vg00/lvroot
# 恢复快照
lvconvert --merge /dev/vg00/snap01
# 删除快照
lvremove /dev/vg00/snap01
36.2 文件系统快照
bash复制# btrfs快照
btrfs subvolume snapshot /path /path/snapshot
# ZFS快照
zfs snapshot pool/volume@snap1
zfs rollback pool/volume@snap1
37. 系统配置管理
37.1 使用etckeeper管理/etc
bash复制# 安装并初始化
apt install etckeeper
etckeeper init
# 提交更改
cd /etc
etckeeper commit "修改网络配置"
37.2 系统配置最佳实践
- 备份原始配置文件
- 使用版本控制跟踪更改
- 添加详细注释
- 测试配置更改
- 记录配置变更
38. 多语言环境配置
38.1 系统语言设置
bash复制# 查看可用语言环境
locale -a
# 设置系统语言
update-locale LANG=en_US.UTF-8
# 生成指定语言环境
locale-gen zh_CN.UTF-8
38.2 终端多语言支持
bash复制# 安装中文字体
apt install fonts-wqy-zenhei
# 设置终端编码
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
39. 系统备份策略
39.1 完整系统备份
bash复制# 使用tar备份整个系统
tar --exclude=/backup --exclude=/proc --exclude=/sys --exclude=/dev -cvpzf /backup/full-backup-$(date +%F).tar.gz /
# 使用dd备份磁盘
dd if=/dev/sda of=/backup/sda.img bs=4M status=progress
39.2 增量备份方案
bash复制# 使用rsync增量备份
rsync -a --link-dest=/backup/last_full /source/ /backup/incr_$(date +%F)
# 使用rdiff-backup
rdiff-backup /source /backup
40. 系统更新与维护
40.1 自动化更新配置
bash复制# 配置无人值守更新
apt install unattended-upgrades
dpkg-reconfigure unattended-upgrades
# 查看待更新包
apt list --upgradable
40.2 内核管理技巧
bash复制# 查看已安装内核
dpkg --list | grep linux-image
# 删除旧内核
apt autoremove --purge
# 安装指定内核版本
apt install linux-image-5.4.0-42-generic
41. 系统性能分析
41.1 使用perf工具
bash复制# 安装perf
apt install linux-tools-common linux-tools-generic
# 记录性能数据
perf record -g command
# 生成火焰图
perf script | stackcollapse-perf.pl | flamegraph.pl > perf.svg
41.2 系统瓶颈识别
- CPU瓶颈:
top查看%CPU和负载 - 内存瓶颈:
free -h查看可用内存 - 磁盘I/O瓶颈:
iostat -xz 1 - 网络瓶颈:
iftop或nethogs
42. 系统调优参数
42.1 内核参数优化
编辑/etc/sysctl.conf:
bash复制# 提高TCP连接性能
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
# 提高文件打开数限制
fs.file-max = 65536
# 提高内存分配性能
vm.swappiness = 10
vm.dirty_ratio = 60
42.2 服务特定调优
bash复制# Nginx worker配置
worker_processes auto;
worker_rlimit_nofile 100000;
# MySQL缓冲池配置
innodb_buffer_pool_size = 4G
innodb_log_file_size = 256M
43. 系统监控方案
43.1 轻量级监控工具
bash复制# 使用netdata
bash <(curl -Ss https://my-netdata.io/kickstart.sh)
# 使用Prometheus + Grafana
docker run -d -p 9090:9090 prom/prometheus
docker run -d -p 3000:3000 grafana/grafana
43.2 自定义监控脚本
bash复制#!/bin/bash
# 监控磁盘空间告警脚本
THRESHOLD=90
ALERT_EMAIL="admin@example.com"
df -H | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{print $5 " " $1}' | while read output
do
usep=$(echo $output | awk '{print $1}' | cut -d'%' -f1)
partition=$(echo $output | awk '{print $2}')
if [ $usep -ge $THRESHOLD ]; then
echo "磁盘空间告警: $partition 使用率 $usep%" | mail -s "磁盘空间告警" $ALERT_EMAIL
fi
done
44. 系统日志分析
44.1 使用ELK栈
bash复制# 使用Docker运行ELK
docker run -d -p 5601:5601 -p 9200:9200 -p 5044:5044 --name elk sebp/elk
# 配置Filebeat发送日志
output.elasticsearch:
hosts: ["elk-server:9200"]
44.2 实用日志分析命令
bash复制# 统计HTTP状态码
awk '{print $9}' access.log | sort | uniq -c | sort -nr
# 查找高频率IP
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -20
# 分析慢查询日志
mysqldumpslow -s t /var/log/mysql/mysql-slow.log
45. 系统安全审计
45.1 使用auditd框架
bash复制# 安装auditd
apt install auditd
# 监控/etc目录更改
auditctl -w /etc -p wa -k etc_changes
# 查看审计日志
ausearch -k etc_changes
45.2 入侵检测配置
bash复制# 使用AIDE进行文件完整性检查
aideinit
mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db
aide --check
# 使用fail2ban防止暴力破解
apt install fail2ban
systemctl enable fail2ban
46. 网络流量分析
46.1 使用tcpdump
bash复制# 捕获HTTP流量
tcpdump -i eth0 -A -s 0 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
# 捕获DNS查询
tcpdump -i eth0 -n udp port 53
46.2 使用Wireshark分析
bash复制# 命令行捕获
tshark -i eth0 -f "port 80" -w capture.pcap
# 常用显示过滤器
http.request.method == "GET"
ip.src == 192.168.1.1
tcp.port == 443
47. 系统容器化进阶
47.1 Docker网络配置
bash复制# 创建自定义网络