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

发布时间:2026/9/11 18:03:25
常用服务器脚本——持续更新 文章目录服务器性能监控脚本日志清理脚本自动备份脚本批量检查服务状态批量文件重命名磁盘空间告警脚本清理僵尸进程批量修改文件权限网络连接统计脚本自动同步时间脚本服务器性能监控脚本快速获取 CPU / 内存 / 磁盘使用率#!/bin/bashTIMESTAMP$(date%Y-%m-%d %H:%M:%S)# CPU 负载LOAD_AVG$(uptime|awk-Fload 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/|awkNR2 {print $5})# 磁盘ioecho 系统性能监控 ($TIMESTAMP) echoCPU 负载 (1min/5min/15min):$LOAD_AVGecho内存使用率:${MEM_USAGE_PERCENT}% (${MEM_USED}MB /${MEM_TOTAL}MB)echo根分区磁盘使用率:$DISK_USAGE日志清理脚本自动清理 N 天前的日志文件#!/bin/bashLOG_DIR/var/log/appDAYS7echo[$(date)] 开始清理$LOG_DIR下${DAYS}天前的 .log 文件...find$LOG_DIR-name*.log-mtime$DAYS-typef|whilereadf;doecho删除:$frm-f$fdone# 同时清理空目录find$LOG_DIR-typed-empty-deleteecho[$(date)] 清理完成自动备份脚本打包压缩 自动清理旧备份#!/bin/bashSRC_DIR/dataBACKUP_DIR/backupDATE$(date%Y%m%d_%H%M%S)BACKUP_FILEbackup_${DATE}.tar.gzKEEP_DAYS30mkdir-p$BACKUP_DIRecho[$(date)] 开始备份$SRC_DIR...tar-zcf$BACKUP_DIR/$BACKUP_FILE$SRC_DIR2/dev/nullif[$?-eq0];thenecho备份成功:$BACKUP_DIR/$BACKUP_FILE# 删除旧备份find$BACKUP_DIR-namebackup_*.tar.gz\-mtime$KEEP_DAYS-execrm-f{}\;echo已清理${KEEP_DAYS}天前的旧备份elseecho备份失败请检查目录权限exit1fi批量检查服务状态自动检测 尝试重启#!/bin/bashSERVICES(nginxmysqlredisdocker)forSERVICEin${SERVICES[]};dosystemctl is-active--quiet$SERVICEif[$?-eq0];thenecho✅$SERVICE正在运行elseecho⚠️$SERVICE未运行尝试重启...systemctl restart$SERVICEif[$?-eq0];thenecho✅$SERVICE重启成功elseecho❌$SERVICE重启失败请手动检查# 发送告警阿里云可调用 DingTalk Webhookfifidone批量文件重命名给目录下文件统一加前缀#!/bin/bashDIR${1:-.}PREFIX${2:-backup_}echo目标目录:$DIRecho文件名前缀:$PREFIXecho------------------------forFILEin$DIR/*;do[-f$FILE]||continueBASENAME$(basename$FILE)NEW_NAME$DIR/${PREFIX}${BASENAME}mv$FILE$NEW_NAME2/dev/nullecho重命名:$BASENAME→${PREFIX}${BASENAME}doneecho------------------------echo文件重命名完成磁盘空间告警脚本超过阈值自动发邮件 / Webhook 告警#!/bin/bashTHRESHOLD80EMAILadminexample.comPARTITION/DISK_USAGE$(df-h$PARTITION|awkNR2 {print $5}|cut-d%-f1)if[$DISK_USAGE-gt$THRESHOLD];thenMSG[告警] 磁盘使用率达到${DISK_USAGE}%分区:$PARTITIONecho$MSG# 方式1: 邮件告警需配置 mail / postfixecho$MSG|mail-s磁盘空间告警 -$(hostname)$EMAIL# 方式2: 钉钉 Webhook推荐# curl -X POST https://oapi.dingtalk.com/robot/send?access_tokenxxx \# -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:$ZOMBIESecho------------------------forPIDin$ZOMBIES;do# 僵尸进程无法被 kill -9 杀死# 需要杀掉其父进程PPID$(ps-oppid-p$PID|tr-d )echo僵尸进程$PID父进程:$PPIDecho尝试重启父进程$PPID...systemctl restart$(ps-ounit-p$PPID|tr-d )doneecho------------------------echo清理完成建议检查父进程状态批量修改文件权限递归设置目录权限Web目录推荐755目录644文件#!/bin/bashDIR${1:-/var/www/html}PERMISSION${2:-755}echo目标目录:$DIRecho设置权限:$PERMISSIONecho------------------------chmod-R$PERMISSION$DIRif[$?-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-nrechoecho 连接数 TOP 10 IP netstat-ant2/dev/null|awk/^tcp/ {print $5}|cut-d:-f1|sort|uniq-c|sort-nr|head-10echoecho 当前 ESTABLISHED 连接数 ESTABLISHED$(netstat-ant2/dev/null|grep-cESTABLISHED)echoESTABLISHED:$ESTABLISHED自动同步时间脚本确保服务器时间与 NTP 同步#!/bin/bashNTP_SERVERpool.ntp.orgMAX_OFFSET500# 毫秒echo 当前时间:$(date)# 检查 ntpdate 或 chronyc 是否可用ifcommand-vntpdate/dev/null;thenntpdate$NTP_SERVERRESULT$?elifcommand-vchronyc/dev/null;thenchronyc makestepRESULT$?elseecho未找到 ntpdate 或 chronyd请先安装exit1fiif[$RESULT-eq0];thenecho✅ 时间同步成功:$(date)# 写入硬件时钟hwclock--systohcelseecho❌ 时间同步失败请检查网络或 NTP 服务fi

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询