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

Linux——Shell

if 语句

格式:if list; then list; [ elif list; then list; ] ... [ else list; ] fi

单分支

if 条件表达式; then

        命令

fi 

示例:

#!/bin/bash

N=10 if [ $N -gt 5 ]; then

        echo yes

fi

# bash test.sh

yes 

双分支

if 条件表达式; then

        命令

else

        命令

fi 

示例

#!/bin/bash

N=10

if [ $N -lt 5 ]; then

        echo yes

else

        echo no

fi

# bash test.sh

no 

多分支

if

条件表达式; then

        命令

elif条件表达式; then

        命令

else

        命令

fi 

示例

#!/bin/bash

N=$1

if [ $N -eq 3 ]; then

        echo "eq 3"

elif [ $N -eq 5 ]; then

        echo "eq 5"

elif [ $N -eq 8 ]; then

        echo "eq 8"

else

        echo "no"

fi 

实验

 1、判断当前磁盘剩余空间是否有20G,如果小于20G,则将报警邮件发送给管理员,每天检查一次磁盘剩余空间。

1)测试是否连接外网

[root@localhost scripts]# ping baidu.com

2)保证防火墙和selinux已关闭

[root@localhost scripts]# systemctl stop firewalld.service 
[root@localhost scripts]# setenforce 0

3)安装sendmail和mailx

[root@localhost ~]# yum -y install sendmail mailx

4)启动

[root@localhost ~]# systemctl start sendmail

5)获取邮箱授权码

前往邮箱官网(POP3/SMTP/IMAP)

 找到IMAP/SMTP,开启服务(需要验证码等)。收到授权码后,复制授权码

6)编辑/etc/mail.rc文件

[root@localhost scripts]# vim /etc/mail.rc 

set from=15009281620@163.com  #对方收到邮件时显示的发件人
set smtp=smtp.163.com #163邮箱地址
set smtp-auth-user=15009281620@163.com   #邮箱账号
set smtp-auth-password=JCocvdssJMCO #授权密码
set smtp-auth=login  #smtp的认证方式,默认是login,也可以改为CRAM—MD5或PLAIN方式
 

7)测试是否能发送消息

echo 内容|mail -s“主题”收件人

[root@localhost scripts]# echo "hello " | mail -s "hello" 15009281620@163.com

8)创建脚本文件

[root@localhost scripts]# vim Mem.sh   #创建脚本文件

9)编辑脚本文件

脚本解析:

free -g | grep "Mem" | tr -s " " | cut -d" " -f 4

查看内存容量(-g)以G为单位查看,过滤“Mem”内存信息,去除空格,以空格为间隔,切除第四列信息。这就是我们需要的内存剩余容量

#!/bin/bash
##############################################################
# File Name: free.sh
# Version: V1.0
# Author: Gao_XY
# Email: Gao_XY@163.com
# Organization:https://blog.csdn.net/ens33?type=blog
# Created Time : 2024-12-12 22:29:59
# Description:
##############################################################
a=`free -g | grep "Mem" | tr -s " " | cut -d" " -f 4`  #定义变量,剩余容量为a变量
b=20                                                                  #定义需要比较的20为b变量
c="内存小于 $b  G "                                           #定义发送邮件的内容为c变量
if [ $a -le $b  ]                                                #if单分支,如果变量a小于变量b
then
 echo $c | mail -s "内存警报" 15009281620@163.com  #那么向邮箱发送邮件
fi

10)配置计划任务

[root@localhost etc]# crontab -e

0 0 */1 * * /bin/sh /scripts/Mem.sh    #每天整点,执行Mem.sh文件

11)测试成功


2、判断web服务是否运行(如果没有运行,则启动该服务并配置防火墙规则。)

1、查看进程的方式判断该程序是否运行

1)创建脚本文件

[root@localhost scripts]# vim web_course.sh

2)编辑脚本文件

脚本解析:

ps -ef | grep nginx | grep -v grep | wc -l

