当前位置: 首页 > news >正文

【shell脚本】nginx服务管理及存活检测脚本实战

前言

今天终于敢说自己是csdn万粉博主了,感谢大家的厚爱,我会继续输出更多优质的好文章,一起学习。

座右铭: 先努力让自己发光,再帮助更多的人。

🏠 个人主页:我是沐风晓月
🧑 个人简介:大家好,我是沐风晓月,双一流院校计算机专业,阿里云博客专家 ,csdn万粉博主
😉😉 💕 座右铭:先努力成长自己,再帮助更多的人,一起加油进步
🍺🍺🍺 💕欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信😘

文章目录

  • 前言
  • 1. 实现的功能
  • 2. 脚本思路
  • 3. 脚本代码
  • 4. 测试
  • 5. 脚本优化
  • 总结

1. 实现的功能

  1. 实现自动管理nginx启动,停止和运行
  2. 实现检测配置文件是否正确
  3. 配置虚拟主机

2. 脚本思路

  1. 指定nginx工作路径:
    nginx=/usr/local/nginx/sbin/nginx

  2. 让用户输入要进行的操作,比如start,stop,status,reload,true
    其中:

    • start 表示启动nginx
    • stop 表示停止服务
    • status 表示查看nginx服务的状态
    • reload 平滑加载配置文件
    • true 判断配置文件是否正确
    • restart 表示设置nginx重新启动,与平滑启动有区别
  3. 判断nginx是否已经启动

netstat -nlpt | grep nginx &> /dev/null && echo ok || echo  "nginx stoped"

基于这个方法,我们可以使用if语句判断执行是否成功,执行成功结果: echo $?=0,否则就不为0;

  1. 使用case语句,指定start,stop,status,reload,true,并进行相关的设置。

3. 脚本代码

#!/bin/bash
NGX=/usr/local/nginx/sbin/nginx
while true
do
read -ep "请输入要执行的命令(start/stop/status/restart/true/reload):" importcase $import in#启动nginx选项start)#先检测nginx是否已经启动netstat -nlpt | grep nginx &> /dev/nullif [ $? -eq 0 ];thenecho "nginx已经启动!"elseecho "开始启动nginx!"$NGX && echo "nginx 启动成功"fi;;#停止nginx运行stop)$NGX -s stop#判断nginx是否已经停止if [ $? -eq 0 ];thenecho "nginx已经停止运行!"elseecho "nginx停止失败,请重试!"fi;;#nginx的状态status)netstat -nlpt | grep nginx &> /dev/nullif [ $? -eq 0 ];thenecho "nginx已经启动!"elseecho "nginx没有运行!"fi;;#重载nginxreload)$NGX -s reloadif [ $? -eq 0 ];thenecho "nginx重载成功!"elseecho "nginx重载失败,请重试!"fi;;restart)$NGX -s stop && echo "nginx服务已经关闭"echo "正在重启服务"$NGX && echo "nginx 已经启动";;true)$NGX -t && echo "配置文件准确无误" || echo “配置文件出现问题,请进行查证”*)echo "请按提示正确输入!"echo -e "t start|stop|restart|status|reloadt";;
esac
done

4. 测试

  • 给脚本执行权限
[root@mufeng41 ~]# vim ng.sh
[root@mufeng41 ~]# chmod +x ng.sh
[root@mufeng41 ~]# ./ng.sh 
请输入要执行的命令(start/stop/status/restart/true/reload):start
nginx已经启动!
请输入要执行的命令(start/stop/status/restart/true/reload):status
nginx已经启动!
请输入要执行的命令(start/stop/status/restart/true/reload):reload
nginx重载成功!
请输入要执行的命令(start/stop/status/restart/true/reload)

在这里插入图片描述

5. 脚本优化

使用tput命令,设置终端特性,tput可以设置:

  • 在屏幕上移动光标。
  • 获取终端信息。
  • 设置颜色(背景和前景)。
  • 设置加粗模式。
  • 设置反转模式等等

常见命令示例:

  • tput clear # 清屏
  • tput sc # 保存当前光标位置
  • tput cup 10 13 # 将光标移动到 row col
  • tput civis # 光标不可见
  • tput cnorm # 光标可见
  • tput rc # 显示输出
  • exit 0

例如:

 tput cup 5 1   将光标移动到第 5(X) 的第 1(Y)

要更改文本的颜色:

  • setb 选项(用于设置背景颜色)
  • setf 选项(用于设置前景颜色)
 0 – Black,黑色1 – Red,红色2 – Green,绿色3 – Yellow,黄色4 – Blue,蓝色5 – Magenta,品红6 – Cyan,青色7 – White,白色

例如:

tput setb 6 tput setf 4

接下来,我们把上面的 脚本修改一下,变成有控制面板的。

代码示例:

