首页 >>  正文

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

越娜废1989如何使得shell脚本的if语法来判断一个文本文件的大小 例如 if [ ] ;then 如果这 -
山苏时17558521816 ______ #!/bin/sh a=`du -s yourfile.txt | awk '{print $1}'` if [ $a -eq 1024 ] then echo "OK" else echo "ERROR" fi

越娜废1989创建一个script,Linux shell脚本 -
山苏时17558521816 ______ 和C语言类似,在Shell中用if、then、elif、else、fi这几条命令实现分支控制.这种流程控制语句本质上也是由若干条Shell命令组成的,例如先前讲过的 if [ -f ~/.bashrc ]; then ~/.bashrc fi 其实是三条命令,if [ -f ~/.bashrc ]是第一条,then . ~/.bashrc...

越娜废1989shell脚本if函数判断奇偶 -
山苏时17558521816 ______ 你既然已经知道这个文件叫什么就没有意义了....理论上应该用find命令或者你知道这个目录在系统中的什么位置. 比如 ls | grep aaa a=`echo $?` b=`ls | grep aaa` if [ $a -eq 0 ] then tar zcvf Name.tar.gz $b else echo 'Don't have this file.' fi

越娜废1989shell中在满足while 条件下,如何执行多个命令?! -
山苏时17558521816 ______ i=1while [ $i -lt 5 ] ;do echo $i i=$i+1 done一个循环只需要一个do 一个done for((i=1;i<5;i++))doecho $idone

越娜废1989在SHELL脚本里看到 if [ $# - lt 7 ]; then ,请高手详细解释? -
山苏时17558521816 ______ $# 取得百shell脚本参数个数,-lt 即 less than,小于,$0 取得脚本名度称(包含路径版) 若判断参数个数小于7个,则用echo打印正确的权使用方法,并用exit退出脚本.Usage: 脚本名称 subject analysis_dir anat_name anat_dir_name sanlm_...

越娜废1989linux下的shell脚本. -
山苏时17558521816 ______ #!/bin/bash function calc() { if [ $1 -eq 100 ] then echo "num = 100" elif [ $1 -gt 100 ] then echo "num > 100" elif [ $1 -lt 100 ] then echo "num fi } while [ 1 ] do read -p "putin num:" a calc $a if [ $a -eq -1 ] then echo "num = -1 exit!" break fi ...

越娜废1989请教Linux shell下如何同时执行多个脚本 -
山苏时17558521816 ______ Linux下可以有两种方式执行Shell脚本:1、用shell程序执行脚本:根据shell脚本的类型,选择shell程序,常用的有sh,bash,tcsh等(一般来说第一行#!/bin/bash里面指明了shell类型的,比如#!/bin/bash指明是bash,#!/bin/sh则是sh);然后输入命令(其中bash为shell的名称,myshell.sh则为要执行的代码):bash myshell.sh2、直接执行脚本:不过首先的加上可执行权限(也许要root权限,4情况而定),执行:

越娜废1989shell脚本的if -
山苏时17558521816 ______ _day=`echo `cal $_month $_year`|awk '{print $NF}'` 这一句嵌套`符号有问题.不信你把这句注释掉看看是不是就没问题了.两两匹配的原则是就近匹配,即这句会拆分为下面三段:`echo ` cal $_month $_year `|awk '{print $NF}'` 这显然不是...

越娜废1989如何编辑一个linux 的shell脚本,实现以下功能? -
山苏时17558521816 ______ 脚本内容#!/bin/bash mkdir -p /var/run/fruinfo/ echo $1 > /var/run/fruinfo/LCHAS mkdir -p /var/run/frus/ echo $2 > /var/run/frus/slot 假设文件名a.sh 执行时使用./a.sh 1 2 就可实现你要求的功能

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