查看进程  过滤nginx  过滤掉grep自身的进程   统计行数

其中的grep -v grep 是干啥的呢 ?
很简单 ,为了去除包含grep的进程行,避免影响最终数据的正确性

#!/bin/bash
##############################################################
# File Name: web_course.sh
# Version: V1.0
# Author: Gao_XY
# Email: Gao_XY@163.com
# Organization:https://blog.csdn.net/ens33?type=blog
# Created Time : 2024-12-13 01:53:33
# Description:
##############################################################
course=` ps -ef | grep nginx | grep -v grep | wc -l`   #将过滤统计出来的进程行号进行定义
if [ $course -gt 0 ]                                        #如果进程的行号大于0
then
        echo "nginx is running..."                #那么该服务启动
else                                                        #否则启动该服务,并在防火墙放通该端口
        firewall-cmd --permanent --zone=public --add-port=80/tcp &>/etc/null
        systemctl start nginx
fi

3)测试

先停止web服务,执行脚本进行测试

查看web服务是否开启

root@localhost scripts]# systemctl is-active nginx.service 

2、通过查看端口的方式判断该程序是否运行

1)创建脚本文件

[root@localhost scripts]# vim web_port.sh

2)编辑脚本文件

脚本解析:

ss -lnupt | grep 80 &>/etc/null           #查看80端口号,把查询结果送入黑洞

$?                       # 返回上一条命令是否执行成功,0 为执行成功,非 0 则为执行失败

echo $?                #当执行该结果为0时,证明服务已启动

当服务没有启动的情况下,无法查询到80端口,“$?”就无法返回0。

#!/bin/bash
##############################################################
# File Name: web.sh
# Version: V1.0
# Author: Gao_XY
# Email: Gao_XY@163.com
# Organization:https://blog.csdn.net/ens33?type=blog
# Created Time : 2024-12-13 01:03:06
# Description:
##############################################################
ss -lnupt | grep 80 &>/etc/null        #查询80端口,将结果存入黑洞
port=`echo $?`     #定义测试指令为port变量,测试上一条指令是否执行成功

if [ $port == 0 ]        #如果结果为0
then
        echo "nginx is running..."         #那么执行成功
else                                        #否则开启服务,并配置防火墙放行该端口
        firewall-cmd --permanent --zone=public --add-port=80/tcp &>/etc/null
        systemctl start nginx
fi

3)测试

查看服务是否开启

[root@localhost scripts]# systemctl is-active nginx.service 

相关文章:

Linux——Shell

if 语句 格式:if list; then list; [ elif list; then list; ] ... [ else list; ] fi 单分支 if 条件表达式; then 命令 fi 示例: #!/bin/bash N10 if [ $N -gt 5 ]; then echo yes fi # bash test.sh yes 双分支 if 条件表达式; then 命令 else 命令…...

armsom产品编译烧录Linux固件

1、开发环境及工具准备 Rockchip Linux 软件包:linux-5.10-gen-rkr4 主机: 安装VMware搭建虚拟机,版本为Ubuntu 20.04 (硬盘容量大于100G) 安装远程连接工具MobaXterm(可连接虚拟机方便文件传输) 2、S…...

VSCode:Markdown插件安装使用 -- 最简洁的VSCode中Markdown插件安装使用

VSCode:Markdown插件安装使用 1.安装Marktext2.使用Marktext 本文,将在Visual Studio Code中,安装和使用Markdown插件,以Marktext插件为例。 1.安装Marktext 打开VSCode,侧边栏中找到扩展模块(或CtrlShiftX快捷键)&am…...

AI 行业发展趋势:科技创新引领未来变革

在当今数字化时代,人工智能(AI)行业正以前所未有的速度蓬勃发展,深刻地改变着我们的生活、工作和社会格局。从基础技术的突破到广泛的应用场景拓展,AI 展现出了一系列令人瞩目的发展趋势,预示着一个充满无限可能的未来。 一、技术创新持续突破 模型规模与性能提升 AI 模…...

