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

相关推荐
定栓3 分钟前
Webpack迁到Vite第一节:模块系统迁移:require → import
运维·前端·webpack
小白的码BUG之路7 分钟前
Jenkins -- 配置ssh
运维·ssh·jenkins
元岳数字人小元9 分钟前
数字人私有化,如何搭建全链路内网推理体系
运维·人工智能·开源·人机交互·交互
Allen-Steven10 分钟前
SQL查询专项:从完整书写到综合判断
运维·服务器·数据库
guo_wen_qiang11 分钟前
云服务器安装MongoDB
运维·服务器
小熊在忙fpga12 分钟前
N32G430芯片的flash表示
前端·javascript·html
Data analyse45618 分钟前
App埋点版本兼容的字段迁移校验
大数据·运维·服务器·前端·数据库·数据分析
anew___20 分钟前
《从零手写操作系统 (46):设备模型与devtmpfs——硬件资源的文件系统化》
linux·运维·服务器
Escalating_xu23 分钟前
【Linux 网络编程】Windows 客户端访问 Linux:用 Winsock 跑通 UDP 回显
linux·网络·windows
todoitbo24 分钟前
本来只想给内网开个口子,Natapp 却多给了一道防护
前端·javascript·vue.js·内网穿透·网络防护·natapp