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

相关推荐
子兮曰4 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰4 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
未济4 天前
linux 配置环境变量
linux
傲世仙尊4 天前
目录即文件-Ext文件系统收尾篇
linux·c语言
前端小万4 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝4 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
虎头金猫4 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
三十而立洋4 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
还是大剑师兰特4 天前
解决nginx错误:http://localhost:7000正常,http://localhost:7000/map 报错404
nginx·大剑师
卡布鲁4 天前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js