FB爆款打法实操经验总结

在进行Facebook广告投放时,有效的预算控制、素材测试、广告效果评估和lookalike受众的管理是至关重要的。通过科学的方法和策略,您可以在竞争激烈的市场中实现更好的业绩。 01 预算控制 测试阶段的广告不稳定性:在投放广告的初期&#xff0c…...

微信小程序TTS解决方案

微信小程序原生语音合成 API(基础且简单) 介绍:微信小程序提供了基础的语音合成能力。通过wx.createInnerAudioContext()等相关API,可以实现简单的语音播放功能。不过它主要是用于音频播放,对于完整的文本到语音&#…...

centos stream 8下载安装遇到的坑

早在2020年12月。CentOS 官方发文宣称:“CentOS项目的未来是 CentOS Stream 明年我们会将重点从CentOS Linux 转移到CentOS Stream 它紧随当前 RHEL 版本之前。CentOS Linux 8 作为 RHEL 8 的重建,将于 2021 年底结束。CentOS Stream 在该日期之后继续&a…...

计算机网络——期末复习(1)背诵

背诵 交换机与路由器:交换机连接同一子网,利用帧中的目的物理地址转发帧,工作在数据链路层;路由器连接不同子网,利用IP数据报中的目的IP地址转发IP数据报,工作在网络层。五层的任务:&#xff0…...

AORO M6 Pro单北斗防爆终端全面国产化,关键技术不再“卡脖子”

全球科技竞争日益激烈,核心技术自主创新已成为国家发展的战略基石。面对关键技术被“卡脖子”的风险,中国科技企业正加速推进信息技术应用创新战略,力求在关键领域实现自主可控。遨游通讯推出的一款融合单北斗、鸿蒙系统、5G国产芯片的防爆终…...

ubuntu 卸载 MySQL

1. 卸载 MySQL 1.1 停止 MySQL 服务 首先,停止 MySQL 服务: sudo systemctl stop mysql 1.2 卸载 MySQL 包 使用 apt-get 命令卸载 MySQL 包: sudo apt-get remove --purge mysql-server mysql-client mysql-common mysql-server-core-* my…...

6、基于SpringBoot的网上购物系统

摘 要 随着我国经济的飞速发展,人们的生活速度明显加快,在餐厅吃饭排队的情况到处可见,近年来由于新兴IT行业的空前发展,它与传统餐饮行业也进行了新旧的结合,很多餐饮商户开始通过网络建设订餐系统,通过专…...

AMS1117芯片驱动电路·降压芯片的驱动电路详解

编写不易,仅供学习,请勿搬运,感谢理解 AMS1117驱动电路 很常用的一种LDO降压芯片,LDO(Low Dropout Regulator)降压芯片是线性稳压器,这种IC因为内部集成的不是开关电路,只能将输入与输出的电压差值通过内部…...

数据仓库工具箱—读书笔记02(Kimball维度建模技术概述02、事实表技术基础)

