服务器测评网
我们一直在努力

Linux优化脚本有哪些?如何编写高效系统优化脚本?

Linux 系统优化是保障服务器稳定运行、提升资源利用效率的关键环节,通过编写自动化脚本,可以批量执行优化任务,减少人工操作失误,提高运维效率,以下从系统资源监控、内核参数调优、服务优化、日志清理及安全加固五个维度,介绍 Linux 优化脚本的编写思路与核心功能。

Linux优化脚本有哪些?如何编写高效系统优化脚本?

系统资源监控脚本

资源监控是优化的前提,通过实时或定期收集 CPU、内存、磁盘及网络数据,可快速定位瓶颈,以下是一个基于 Shell 的基础监控脚本示例,关键功能包括:

  1. CPU 使用率统计
    通过 /proc/stat 文件计算 CPU 总使用率、用户态、内核态及空闲占比,并输出 5 秒内的平均值。

  2. 内存使用分析
    读取 free -m 命令结果,区分已用、空闲、缓存及缓冲区内存,避免将缓存误判为可用内存。

  3. 磁盘 I/O 监控
    使用 iostat -d -x 1 命令,监控磁盘的读写速率、I/O 利用率及响应时间,重点关注高负载磁盘。

  4. 网络流量统计
    通过 /proc/net/dev 文件统计各网卡的接收(RX)和发送(TX)字节数,计算实时流量。

脚本核心逻辑

#!/bin/bash
echo "===== 系统资源监控报告 ====="
echo "时间: $(date '+%Y-%m-%d %H:%M:%S')"
echo "CPU 使用率: $(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1"%"}')"
echo "内存使用: $(free -m | awk 'NR==2{printf "%.2f%% (%sMB/%sMB)\n", $3*100/$2, $3, $2}')"
echo "磁盘使用率: $(df -h | awk '$NF=="/"{printf "%s\n", $5}')"
echo "网络流量: $(cat /proc/net/dev | eth0 | awk 'FNR==2 {print "RX: "$2/1024/1024"MB, TX: "$10/1024/1024"MB"}')"

扩展建议:可结合 crontab 定时执行(如每 5 分钟记录一次),并将数据存入日志文件或可视化工具(如 Prometheus + Grafana)。

内核参数调优脚本

内核参数直接影响系统性能,需根据业务场景调整,高并发服务器需优化 TCP 连接数,数据库服务器需调整内存分配策略。

核心优化参数及说明

Linux优化脚本有哪些?如何编写高效系统优化脚本?

参数 默认值 优化建议 适用场景
net.core.somaxconn 128 65535 高并发 Web 服务
net.ipv4.tcp_max_syn_backlog 1024 8192 防止 SYN 洪泛攻击
vm.swappiness 60 10 内存充足的服务器
fs.file-max 65536 1000000 高文件句柄应用(如数据库)

脚本实现

#!/bin/bash
# 备份原始配置
cp /etc/sysctl.conf /etc/sysctl.conf.bak
# 优化参数
cat >> /etc/sysctl.conf << EOF
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 8192
vm.swappiness = 10
fs.file-max = 1000000
EOF
# 加载配置
sysctl -p
echo "内核参数优化完成"

注意事项:调优前需测试验证,避免因参数不当导致系统不稳定。

服务优化脚本

关闭不必要的服务可减少资源占用,提升系统安全性,开发环境可禁用 postfixbluetooth 等服务。

脚本功能

  1. 列出所有运行中的服务:使用 systemctl list-units --type=service --state=running
  2. 禁用并停止非核心服务:通过 systemctl disable --now 命令批量操作。

示例

#!/bin/bash
# 定义需禁用的服务列表
services=("postfix" "bluetooth" "avahi-daemon" "cups")
for service in "${services[@]}"; do
    if systemctl is-active --quiet $service; then
        systemctl disable --now $service
        echo "已禁用服务: $service"
    else
        echo "服务 $service 未运行"
    fi
done
echo "服务优化完成"

扩展:可结合 chkconfig(CentOS 7 以下)或 systemctl 管理服务,并生成服务状态报告。

日志清理脚本

日志文件增长会占用大量磁盘空间,需定期清理过期日志。

核心逻辑

  1. 查找大文件:使用 find /var/log -type f -size +100M 查找超过 100MB 的日志文件。
  2. 清理 N 天前的日志:通过 find /var/log -name "*.log" -mtime +30 -delete 删除 30 天前的日志。
  3. 轮转日志:利用 logrotate 工具自动压缩和轮转日志。

脚本示例

Linux优化脚本有哪些?如何编写高效系统优化脚本?

#!/bin/bash
log_dir="/var/log"
# 清理 30 天前的普通日志
find $log_dir -name "*.log" -mtime +30 -exec rm -f {} \;
# 清理大文件(>500MB)
find $log_dir -type f -size +500M -exec ls -lh {} \; | awk '{print "删除大文件: "$9" ("$5")"}' -exec rm -f {} \;
# 轮转系统日志
logrotate -f /etc/logrotate.conf
echo "日志清理完成"

建议:结合 crontab 每周执行一次,并保留最近 7 天的日志以备排查问题。

安全加固脚本

安全是优化的基础,通过加固系统配置可降低风险。

关键措施

  1. 修改 SSH 默认端口:将 SSH 端口从 22 改为其他高位端口(如 2222)。
  2. 禁用 root 远程登录:在 /etc/ssh/sshd_config 中设置 PermitRootLogin no
  3. 更新系统补丁:使用 yum update -y(CentOS)或 apt update && apt upgrade -y(Ubuntu)。

脚本实现

#!/bin/bash
# 修改 SSH 端口
sed -i 's/#Port 22/Port 2222/' /etc/ssh/sshd_config
# 禁用 root 登录
sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
# 更新系统
if [ -f /etc/redhat-release ]; then
    yum update -y
elif [ -f /etc/ubuntu-release ]; then
    apt update && apt upgrade -y
fi
# 重启 SSH 服务
systemctl restart sshd
echo "安全加固完成,请重启服务器后生效"

注意:修改 SSH 配置前需确保有其他方式登录服务器(如密钥登录),避免锁屏。

Linux 优化脚本需结合实际业务需求,避免“一刀切”,通过监控定位瓶颈、调优内核参数、精简服务、清理日志及加固安全,可显著提升系统性能,建议在测试环境验证脚本有效性,并通过版本控制工具(如 Git)管理脚本版本,确保优化过程的可追溯性。

赞(0)
未经允许不得转载:好主机测评网 » Linux优化脚本有哪些?如何编写高效系统优化脚本?