news 2026/7/22 13:38:04

常用服务器脚本——持续更新

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
常用服务器脚本——持续更新

文章目录

    • 服务器性能监控脚本
    • 日志清理脚本
    • 自动备份脚本
    • 批量检查服务状态
    • 批量文件重命名
    • 磁盘空间告警脚本
    • 清理僵尸进程
    • 批量修改文件权限
    • 网络连接统计脚本
    • 自动同步时间脚本

服务器性能监控脚本

快速获取 CPU / 内存 / 磁盘使用率

#!/bin/bashTIMESTAMP=$(date'+%Y-%m-%d %H:%M:%S')# CPU 负载LOAD_AVG=$(uptime|awk-F'load average:''{print $2}')# 内存使用率MEM_TOTAL=$(free-m|awk'/Mem:/ {print $2}')MEM_USED=$(free-m|awk'/Mem:/ {print $3}')MEM_USAGE_PERCENT=$((MEM_USED*100/MEM_TOTAL))# 磁盘使用率DISK_USAGE=$(df-h/|awk'NR==2 {print $5}')# 磁盘ioecho"===== 系统性能监控 ($TIMESTAMP) ====="echo"CPU 负载 (1min/5min/15min):$LOAD_AVG"echo"内存使用率:${MEM_USAGE_PERCENT}% (${MEM_USED}MB /${MEM_TOTAL}MB)"echo"根分区磁盘使用率:$DISK_USAGE"

日志清理脚本

自动清理 N 天前的日志文件

#!/bin/bashLOG_DIR="/var/log/app"DAYS=7echo"[$(date)] 开始清理$LOG_DIR${DAYS}天前的 .log 文件..."find"$LOG_DIR"-name"*.log"-mtime+$DAYS-typef|whilereadf;doecho"删除:$f"rm-f"$f"done# 同时清理空目录find"$LOG_DIR"-typed-empty-deleteecho"[$(date)] 清理完成"

自动备份脚本

打包压缩 + 自动清理旧备份

#!/bin/bashSRC_DIR="/data"BACKUP_DIR="/backup"DATE=$(date'+%Y%m%d_%H%M%S')BACKUP_FILE="backup_${DATE}.tar.gz"KEEP_DAYS=30mkdir-p"$BACKUP_DIR"echo"[$(date)] 开始备份$SRC_DIR..."tar-zcf"$BACKUP_DIR/$BACKUP_FILE""$SRC_DIR"2>/dev/nullif[$?-eq0];thenecho"备份成功:$BACKUP_DIR/$BACKUP_FILE"# 删除旧备份find"$BACKUP_DIR"-name"backup_*.tar.gz"\-mtime+$KEEP_DAYS-execrm-f{}\;echo"已清理${KEEP_DAYS}天前的旧备份"elseecho"备份失败!请检查目录权限"exit1fi

批量检查服务状态

自动检测 + 尝试重启

#!/bin/bashSERVICES=("nginx""mysql""redis""docker")forSERVICEin"${SERVICES[@]}";dosystemctl is-active--quiet"$SERVICE"if[$?-eq0];thenecho"✅$SERVICE正在运行"elseecho"⚠️$SERVICE未运行,尝试重启..."systemctl restart"$SERVICE"if[$?-eq0];thenecho"✅$SERVICE重启成功"elseecho"❌$SERVICE重启失败,请手动检查!"# 发送告警(阿里云可调用 DingTalk Webhook)fifidone

批量文件重命名

给目录下文件统一加前缀

#!/bin/bashDIR="${1:-.}"PREFIX="${2:-backup_}"echo"目标目录:$DIR"echo"文件名前缀:$PREFIX"echo"------------------------"forFILEin"$DIR"/*;do[-f"$FILE"]||continueBASENAME=$(basename"$FILE")NEW_NAME="$DIR/${PREFIX}${BASENAME}"mv"$FILE""$NEW_NAME"2>/dev/nullecho"重命名:$BASENAME${PREFIX}${BASENAME}"doneecho"------------------------"echo"文件重命名完成!"

磁盘空间告警脚本

超过阈值自动发邮件 / Webhook 告警

#!/bin/bashTHRESHOLD=80EMAIL="admin@example.com"PARTITION="/"DISK_USAGE=$(df-h"$PARTITION"|awk'NR==2 {print $5}'|cut-d'%'-f1)if["$DISK_USAGE"-gt"$THRESHOLD"];thenMSG="[告警] 磁盘使用率达到${DISK_USAGE}%!分区:$PARTITION"echo"$MSG"# 方式1: 邮件告警(需配置 mail / postfix)echo"$MSG"|mail-s"磁盘空间告警 -$(hostname)""$EMAIL"# 方式2: 钉钉 Webhook(推荐)# curl -X POST "https://oapi.dingtalk.com/robot/send?access_token=xxx" \# -H 'Content-Type: application/json' \# -d "{\"msgtype\":\"text\",\"text\":{\"content\":\"$MSG\"}}"fi