[root@mufeng41 ~]# cat ng.sh 
#!/bin/bash
NGX=/usr/local/nginx/sbin/nginx
##
# clear the screen
tput clear# Move cursor to screen location X,Y (top left is 0,0)
tput cup 3 15# Set a foreground colour using ANSI escape
tput setaf 3
echo "沐风nginx管理系统"
tput sgr0tput cup 5 17
# Set reverse video mode
tput rev
echo "CSDN-我是沐风晓月"
tput sgr0tput cup 7 15
echo "1. 开启nginx"tput cup 8 15
echo "2. 关闭nginx"tput cup 9 15
echo "3. 查看nginx状态"tput cup 10 15
echo "4. 重新加载配置文件"# Set bold mode
tput bold
tput cup 12 15
read -p "Enter your choice [1-4] " choice##
case $choice in#启动nginx选项1)#先检测nginx是否已经启动netstat -nlpt | grep nginx &> /dev/nullif [ $? -eq 0 ];thenecho "nginx已经启动!"elseecho "开始启动nginx!"$NGX && echo "nginx 启动成功"fi;;#停止nginx运行2)$NGX -s stop#判断nginx是否已经停止if [ $? -eq 0 ];thenecho "nginx已经停止运行!"elseecho "nginx停止失败,请重试!"fi;;#nginx的状态3)netstat -nlpt | grep nginx &> /dev/nullif [ $? -eq 0 ];thenecho "nginx已经启动!"elseecho "nginx没有运行!"fi;;#重载nginx4)$NGX -s reloadif [ $? -eq 0 ];thenecho "nginx重载成功!"elseecho "nginx重载失败,请重试!"fi;;*)echo "请按提示正确输入!";;
esac[root@mufeng41 ~]# 

执行结果:
在这里插入图片描述

总结

在学习服务的过程中,脚本可以随时穿插,方便我们在学习上查缺补漏,及时复习学过的每一个语法。

💕 好啦,这就是今天要分享给大家的全部内容了,我们下期再见!
💕 博客主页:mufeng.blog.csdn.net
💕 本文由沐风晓月原创,首发于CSDN博客
💕 全力以赴,持续学习,不负如来不负卿,喜欢的话记得点赞收藏哦

相关文章:

【shell脚本】nginx服务管理及存活检测脚本实战

前言 今天终于敢说自己是csdn万粉博主了,感谢大家的厚爱,我会继续输出更多优质的好文章,一起学习。 座右铭: 先努力让自己发光,再帮助更多的人。 🏠 个人主页:我是沐风晓月 🧑 个人…...

web服务器—nginx

一、nginx介绍Nginx(“engine x”)是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。和apache一样,都是web服务器软件,因为其性能优异,所以被广大运维喜欢。又因…...

网络安全工具大合集

