RHCE中shell脚本基础(磁盘剩余空间监控,Web 服务状态检查,curl 访问 Web 服务并返回状态)

一、磁盘剩余空间监控(带邮件报警 + 定时任务)

1.判断当前磁盘剩余空间是否有20G,如果小于20G,则将报警邮件发送给管理员,每天检查一次磁盘剩余空间。

核心知识点

  1. 磁盘空间查看命令
    • df -h:以人类可读的方式查看文件系统磁盘使用情况
    • df -BG / | awk 'NR==2 {print $4}':提取指定根分区的剩余空间(单位 G)
    • df -P /:以 POSIX 标准格式输出,方便脚本解析
  2. 数值比较 :Shell 中if [ $free_g -lt 20 ] 用于判断剩余空间是否小于 20G
  3. 邮件发送 :mail/sendmail/mutt 命令,需要配置系统邮件服务(如 postfix)
  4. 定时任务 :crontab 实现每天自动执行
  5. 示例定时规则 :0 0 * * * /path/to/disk_check.sh(每天 0 点执行)

二、Web 服务状态检查(进程 + 端口方式,自动启动 + 防火墙配置)

2.判断web服务是否运行(1.查看进程的方式判断该程序是否运行,2.通过查看端口的方式判断该程序是否运行),如果没有运行,则启动服务并配置防火墙规则。

核心知识点

  1. 进程方式判断服务是否运行
    • ps aux | grep nginx | grep -v grep:过滤出 nginx 进程,排除 grep 自身
    • pgrep nginx:直接获取 nginx 进程 PID,返回非空即表示进程存在
    • systemctl is-active nginx:查看 systemd 管理的服务状态(active表示运行)
  2. 端口方式判断服务是否运行
    • netstat -tulnp | grep :80:查看监听 80 端口的进程
    • ss -tulnp | grep :80:更高效的端口查看命令(替代 netstat)
    • lsof -i:80:查看占用 80 端口的进程
  3. 服务启动命令
    • systemctl start nginx:启动 nginx 服务
    • service nginx start:兼容旧版系统的启动方式
  4. 防火墙规则配置
    • firewalld(CentOS/RHEL):firewall-cmd --permanent --add-service=http && firewall-cmd --reload
    • iptables(通用):iptables -I INPUT -p tcp --dport 80 -j ACCEPT && iptables-save

三、curl 访问 Web 服务并返回状态

3.使用curl命令访问第二题的web服务,看能否正常访问,如果能正常访问,则返回web server is running; 如果不能正常访问,返回12状态码。

核心知识点

  1. curl 基础用法
    • curl -I http://localhost:仅返回 HTTP 响应头
    • curl -s -o /dev/null -w "%{http_code}" http://localhost:静默执行,仅输出 HTTP 状态码
    • curl --connect-timeout 5 http://localhost:设置连接超时时间,避免卡死
  2. 状态码判断
    • HTTP 2xx/3xx 表示访问正常,返回web server is running
    • 非 2xx/3xx 或 curl 执行失败时,返回自定义状态码 12
  3. Shell 退出码(exit code) :exit 12 用于设置脚本的退出状态码,供其他程序调用判断

四、实验总结

本次实验通过三个典型的 Linux 运维场景,将 Shell 脚本与系统命令结合,实现了服务器基础资源与服务的自动化监控与故障自愈,不仅巩固了 Linux 系统命令的使用,更理解了自动化运维的核心思路。在实际生产环境中,可基于本次实验的脚本进行扩展,如增加多服务器批量监控、日志分析、多渠道告警(短信、企业微信)等功能,进一步提升运维效率与系统稳定性。

相关推荐
笃行3505 小时前
集中式与分布式,KingbaseES 的四种形态共用一套内核
前端
David猪大卫5 小时前
【Linux修炼】环境变量、进程地址空间
linux·c语言·经验分享·笔记·学习·ubuntu·centos
Android系统攻城狮5 小时前
Linux FFmpeg深度解析之avcodec_align_dimensions调用流程与实战(二十九)
服务器·linux音视频·音视频进阶·ffmpeg音视频
飞飞传输6 小时前
飞驰云联文件交换建设方法论:从单点传输到持续治理
大数据·运维·安全
陈随易6 小时前
Vue 编译器换掉 source map,快了三四成
前端·后端·程序员
叼烟扛炮6 小时前
Linux 学习笔记(五十六):IO 多路复用初探——select 的“三宗罪”
linux·服务器·数据库·笔记·学习·php
Ruiery6 小时前
Linux 6.6内核内存管理深度解析(十五):CMA 连续内存分配器
linux·运维·服务器
测试界的小码农7 小时前
【Linux 命令实战(01):认识 Linux 终端,从零掌握第一个命令】
linux·运维·服务器
ZhengEnCi7 小时前
12 种高级 UI 交互效果及对应 AI 提示词:从按压回弹到底部抽屉的物理感教学
前端·css·交互设计
布裘7 小时前
【银河麒麟】重启后时区丢失?排查发现 localtime 被业务程序替换成硬链接
linux·运维·网络