Kimball维度建模技术概述 记录一下读《数据仓库工具箱》时的思考,摘录一些书中关于维度建模比较重要的思想与大家分享🤣🤣🤣 第二章前言部分作者提到:技术的介绍应该通过涵盖各种行业的熟悉的用例展开(赞同…...

SAP ABAP-日期格式问题 SAP内部错误,反序列化JSON字符串时发生异常 值 20241215 不是根据 ABAP 的 XML 格式的有效日期

SAP ABAP-日期格式问题 SAP内部错误,反序列化JSON字符串时发生异常 值 20241215 不是根据 ABAP 的 XML 格式的有效日期 在SAP内部用 YYYYMMDD没有问题 外部传入参数...

Linux-ubuntu点LED灯C语言版

​ 一,C语言点灯 1.寄存器配置 设置为SVC模式,复用寄存器设置GPIO1-IO003,设置电气属性,设置为输出模式。 2.软件 汇编语言对模式设置,并且将堆栈指针指向主程序: .global _start_start: /*设置为svr模式 */mrs …...

ASP.NET|日常开发中数据集合详解

ASP.NET&#xff5c;日常开发中数据集合详解 前言一、数组&#xff08;Array&#xff09;1.1 定义和基本概念1.2 数组的操作 二、列表&#xff08;List<T>&#xff09;2.1 特点和优势2.2 常用操作 三、字典&#xff08;Dictionary<K, V>&#xff09;3.1 概念和用途…...

Pytest-Bdd vs Behave:选择最适合的 Python BDD 框架

Pytest-Bdd vs Behave&#xff1a;选择最适合的 Python BDD 框架 Pytest BDD vs Behave&#xff1a;选择最适合的 Python BDD 框架BDD 介绍Python BDD 框架列表Python BehavePytest BDDPytest BDD vs Behave&#xff1a;关键区别Pytest BDD vs Behave&#xff1a;最佳应用场景结…...

Unity3D Shader变体自定义组合压缩方案详解

前言 在Unity3D中&#xff0c;Shader变体&#xff08;Shader Variants&#xff09;是指根据不同条件生成的Shader版本。这些条件可以包括材质属性、光照模型、阴影选项、渲染队列、纹理类型等。Shader变体允许开发者为同一Shader提供多种实现方式&#xff0c;以满足不同的渲染…...

QT使用promoted后样式(setStyleSheet)不生效问题解决

1.理解promoted&#xff08;提升&#xff09;在 Qt 中的概念 在 Qt Designer 中&#xff0c;“提升&#xff08;Promoted&#xff09;” 是一种机制&#xff0c;它允许你使用自定义的部件类来替代标准的 Qt 部件类。这在你已经创建了一个从标准 Qt 部件&#xff08;如QListWid…...

Vue3有哪些好用的处理大数据量虚拟表格组件呢?

在 Vue 3 中&#xff0c;处理大数据量的虚拟表格&#xff08;Virtual Table&#xff09;通常需要一个专门的组件或库来优化渲染性能&#xff0c;避免一次性渲染过多的 DOM 元素。以下是一些常用的虚拟表格组件&#xff0c;它们可以帮助你有效处理大数据量&#xff1a; 1. Vue …...

基于算法竞赛的c++编程(28)结构体的进阶应用

结构体的嵌套与复杂数据组织 在C中&#xff0c;结构体可以嵌套使用&#xff0c;形成更复杂的数据结构。例如&#xff0c;可以通过嵌套结构体描述多层级数据关系&#xff1a; struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

【网络】每天掌握一个Linux命令 - iftop

在Linux系统中&#xff0c;iftop是网络管理的得力助手&#xff0c;能实时监控网络流量、连接情况等&#xff0c;帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

ubuntu搭建nfs服务centos挂载访问

在Ubuntu上设置NFS服务器 在Ubuntu上&#xff0c;你可以使用apt包管理器来安装NFS服务器。打开终端并运行&#xff1a; sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享&#xff0c;例如/shared&#xff1a; sudo mkdir /shared sud…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎&#xff08;Physics Engine&#xff09; 物理引擎 是一种通过计算机模拟物理规律&#xff08;如力学、碰撞、重力、流体动力学等&#xff09;的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互&#xff0c;广泛应用于 游戏开发、动画制作、虚…...

LeetCode - 394. 字符串解码

题目 394. 字符串解码 - 力扣&#xff08;LeetCode&#xff09; 思路 使用两个栈&#xff1a;一个存储重复次数&#xff0c;一个存储字符串 遍历输入字符串&#xff1a; 数字处理&#xff1a;遇到数字时&#xff0c;累积计算重复次数左括号处理&#xff1a;保存当前状态&a…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

相机从app启动流程

一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站&#xff1a;https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本&#xff1a; Windows版&#xff08;推荐下载标准版&#xff09; Windows系统安装步骤 运行安装程序&#xff1a; 双击下载的.exe安装文件 如果出现安全提示&…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...