首页 >>  正文

shell+if+and多个条件

来源:baiyundou.net   日期:2024-09-21

几个月前写了《MySQL总是停止服务,原来是腾讯云安全防护组件的“锅”》这篇文章,在这篇文章发布后,虽然MySQL服务自动停止的频率降低了,但实际上并没有从根本上解决这个问题,MySQL服务仍然会以大约每周一次的频率自动停止,于是开始寻找其他方法。

其实最根本的方法肯定是升级服务器配置,提升服务器的带宽,但这也就意味着运营成本的增加,对于非凡博客这种小网站来说,还是寻找其他曲线救国的方案更合适。

看到有网友分享宝塔面板有自动检测MySQL服务状态并自动修复的功能,但我又不喜欢安装各种面板,不过面板的各项功能底层逻辑肯定是通过执行Linux命令完成了,于是就开始考虑通过Linux相关命令实现自动检测MySQL状态的功能,这里要做的有两步:

1.新建Shell脚本,脚本实现的功能是检测MySQL服务状态,如果发现当前运行的程序进程中没有MySQL,那么就自动执行启动MySQL服务的命令,我们可以在/root/目录下新建一个check_mysql.sh的脚本文件,脚本的内容:

#!/bin/bash

pgrep -x mysqld &> /dev/null

if [ $? -ne 0 ];then

/etc/init.d/mysqld start

fi

2.借助计划任务实现脚本自动化执行,主要目的是做到无人值守自动检测:

通过命令 crontab -e进入计划任务的编辑页面,输入任务命令

*/15 * * * * /root/check_mysql.sh

这条命令的意思是每隔15分钟执行一次check_mysql.sh检测脚本。

最终实现的效果是系统每15分钟执行一次check_mysql.sh脚本,如果发现当前运行的程序进程中没有MySQL,那么Shell脚本将会自动执行启动MySQL服务的命令。

从3月份到现在的6月份,至少我每天打开非凡博客的时候都能正常访问,或许在我没有访问的时间里也曾偶尔出现过MySQL服务自动停止,但至少等到我每次发现以后再动手启动了。

","gnid":"9ca1a3c2e84a0a8be","img_data":[{"flag":2,"img":[{"desc":"","height":"868","title":"","url":"https://p0.ssl.img.360kuai.com/t01aa6a16e0f1060dbf.jpg","width":"951"},{"desc":"","height":"292","title":"","url":"https://p0.ssl.img.360kuai.com/t019197746e13586219.jpg","width":"1110"},{"desc":"","height":"320","title":"","url":"https://p0.ssl.img.360kuai.com/t018ef38c666b287fd3.jpg","width":"970"}]}],"original":0,"pat":"art_src_3,fts0,sts0","powerby":"cache","pub_time":1686624540000,"pure":"","rawurl":"http://zm.news.so.com/368c4724e800ed4a8c0e4b12df6c2c04","redirect":0,"rptid":"da8b3d5802693814","rss_ext":[],"s":"t","src":"羽度非凡","tag":[{"clk":"ktechnology_1:linux","k":"linux","u":""},{"clk":"ktechnology_1:mysql","k":"mysql","u":""}],"title":"借助shell脚本,解决MySQL服务自动停止的问题

尹程蝶4841shell 脚本的if语句报错 -
翟征罗19175655186 ______ #!/bin/bash read -p "plese input one number:" k for a in {1,2,3} do for b in {1,2,3} do for c in {1,2,3} do for d in {1,2,3} do n=$((a*1000+$b*100+$c*10+$d)) #shell中不能直接执行算术运算,要加上$(()) m=$((n%80)) if [ $m -eq $k ];then # [ ]方括号与条件要用空格分开 if [ $a -eq $c ];then if [ $b -eq $d ];then echo $n fi fi fi done done done done

尹程蝶4841linux中用shell脚本计算100内所有正整数之和 -
翟征罗19175655186 ______ sum=0; for i in {1..100};do sum=$(($sum+1)); done; echo $sum

尹程蝶4841shell判断文件是否存在 -
翟征罗19175655186 ______ # [ -e /tmp/a.txt ] && echo "yes" || echo "no"-e 判断对象(文件或目录)是否存在,存在为真 祝你好运~~~

尹程蝶4841Linux Shell脚本 -
翟征罗19175655186 ______ 一般以#!/bin/sh 开头(不是必须要写,但一定要单独一行),指定执行这个脚本的shell程序(也可以用#!/bin/zsh或其他),然后就是堆命令了.Linux的shell脚本支持很多功能,加上Linux高度模块化的命令,完全可以用shell脚本写出复杂的程序.以上只是简单介绍如何开始写shell脚本,如果要写复杂的脚本,还需要深入学习相关知识(如if——fi、case——esac等结构).当然,还需要给脚本加上可执行权限(chmod +x ./file.sh),否则可以用 sh ./file.sh 方式执行脚本(这里的sh是执行脚本所需shell,命令也可以是zsh ./file.sh或其他).

尹程蝶4841编写一个shell脚本,脚本名为shell,执行该脚本的功能是:判断第一个位置参数是否是 -
翟征罗19175655186 ______ #!/bin/bash (( $# > 0 )) || exit [[ ! $1 =~ ^[/]*root$ ]] && echo "第一个位置参数不是/root目录" && exit ls -a /$1 > 13out shift while (( $# > 0 )) do [ -f $1 ] && echo "File "$1":" >> 13out && cat $1 >> 13out && shift && continue [ -d $1 ] && echo "this dir" && shift && continue echo "该文件($1)既不是普通文件也不是目录文件" shift done

尹程蝶4841在shell中如何写一个脚本用if语句来表示 -
翟征罗19175655186 ______ a=10 if [ $a -gt 8 ];then ((a+=2)) else ((a++)) fi echo $a

尹程蝶4841传递两个参数给shell脚本,进行加、减、乘、除的运算.做除法要检验除数是否为零 -
翟征罗19175655186 ______ 1、以下是shell脚本内容:#!/bin/bashecho "加法:a+b=" `expr $1 + $2`echo "减法:a-b=" `expr $1 - $2`echo "乘法:a*b=" `expr $1 \* $2`if [ $2 -eq 0 ]then echo "除数等于0,无法计算"else echo "除法:a/b=" `expr $1 / $2`fi2、执行结果如下图:

尹程蝶4841shell脚本中使用for.do循环语句列出从1到100的数字中能够被3整除的数求出他们的和并输出文件命名为sum.sh -
翟征罗19175655186 ______ #!/bin/bash sum=0 for i in {1..100} do if [ $(( $i % 3 )) -eq 0 ] then echo $i sum=$(( $sum + $i )) fi done echo "sum is: $sum"保存为sum.sh

(编辑:自媒体)
关于我们 | 客户服务 | 服务条款 | 联系我们 | 免责声明 | 网站地图 @ 白云都 2024