还是一句话,功夫再高,也怕菜刀首先,恭喜你发现了宝藏。本文章集成了全网优秀的开源攻防武器项目,包含:信息收集工具(自动化利用工具、资产发现工具、目录扫描工具、子域名收集工具、指纹识别工具、端口扫描…...

什么是SHA256?比特币是如何应用SHA256算法的?

SHA 256算法是一种具有确定性的单向哈希函数 算法是执行操作的一系列步骤或过程 哈希函数是种数学函数,输入的长度任意,但是输出长度固定,可以理解为文件的数字指纹,同一个输入值,总是得相同的输出 SHA256&#xff0…...

JDK20正式发布了GA版本,短期维护支持,以及JDK21预览

最近,Oracle发布了JDK20,相比对于Java开发者来说,JDK的发版是比较收关注的事情了,小简也来和大家一起了解了解JDK20发生了什么变化呢? 首先,JDK20是一个短周期版本,有6个月的维护时间&#xff0…...

.NET/C#/GC与内存管理(含深度解析)

详情请看参考文章:.NET面试题解析(06)-GC与内存管理 - 不灬赖 - 博客园 (cnblogs.com)一、对象创建及生命周期一个对象的生命周期简单概括就是:创建>使用>释放,在.NET中一个对象的生命周期:new创建对象并分配内存对象初始化…...

Java开发 | 内部类 | 静态内部类 | 非静态内部类 | 匿名内部类

目录 1.内部类 1.1内部类的简单创建 1.2内部类的分类 1.2.1普通内部类 1.2.2静态内部类 1.3匿名内部类 1.4局部内部类 1.内部类 内部类就是一是一个类里面装着另外一个类,就像俄罗斯套娃一样。最外层的类我们叫外部类,内层的类我们叫内部类。 1…...

Portal认证

Portal认证Portal认证简介Portal认证协议Portal认证方式Portal认证流程Portal认证用户下线Portal认证简介 定义: Portal认证通常也称作Web认证,一般将Portal认证网站成为门户网站。用户上网时,必须在门户网站进行认证,如果没有认…...

论文解读:ChangeFormer | A TRANSFORMER-BASED SIAMESE NETWORK FOR CHANGE DETECTION

论文地址:https://arxiv.org/pdf/2201.01293.pdf 项目代码:https://github.com/wgcban/ChangeFormer 发表时间:2022 本文提出了一种基于transformer的siamese网络架构(ChangeFormer),用于一对共配准遥感图…...

Redis 内存优化技巧

这次跟大家分享一些优化神技如何用更少的内存保存更多的数据?我们应该从 Redis 是如何保存数据的原理展开,分析键值对的存储结构和原理。从而继续延展出每种数据类型底层的数据结构,针对不同场景使用更恰当的数据结构和编码实现更少的内存占用…...

【java】笔试强训Day2【​倒置字符串​与排序子序列】

目录 ⛳选择题 1.A 派生出子类 B , B 派生出子类 C ,并且在 java 源代码有如下声明: 2.下面代码将输出什么内容:( ) 3.阅读如下代码。 请问,对语句行 test.hello(). 描述正确的有&…...

【Linux】基础IO(一) :文件描述符,文件流指针,重定向

🍎作者:阿润菜菜 📖专栏:Linux系统编程 码字不易,请多多支持😘😘 这是目录重新认识文件系统内部的文件操作我们C语言的文件操作系统内部的文件操作OS一般会如何让用户给自己传递标志位的&#x…...

【C语言】通讯录的实现(静态版)

【C语言】通讯录的实现(静态版一.前言1.前期准备a.菜单实现b.联系人结构体的构建c.菜单选项的功能d.#define 的定义2.功能的实现a.初始化通讯录b.增加联系人c.显示通讯录d.查找联系人e.修改联系人d.删除联系人3. 总代码test.ccontact.ccontact.h一.前言 本文将会用c语言实现一…...

IDEA一键构建Docker镜像

效果 Idea右击Dockerfile文件,直接在服务器构建docker镜像 开整 1、下载docker插件 2、编写Dockerfile文件 # 基础镜像 FROM openjdk:8-jdk-alpine # 工作目录 WORKDIR /opt/apps/gateway/logs/ # 文件拷贝,把target目录下的jar报拷贝到镜像的/APP/目录下 ADD…...

QT的使用3:鼠标事件

鼠标事件0 事件1 需求2 查看控件的事件处理函数3 UI设计4 新建一个类,继承QLabel5 对已有对象进行类型提升6 重写事件处理函数7 项目进一步拓展(1)获取鼠标按键(2)鼠标移动(3)显示多个按键&…...

线程安全之单例模式

文章目录前言一.什么是单例模式二.在java中的单例模式2.1 饿汉式的介绍2.2 懒汉式的介绍三 懒汉式的单例模式,线程不安全的解决方式3.1 造成线程不安全的原因3.2 解决方案3.3 总结前言 这篇文章,我们会介绍一下单例模式,但这里的单例模式,不是我们所说的设计模式,当然听到设计…...

“二分”带来“十分”快感——二分思想的奥秘解析

文章目录无处不在的二分思想二分查找惊人的查找速度二分查找的递归与非递归实现1.循环退出条件2.mid的取值3.low和high的更新最后说一句🐱‍🐉作者简介:大家好,我是黑洞晓威,一名大二学生,希望和大家一起进…...

一台服务器最大能支持多少条 TCP 连接?问倒一大片。。。

一台服务器最大能打开的文件数 限制参数 我们知道在Linux中一切皆文件,那么一台服务器最大能打开多少个文件呢?Linux上能打开的最大文件数量受三个参数影响,分别是: fs.file-max (系统级别参数)&#xf…...

蓝桥杯嵌入式RTC实时时钟

文章目录 前言一、RTC是什么二、cubemx的配置三、函数的使用总结前言 本篇文章将给大家介绍RTC实时时钟。 一、RTC是什么 STM32的实时时钟RTC是一个独立的定时器,RTC时钟内部依靠BCD码计数。RTC实时时钟提高时钟、闹钟、日历功能。RTC功耗较低,可以使用在低功耗设备上。 …...

Centos7 挂载 ISO镜像

切到mnt目录:cd /mnt mkdir iso确保centos镜像在服务上存在,磁盘挂载mount -o loop /home/xx.iso /mnt/iso查看是否挂载成功df -h出现红色的部分表示挂载成功修改源切目录并修改yum源:cd /etc/yum.repos.dllvim Centos-Base.repo修改后yum clean allyum list安装lrz…...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...

微信小程序之bind和catch

这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...

python/java环境配置

环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...

【JVM】- 内存结构

引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...

ESP32读取DHT11温湿度数据

芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

ios苹果系统,js 滑动屏幕、锚定无效

现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...

OpenLayers 分屏对比(地图联动)

注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

企业如何增强终端安全?

在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别

【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势&#xf…...