服务器清理指南 - 保持系统整洁与高效运行

服务器清理指南

概述

服务器维护是确保系统稳定运行的关键环节。本指南提供了全面的服务器清理方案,包括自动化脚本和最佳实践建议。

核心清理任务

日志文件管理

系统和应用日志的管理对服务器性能有直接影响。以下是关键操作:

1
2
3
4
5
6
7
8
# 系统日志清理(保留30天)
find /var/log -type f -name "*.log" -mtime +30 -delete

# 自动压缩7天前的日志
find /var/log -type f -name "*.log" -mtime +7 -exec gzip {} \;

# 清理大型日志文件(>100MB)
find /app/logs -type f -size +100M -exec rm -f {} \;

系统清理

定期清理系统缓存和临时文件:

1
2
3
4
5
6
7
8
9
10
11
# Debian/Ubuntu系统
apt-get clean
apt-get autoremove -y

# RHEL/CentOS系统
yum clean all
dnf clean all

# 清理临时文件(7天前)
find /tmp -type f -atime +7 -delete
find /home/*/tmp -type f -atime +7 -delete

Docker环境维护

针对Docker环境的专项清理:

1
2
3
4
5
6
7
8
# 清理停止的容器
docker container prune -f

# 清理未使用的镜像
docker image prune -a -f

# 全面清理(包括卷)
docker system prune -af --volumes

自动化解决方案

全能清理脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#!/bin/bash

# 配置
CLEANUP_LOG="/var/log/cleanup.log"
DISK_THRESHOLD=90
ALERT_EMAIL="[email protected]"

log_message() {
echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> $CLEANUP_LOG
}

# 清理功能
cleanup_logs() {
log_message "开始清理日志文件"
find /var/log -type f -name "*.log" -mtime +30 -delete
find /var/log -type f -name "*.log" -mtime +7 -exec gzip {} \;
log_message "日志清理完成"
}

cleanup_system() {
log_message "开始系统清理"
if command -v apt-get &> /dev/null; then
apt-get clean
apt-get autoremove -y
elif command -v yum &> /dev/null; then
yum clean all
fi
log_message "系统清理完成"
}

cleanup_docker() {
if command -v docker &> /dev/null; then
log_message "开始Docker清理"
docker system prune -af --volumes
log_message "Docker清理完成"
fi
}

check_disk_space() {
local usage=$(df -h | grep '/dev/' | awk '{ print $5 }' | cut -d'%' -f1)
for u in $usage; do
if [ $u -gt $DISK_THRESHOLD ]; then
log_message "警告:磁盘使用率超过 ${DISK_THRESHOLD}%"
echo "磁盘空间警告:使用率超过 ${DISK_THRESHOLD}%" | mail -s "服务器磁盘空间警告" $ALERT_EMAIL
fi
done
}

# 执行清理
log_message "=== 开始清理任务 ==="
cleanup_logs
cleanup_system
cleanup_docker
check_disk_space
log_message "=== 清理任务完成 ==="

定时执行

配置crontab实现自动执行:

1
2
# 每周日凌晨2点执行
0 2 * * 0 /path/to/cleanup-script.sh

最佳实践

清理策略

  • 根据业务需求设定日志保留周期
  • 配置分级告警阈值
  • 建立清理任务优先级

安全建议

  1. 清理前必须备份关键数据
  2. 采用渐进式清理策略
  3. 保留操作审计日志
  4. 设置清理脚本执行权限

性能优化

  1. 错峰执行大型清理任务
  2. 配置 IO 限流
  3. 分批处理大量文件
  4. 监控清理任务资源消耗

监控与告警

监控指标

  • 磁盘使用率
  • 清理任务执行状态
  • 系统负载变化
  • 关键服务可用性

告警配置

1
2
3
4
5
6
7
8
9
10
11
#!/bin/bash
# 磁盘空间监控示例

THRESHOLD=90
EMAIL="[email protected]"

df -h | grep '/dev/' | awk '{ print $5 }' | cut -d'%' -f1 | while read usage; do
if [ $usage -gt $THRESHOLD ]; then
echo "警告:磁盘使用率: ${usage}%" | mail -s "磁盘空间警告" $EMAIL
fi
done

故障处理

常见问题处理流程

  1. 检查清理脚本日志
  2. 验证系统资源使用情况
  3. 确认文件系统状态
  4. 排查进程异常

故障排查命令

1
2
3
4
5
6
7
8
# 大文件查找
find / -type f -size +100M -exec ls -lh {} \;

# 文件系统检查
df -h && du -sh /*

# 进程文件占用
lsof | grep deleted

总结

完善的服务器清理机制是保障系统稳定运行的基础。通过自动化脚本和监控告警,可以实现精确、高效的维护管理。建议定期评估和优化清理策略,确保服务器始终保持最佳状态。