首页 >>  正文

shell执行脚本的方式之一

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

几个月前写了《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服务自动停止的问题

焦隶贴2047怎么编写脚本就可以做到?在Linuxshell中,怎么编写脚本就
巫俘孙19718055690 ______ 一般以 #!/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或其他).

焦隶贴2047请教Linux shell下如何同时执行多个脚本 -
巫俘孙19718055690 ______ 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情况而定),执行:

焦隶贴2047windows上怎么执行shell脚本 -
巫俘孙19718055690 ______ 在工作中情况会在碰到linux下进行执行shell的脚本,而就会使用shell的脚本,但经常使用的Windows的系统,而想在Windows电脑中进行直接shell的脚本,而不用再进行学习其它的脚本语言. 工具/原料 Windows git 方法/步骤 1、首先电脑中需...

焦隶贴2047如何建立和执行shell脚本文件? - - 基于linux -
巫俘孙19718055690 ______ 方法很多: 方法一:切换到shell脚本所在的目录(此时,称为工作目录)执行shell脚本. cd /data/shell ./hello.sh ./的意思是说在当前的工作目录下执行hello.sh.如果不加上./,bash可能会响应找到不到hello.sh的错误信息.因为目前的工作目录 ...

焦隶贴2047如何在java中执行shell脚本 -
巫俘孙19718055690 ______ 参考如下方式可以执行shell脚本: // 用法:Runtime.getRuntime().exec("命令"); String shpath="/test/test.sh"; //程序路径 Process process =null; String command1 = “chmod 777 ” + shpath; try { Runtime.getRuntime().exec(command1 ...

焦隶贴2047linux下如何写个SHELL脚本,每天执行这么几句命令: -
巫俘孙19718055690 ______ 每天自动执行肯定是要用一个crontab的 脚本可以这样写: #!/bin/bash PRO=ps x|grep p|grep -v grep|awk '{print $1}' kill -9 $PRO service httpd start 脚本上面即可实现了 如果要每天自动执行,那么需要添加一条crontab 如果你的P进程是apache进程,那么直接start就行,如果不是那么要restart 0 1 * * * /usr/local/encode/apachectl restart 上面提到的只能在/usr/local/encode下执行是说明你的服务直接执行的脚本

焦隶贴2047Vi编辑的shell脚本如何执行啊? -
巫俘孙19718055690 ______ 我觉得你的要求有点奇怪,好像是为了获取某些变量以便进一步处理,那你为什么不直接在shell脚本中处理呢?以下是我的处理办法: 1. 进入指定目录问题 这涉及到进程生存周期的问题,实际上你在shell脚本写cd /data/wcd/www/时,在执行的...

焦隶贴2047用什么方式执行shell脚本时需要为该脚本设置“x”可执行文件?当前用户为root. -
巫俘孙19718055690 ______ 一个文件如果你想执行它 你可以使用当前shell,比如说 bash a.sh 不需要执行权限,或者使用 . 或(source) 来执行 . a.sh 或 source a.sh 也是不需要执行权限 但文件名必须 以 .sh 结尾 当你使用 ./ 需要你明确指定执行权限.

焦隶贴2047Linux下如何执行Shell脚本 -
巫俘孙19718055690 ______ 首先确认你的shell有没有执行权限 用ls -l 如果有三个X 就是可执行的 然后./shell文件名称 就执行了

焦隶贴2047如何建立和执行shell脚本文件? - - 基于linux -
巫俘孙19718055690 ______ shell文件就是一个文本文件,用任意编辑器编辑均可 编译完成之后,给文件增加执行权限,使用chmod +x 然后就可以执行了,如果你的脚本不在系统PATH中指定的目录中,使用绝对路径或者相对路径调用即可

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