一、系统监控与性能分析
1. 系统资源监控
bash
# 实时监控系统资源
top
htop # 增强版top,需安装
# 查看系统负载
uptime
cat /proc/loadavg
# 内存监控
free -h
vmstat 2 5 # 每2秒采样,共5次
# CPU监控
mpstat -P ALL 1 # 每1秒查看所有CPU使用情况
sar -u 2 5 # 每2秒采样CPU,共5次
2. 磁盘监控
bash
# 磁盘使用情况
df -hT
lsblk
# 磁盘I/O监控
iostat -x 1 3
iotop # 需安装,类似top的磁盘监控
# 大文件查找
find / -type f -size +100M -exec ls -lh {} \; 2>/dev/null
3. 网络监控
bash
# 网络连接统计
netstat -tunlp
ss -tunlp # 更快的netstat替代
# 实时网络流量
iftop -i eth0 # 需安装
nethogs # 按进程查看流量
# 网络性能测试
iperf3 -s # 服务端
iperf3 -c <server_ip> -t 30 # 客户端
二、故障排查与日志分析
1. 日志分析
bash
# 实时查看日志
tail -f /var/log/syslog
journalctl -f # systemd系统
# 日志过滤
grep "ERROR" /var/log/messages
grep -A 5 -B 5 "关键字" /var/log/nginx/access.log
# 日志时间范围查询
sed -n '/2024-01-01 10:00/,/2024-01-01 11:00/p' /var/log/messages
2. 进程排查
bash
# 查找占用资源高的进程
ps aux --sort=-%cpu | head -10
ps aux --sort=-%mem | head -10
# 查看进程打开的文件
lsof -p <PID>
lsof -i :8080 # 查看端口占用
# 进程树查看
pstree -ap <PID>
3. 系统调用追踪
bash
# 跟踪系统调用
strace -p <PID> -f -tt
strace -c <command> # 统计系统调用
# 动态库调用跟踪
ltrace -p <PID>
三、日常运维操作
1. 文件与目录管理
bash
# 批量操作
find /var/log -name "*.log" -mtime +7 -delete
find . -type f -exec grep -l "pattern" {} \;
# 文件同步与备份
rsync -avz --progress source/ user@dest:/path/
rsync -avz --delete source/ dest/ # 镜像同步
2. 用户与权限管理
bash
# 批量用户管理
for user in user1 user2 user3; do
useradd $user
echo "$user:Initial123" | chpasswd
done
# 权限修复
find /path -type d -exec chmod 755 {} \;
find /path -type f -exec chmod 644 {} \;
chown -R user:group /path
3. 定时任务
bash
# 查看所有用户的cron任务
for user in $(cut -f1 -d: /etc/passwd); do
echo "=== $user ===";
crontab -u $user -l 2>/dev/null;
done
# 一次性定时任务
echo "bash /path/script.sh" | at 02:00 tomorrow
四、网络配置与诊断
1. 网络配置
bash
# IP配置
ip addr show
ip route show
ip link set eth0 up
ip addr add 192.168.1.100/24 dev eth0
# 网络诊断
mtr -n 8.8.8.8 # 路由跟踪
tcpdump -i eth0 -n port 80
nc -zv host port # 端口检测
2. 防火墙管理
bash
# iptables
iptables -L -n -v
iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT
# firewalld(CentOS/RHEL)
firewall-cmd --list-all
firewall-cmd --add-port=8080/tcp --permanent
五、容器与编排环境
1. Docker操作
bash
# 容器管理
docker ps -a --format "table {{.ID}}\t{{.Names}}\t{{.Status}}\t{{.Ports}}"
docker stats --no-stream
docker logs -f --tail 100 <container>
# 清理无用资源
docker system prune -af
docker volume prune
2. Kubernetes操作
bash
# 常用查询
kubectl get pods -o wide
kubectl get events --sort-by='.lastTimestamp'
kubectl top pods --containers
# 日志查看
kubectl logs -f <pod> --tail=100
kubectl logs --since=1h <pod>
# 故障排查
kubectl describe pod <pod>
kubectl exec -it <pod> -- /bin/bash
六、Shell脚本技巧
1. 常用脚本片段
bash
#!/bin/bash
# 参数检查
if [ $# -ne 2 ]; then
echo "Usage: $0 <arg1> <arg2>"
exit 1
fi
# 安全退出
set -euo pipefail
trap "echo '脚本被中断'; exit 1" INT TERM
# 并发控制
MAX_JOBS=5
for item in $(cat list.txt); do
((i=i%MAX_JOBS)); ((i++==0)) && wait
process_item "$item" &
done
wait
2. 实用函数
bash
# 日志函数
log() {
local level=$1
shift
echo "$(date '+%Y-%m-%d %H:%M:%S') [$level] $@"
}
# 检查服务状态
check_service() {
systemctl is-active --quiet $1
if [ $? -eq 0 ]; then
log "INFO" "Service $1 is running"
return 0
else
log "ERROR" "Service $1 is not running"
return 1
fi
}
七、性能优化命令
1. 内核参数调优
bash
# 查看当前参数
sysctl -a | grep tcp
cat /proc/sys/vm/swappiness
# 临时修改
sysctl -w net.core.somaxconn=1024
# 永久修改
echo "net.core.somaxconn=1024" >> /etc/sysctl.conf
sysctl -p
2. 文件系统优化
bash
# I/O调度器
cat /sys/block/sda/queue/scheduler
echo "deadline" > /sys/block/sda/queue/scheduler
# 文件系统检查
tune2fs -l /dev/sda1 # ext文件系统
xfs_info /dev/sdb1 # xfs文件系统
八、安全审计
1. 安全检查
bash
# SSH安全检查
grep -E "PermitRootLogin|PasswordAuthentication" /etc/ssh/sshd_config
# 文件完整性检查
rpm -Va # RHEL/CentOS
debsums # Debian/Ubuntu
# 异常进程检查
ps aux | awk '$3>30 || $4>30 {print $0}'
2. 入侵检测
bash
# 检查异常登录
last -f /var/log/wtmp | head -20
grep "Failed password" /var/log/auth.log
# 检查可疑文件
find / -type f \( -perm -4000 -o -perm -2000 \) -exec ls -l {} \;
find / -type f -name "*.php" -exec grep -l "eval(" {} \;
九、实用组合命令
1. 监控组合
bash
# 一键系统健康检查
echo "=== $(date) ==="
echo "Load: $(uptime)"
echo "Memory: $(free -h | grep Mem)"
echo "Disk: $(df -h / | tail -1)"
echo "Top CPU: $(ps aux --sort=-%cpu | head -3 | tail -2)"
echo "Top MEM: $(ps aux --sort=-%mem | head -3 | tail -2)"
2. 批量操作
bash
# 并行执行命令
parallel -j 10 ssh {} "hostname" ::: server{1..20}
# 批量文件处理
find /data -name "*.log" -type f -size +1G | while read file; do
gzip "$file"
done
最佳实践建议
- 命令别名:将常用命令添加到~/.bashrc
bash
alias ll='ls -alhF'
alias ports='netstat -tunlp'
alias df='df -hT'
2. 历史命令优化:
bash
export HISTSIZE=10000
export HISTFILESIZE=20000
export HISTTIMEFORMAT='%F %T '
3. 使用screen/tmux:保持会话持久化
bash
screen -S session_name
tmux new -s session_name
4. 定期清理:
bash
# 清理旧内核
apt autoremove --purge # Debian/Ubuntu
package-cleanup --oldkernels --count=2 # CentOS/RHEL