0

Linux自动化运维脚本实战:10个让工作效率翻倍的Shell脚本

2026.05.21 | youres | 12次围观

前言

运维工作中,重复性任务占据了很大一部分时间——日志清理、数据备份、服务监控、批量更新……这些事情如果靠人工一个个去做,不仅效率低,还容易出错。Shell脚本是Linux运维自动化最基础也最强大的工具,写好一套脚本,能让你从繁琐的重复劳动中解放出来。

本文整理了10个实战向的Shell脚本,覆盖监控、备份、日志、批量操作等核心场景,每个脚本都可以直接用,也可以根据你的环境改一改。

一、服务器性能监控脚本

每天上班第一件事就是看服务器状态,CPU、内存、磁盘这三项最常用。与其每次手动敲命令,不如写成脚本定时跑。

这个脚本可以把结果重定向到日志文件,配合crontab每天定时执行,随时掌握服务器健康状态。核心思路是:用top取CPU使用率,用free算内存占比,用df检查磁盘使用率,最后统一格式化输出。

二、自动备份MySQL数据库脚本

数据库备份是运维的底线工作,必须自动化、定期化。下面这个脚本支持单库/全库备份,保留最近7天的备份文件,自动清理过期数据。

核心是使用mysqldump导出数据并通过gzip压缩,同时用find命令定期清理过期文件。备份前先用--single-transaction参数确保InnoDB表的一致性。

三、日志自动清理脚本

服务器跑久了,日志文件会占满磁盘,尤其是Nginx、MySQL、应用的日志。这个脚本自动清理指定目录下超过指定天数的日志文件,支持按文件类型过滤。

关键是find命令的-mtime参数,可以精确控制保留天数。建议日志目录单独挂载分区,避免/分区被写满导致系统故障。

四、磁盘空间告警脚本

磁盘满了会导致服务不可用,这个脚本检查所有挂载点的使用率,超过阈值就发告警(邮件或Webhook),可以放到crontab里每10分钟跑一次。

告警阈值建议设在85%,预留足够缓冲时间。可以接入企业微信或钉钉的Webhook,实现实时推送。

五、批量SSH执行命令脚本

有多台服务器需要同时执行同一条命令时,这个脚本通过SSH批量连接执行,结果汇总输出,适合批量更新、批量检查服务状态等场景。

配合SSH密钥登录使用效果最好,避免每次输入密码。服务器列表格式很简单,每行一个IP即可。注意控制并发数量,避免对目标服务器造成压力。

六、Nginx日志分析脚本

想快速知道今天网站访问量、哪个URL访问最多、有没有异常攻击请求?这个脚本直接分析Nginx的access.log,输出关键统计信息。

用awk提取字段,sort+uniq -c做统计,最后用head取TOP排行。这个思路同样适用于分析其他结构化日志文件。

七、服务自动重启脚本

关键服务(Nginx、MySQL、Redis等)挂掉要能自动拉起来。这个脚本检查服务状态,如果发现服务异常就尝试重启,重启失败则发告警。

注意要加重启间隔和重试次数限制,避免服务持续崩溃时无限重启占用资源。建议在重启前先保留现场日志,方便事后排查原因。

八、服务器安全巡检脚本

安全巡检是定期必须做的工作,这个脚本检查几个关键安全项:可疑登录、新增SUID文件、防火墙状态、SSH配置等,生成巡检报告。

建议每天自动执行一次,报告通过邮件发送。重点关注sshd_config里的PermitRootLogin和PasswordAuthentication两个参数。

九、Crontab定时任务管理脚本

写好的脚本要通过crontab定时执行才能发挥价值。这个辅助脚本帮你快速添加、查看、删除定时任务,避免直接编辑crontab出错。

crontab的时间格式是"分 时 日 月 周",初学容易搞混。建议每个定时任务上面加一行注释说明用途,方便以后维护。

十、系统信息收集脚本

新接手一台服务器,第一件事就是了解它的配置。这个脚本一键收集CPU、内存、磁盘、网络、系统版本等关键信息,输出成报告,方便做资产登记或故障排查。

总结

以上10个脚本覆盖了Linux自动化运维最核心的场景。实际使用时可以根据你的业务需求进行修改和组合,比如把监控脚本和告警Webhook结合起来,把备份脚本和云存储同步结合起来。

Shell脚本的门槛不高,但写好需要积累。建议把常用的脚本统一放在一个目录下,用Git管理版本,逐步形成自己的运维工具库。自动化程度越高,你越有时间去做更有价值的事情。


相关文章:

版权声明

本文仅代表个人观点。
本文系AI辅助作者原创,未经许可,转载请保留原文链接。

发表评论
881文章数 0评论数
作者其它文章