首页 >>  正文

shell脚本与或非

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

逄炕复3434shell的sed用法 -
通咬种17755004220 ______ djy@game-rd10:~> echo "uid=100(guest) gid=100(others) groups=10(users),11(floppy)"|sed 's/^[^(]*(\([^)]*\).*/\1/' 输出 guest [^(]表示不是( ^[^(]*表示不是(开头的一串,*跟在后面表示一个或者连续几个不已(开头的字符 (表示guest左边的( \([^)]*\)表示不以)结束的一串字符,匹配后面\1输出 .*表示guest后面的所有字符

逄炕复3434shell语法中的test命令用法要注意什么?
通咬种17755004220 ______ 编辑特别推荐: Linuxfind命令详解 Linux之查看文件夹大小 shell如何自动输入密码 test命令用法.功能:检查文件和比较值 1)判断表达式 if test (表达式为真) if test !表...

逄炕复3434if [ $# - ne 1 ];then 是什么意思? -
通咬种17755004220 ______ if [ $# -ne 1 ];then的意思是,如果shell传递到脚本的参数不等于1,则执行某命令. $#:是指传递到脚本的参数个数. -ne:是指不等于则为真. if condition;then 是shell中的流程控制语法,意思是如果condition位真,则执行后面的语句. 扩...

逄炕复3434什么是“脚本语言” -
通咬种17755004220 ______ 脚本语言又被称为扩建的语言,或者动态语言,是一种编程e799bee5baa6e997aee7ad94e58685e5aeb931333337626232语言,用来控制软件应用程序,脚本通常以文本(如ASCII)保存,只在被调用时进行解释或编译. 脚本语言(Script ...

逄炕复3434"shell"是什么? -
通咬种17755004220 ______ shell的意思是壳,在计算机领域的意思是人机界面.人在壳外,计算机在壳内.PC的DOS系统就是人机界面,用键盘打入的命令或让计算机执行的命令组合bat文件,都通过界面的解释,告诉计算机要执行的任务.unix,linux等系统也有类似DOS的东西,有sh,csh等人机界面,它们的bat就是 sh 脚本,csh 脚本 (script).人机界面的核心,是一个解释程序.

逄炕复3434shell什么意思! -
通咬种17755004220 ______ 操作系统与外部最主要的接口就叫做shell.shell是操作系统最外面的一层.shell管理你与操作系统之间的交互:等待你输入,向操作系统解释你的输入,并且处理各种各样的操作系统的输出结果. shell提供了你与操作系统之间通讯的方式.这种...

逄炕复3434shell是什么语言?
通咬种17755004220 ______ shell 不是一种语言,而是一种编程的方法. 定义 shell 是操作系统的最外层.shell 合并编程语言以控制进程和文件,以及启动和控制其它程序.shell 通过提示您输入,向操作系统解释该输入,然后处理来自操作系统的任何结果输出来管理您与...

逄炕复3434shell脚本怎么判断变量或参数是否为空 -
通咬种17755004220 ______ #!/bin/bash# Your Answer# filename: if.sh# chmod +x if.sh# ./if.sh 2 4 # 2 * 4 = 8# ./if.sh 2 # Please Enter parm2# ./if.sh # Please Ent...

逄炕复3434在unix 下 ./*.sh 不能执行,用sh *.sh 能执行是什么原因? -
通咬种17755004220 ______ 这是因为你没有给sh文件赋予可执行权限.推荐答案的内容是不对的.可以操作如下: 1、chmod 755 *.sh,然后就可以用./*.sh处理了; 2、. ./*.sh,等同于sh ./*.sh 你写的sh *.sh只是一个缺省运行方式,表明你的.profile中默认PATH中包含了./.

逄炕复3434shell 编程里面./ 和. 的区别是什么尽量详细; -
通咬种17755004220 ______ . 表示当前目录,你用命令ls -a显示所有文件夹,显示结果中会有.和..两个目录,..代表上级目录../ 是用了执行当前目录下的可执行文件或脚本文件.因为你所用的当前目录往往不是系统环境变量中所包含的路径,所以如果你在执行你自己写的程序或脚本时,如果只输入程序名或脚本名,shell会提示找不到命令,加上./ 就是告诉shell在当前目录搜索你的可执行程序或脚本.

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