清理僵尸进程

批量杀掉僵尸进程(Z 状态)

#!/bin/bashZOMBIES=$(psaux|awk'$8 ~ /Z/ {print $2}')if[-z"$ZOMBIES"];thenecho"未发现僵尸进程"exit0fiecho"发现僵尸进程 PID:$ZOMBIES"echo"------------------------"forPIDin$ZOMBIES;do# 僵尸进程无法被 kill -9 杀死# 需要杀掉其父进程PPID=$(ps-oppid=-p"$PID"|tr-d' ')echo"僵尸进程$PID,父进程:$PPID"echo"尝试重启父进程$PPID..."systemctl restart"$(ps-ounit=-p"$PPID"|tr-d' ')"doneecho"------------------------"echo"清理完成,建议检查父进程状态"

批量修改文件权限

递归设置目录权限
Web目录推荐755(目录)+644(文件)

#!/bin/bashDIR="${1:-/var/www/html}"PERMISSION="${2:-755}"echo"目标目录:$DIR"echo"设置权限:$PERMISSION"echo"------------------------"chmod-R"$PERMISSION""$DIR"if[$?-eq0];thenecho"权限设置成功!"echo"验证:"find"$DIR"-maxdepth2-ls|head-10elseecho"权限设置失败,请检查目录是否存在"fi

网络连接统计脚本

统计 TCP 各状态连接数

#!/bin/bashecho"===== TCP 连接状态统计 ====="netstat-ant2>/dev/null|awk'/^tcp/ {print $6}'|sort|uniq-c|sort-nrecho""echo"===== 连接数 TOP 10 IP ====="netstat-ant2>/dev/null|awk'/^tcp/ {print $5}'|cut-d:-f1|sort|uniq-c|sort-nr|head-10echo""echo"===== 当前 ESTABLISHED 连接数 ====="ESTABLISHED=$(netstat-ant2>/dev/null|grep-cESTABLISHED)echo"ESTABLISHED:$ESTABLISHED"

自动同步时间脚本

确保服务器时间与 NTP 同步

#!/bin/bashNTP_SERVER="pool.ntp.org"MAX_OFFSET=500# 毫秒echo"===== 当前时间:$(date)====="# 检查 ntpdate 或 chronyc 是否可用ifcommand-vntpdate&>/dev/null;thenntpdate"$NTP_SERVER"RESULT=$?elifcommand-vchronyc&>/dev/null;thenchronyc makestepRESULT=$?elseecho"未找到 ntpdate 或 chronyd,请先安装"exit1fiif[$RESULT-eq0];thenecho"✅ 时间同步成功:$(date)"# 写入硬件时钟hwclock--systohcelseecho"❌ 时间同步失败,请检查网络或 NTP 服务"fi
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/22 13:34:35

市场知名的LPDDR芯片测试治具生产商芯片检测利器

在芯片产业蓬勃发展的当下,LPDDR芯片作为移动设备等领域的关键组件,其性能和质量的检测至关重要,而这依赖于优质的测试治具。今天,我们就来对比测评市场上几家知名的LPDDR芯片测试治具生产商,其中重点推荐深圳市谷易电…

作者头像 李华
网站建设 2026/7/22 13:33:36

基于Cocos Creator与Node.js的国粹游戏全栈开发实战

1. 项目概述与核心思路最近几年,国粹类游戏在移动端和微信小游戏平台的热度一直居高不下。无论是经典的麻将、斗地主,还是地方性的棋牌玩法,都拥有庞大的用户基础。作为一个有十多年开发经验的老兵,我观察到很多开发者想入局&…

作者头像 李华
网站建设 2026/7/22 13:31:20

系统变量介绍

说明:以上RTC操作在硬件支持的屏幕上有效。RTC系统变量以外的变量,本次上电事件内修改有效,掉电后改为串口屏工程内设定值。

作者头像 李华
网站建设 2026/7/22 13:28:16

从零搭建C++单元测试环境:基于GoogleTest与CMake的实战指南

1. 项目概述:为什么我们需要一个专业的C测试环境?如果你写过C,尤其是写过稍微复杂一点的C项目,肯定遇到过这种情况:今天改了一个函数,感觉没问题,结果明天另一个模块莫名其妙地崩溃了&#xff1…

作者头像 李华
网站建设 2026/7/22 13:25:11

【Autosar从入门到精通到进阶实战篇】71 DCM与PduR的“路由迷宫”:如何从0x22请求到应用层响应的完整路径

71 DCM与PduR的“路由迷宫”:如何从0x22请求到应用层响应的完整路径 “老王,昨晚产线上又堵死了三台ECU!”凌晨两点,小李在电话里急得声音发颤——新批次的UDS诊断仪同时发起了0x22读取VIN码和0x2E写入配置的请求,结果两台ECU都卡在“请求-响应”的死锁中,连TP层重传都救…

作者头像 李华