首页 >>  正文

shell中if用法

来源: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":"hbase","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服务自动停止的问题

阚侄辰1358如何在LINUX SHELL 脚本中 用IF语句表达 -
鞠影君18723968056 ______ if [ -d /home/c ];then do sth else do sth fi

阚侄辰1358Linux bash/sh/shell编程中的if语句应该怎么写 -
鞠影君18723968056 ______ line="#abcmatch BCD" REGEXP="^[#]" # 变量赋值不需要前缀$ if [[ $line =~ $REGEXP ]] && [[ $line != '' ]]; then #粗心 [[ ]] 要配对使用 你写成了 [[ ] [ ]] true #shell 不能使用空的if 结构,至少要有一个命令. 可以使用true命令 . echo yes else ...

阚侄辰1358在shell的if条件里,判断 a>0 且 (b>0 或 c>0) ,如何编写? -
鞠影君18723968056 ______ if [ $b -gt 0 -o $c -gt 0 -a $a -gt 0 ]; then ...... fi 对shell中的关系运算符说明如下: -gt 表示greater than,大于 -lt 表示less than,小于 -eq 表示 equal,等于 对shell中的连接符说明如下: -a 表示 and,且 -o 表示 or, 或 也可以写成这样: if [ $b -gt 0 ] || [ $c -gt 0 ] && [ $a -gt 0 ]; then ...... fi 其中,&&表示and,||表示or

阚侄辰1358UNIX/Linux shell脚本 if语句的几个案例 -
鞠影君18723968056 ______ if [条件测试1] && (||) [条件测试2]; //以if为起始,后面可以接若 then //干个判断式,使用&&或|| 第一段程序执行内容 elif [条件测试3] && (||) [条件测试4]; //第二段的判断,如果第一 then //段没有符合就来此搜寻条件 第二段程序执行内容 else ...

阚侄辰1358linux shell的if语句
鞠影君18723968056 ______ echo "你继续吗?Y or N" read ANSWER if [ “$ANSWER” = “Y” -o “$ANSWER” = “y” ] ; then echo "你选择了$ANSWER"; elif [ “$ANSWER” = “N” -o “$ANSWER” = “n” ] ; then echo "你选择了$ANSWER"; else echo "输入错误" exit fi -----你试试

阚侄辰1358Shell编程中 if语句判断时怎样写判断条件判断变量a若为整型变量则执行后面的语句 -
鞠影君18723968056 ______ 把if [ "$tt" ~ '/^[1-9][0-9]*$/' ] 改成 if [ "$tt" -le 0 -o "$tt" -ge 0 ] 2>/dev/null 这边是只会做整数的比较,如果$tt不是整数就会产生错误信息,并不比较.然后执行else后面的动作.产生的错误信息可以用2>/dev/null丢掉. 如果是整数则进行[]内的比较,中间的-o表示或者,意思是整数$tt小于等于0或者大于等于0则为真,执行then后面的动作

阚侄辰1358如何使得shell脚本的if语法来判断一个文本文件的大小 例如 if [ ] ;then 如果这 -
鞠影君18723968056 ______ #!/bin/sh a=`du -s yourfile.txt | awk '{print $1}'` if [ $a -eq 1024 ] then echo "OK" else echo "ERROR" fi

阚侄辰1358linux shell脚本 if语句 怎么用 [:alpha::] -
鞠影君18723968056 ______ a="abc" if [ $a == '[:alpha:]' ];then echo yes fi

阚侄辰1358linux的shell 脚本里怎么用if 判断文件大小呀?
鞠影君18723968056 ______ 需要几个工具 基本上思路是 用 du配合awk取得文件大小 ,然后if判断 伪代码如下 s=`du -k logfile|awk '{print $1}'` if [ $s -gt 1024000000 ] then 停止oracle监听进程 rm -rf logfile && touch logfile 启动oracle监听进程 else continue fi

阚侄辰1358linux shell中if的用法 -
鞠影君18723968056 ______ $# 参数个数-a 逻辑与 上面的意思是如果参数个数等于2并且第一个参数为-A,则条件为真.

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