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



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







三、curl 访问 Web 服务并返回状态
3.使用curl命令访问第二题的web服务,看能否正常访问,如果能正常访问,则返回web server is running; 如果不能正常访问,返回12状态码。
核心知识点
- curl 基础用法
curl -I http://localhost:仅返回 HTTP 响应头curl -s -o /dev/null -w "%{http_code}" http://localhost:静默执行,仅输出 HTTP 状态码curl --connect-timeout 5 http://localhost:设置连接超时时间,避免卡死
- 状态码判断
- HTTP 2xx/3xx 表示访问正常,返回
web server is running - 非 2xx/3xx 或 curl 执行失败时,返回自定义状态码 12
- HTTP 2xx/3xx 表示访问正常,返回
- Shell 退出码(exit code):
exit 12用于设置脚本的退出状态码,供其他程序调用判断


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

被折叠的 条评论
为什么被折叠?



