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 系统命令的使用,更理解了自动化运维的核心思路。在实际生产环境中,可基于本次实验的脚本进行扩展,如增加多服务器批量监控、日志分析、多渠道告警(短信、企业微信)等功能,进一步提升运维效率与系统稳定性。

相关推荐
名字还没想好☜2 小时前
用 systemd 托管后台服务:Restart 策略、日志接管、资源限制与开机自启全踩一遍
运维·docker·kubernetes
梦曦i3 小时前
@meng-xi/create-uni-app vs unibest:轻量脚手架与重型框架的定位之争
前端·uni-app
平头哥技术团队3 小时前
Day 10 | 工欲善其事:VS Code 配置与项目归档
android·开发语言·前端·javascript·html·交互
乌恩大侠3 小时前
GH200 新增 NVMe SSD 分区、格式化与挂载完整流程
运维·服务器·前端
tangwangbi3 小时前
Linux 系统配置文件:/etc/profile、~/.bashrc 和 ~/.bash_profile 三者之间的区别与作用
linux·运维·bash
yume_sibai3 小时前
Element Plus 数据展示组件完全指南(15个核心组件)
前端·javascript·vue.js
蜀道山老天师4 小时前
Shell Bash变量与运算符(含条件测试与流程控制)
linux·运维·bash
Mr.朱鹏4 小时前
Linux 服务器 LVM 根分区在线动态扩容
linux·服务器·数据库
草邦设计开发团队_媒体资源平台4 小时前
GEO 信源整合一键发布软文:从内容生产到流量获客的自动化实践
运维·人工智能·自动化
zhou lily4 小时前
非标自动化管理系统ERP如何选?2026年10大ERP软件对比分析
运维·自动化