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

相关推荐
lion_zjg1 小时前
Nextcloud + Collabora CODE 离线包部署安装
运维·服务器
ywl4708120871 小时前
springSecurity+jwt,简单版demo
java·前端·servlet
想吃火锅10051 小时前
【前端手撕】promise.all
前端
lichenyang4531 小时前
动态加载 vs 延迟加载:为什么 demo 里「延迟」看起来没效果?
前端
随便做点啥2 小时前
Agent 后台 - Token工场-集群设备配置建议
服务器·经验分享
cypking2 小时前
从零搭建 Claude Code + Chrome MCP 浏览器自动化:前端 E2E 端到端测试完整教程(包含增量测试)
前端·chrome·自动化
睡不醒男孩0308232 小时前
生产环境故障销账:PostgreSQL 突发连接数暴涨与死锁,如何利用 CLup 秒级定位与解锁?
运维·数据库
Levi_J2 小时前
Vue2 升级 Vue3 项目实战
前端
前端拷贝猿2 小时前
扫码领券功能需求分析
前端