首页 >>  正文

linux编写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服务自动停止的问题

麻媛苇2616在Linux系统下编写shell程序,十万火急,求解! -
景翁章15266081250 ______ #!/bin/bash echo -e "数\t平方\t立方" for i in `seq 1 $1`;do echo -e "$i\t$(($i*$i))\t$(($i*$i*$i))" done 使用方法 ./test.sh 20

麻媛苇2616linux shell编程
景翁章15266081250 ______ 首先vi filename 进入编辑界面,切换插入模式,编程 #!/bin/bash/ #shell i=0 sum=0 while (i!=10) do i++ sum+=i done 编完后,按ESC退到底行模式,shift+:,wq sum.sh 最后sh sum.sh显示结果 因为我是vista系统,没在linux下调试,不知对不对.你试下嘛

麻媛苇2616如何编写一个测试电脑的linux shell程序?
景翁章15266081250 ______ #!/bin/shssh "ip"ifconfig |grep 'inet addr' |cut -d ':' -f 2 |cut -d ' ' -f 1 |head -1 > /tmp/1.txtuptime |cut -d ':' -f 5 >> /tmp/1.txtfree >> /tmp/1.txtdf -h >> /tmp.txt为了在ssh的时候不要输入密码,最好把自己的ssh公钥通过ssh-copy-id命令传给被检测的机器,这里只能给你个大致的思路,脚本可以自己去观察相关的命令输出,shell说白了就是处理文本!

麻媛苇2616如何写Linux 下shell程序操作数据库 -
景翁章15266081250 ______ while(1){ $dbh = DBI->connect ($connection_string, $userid, $username); $sth=$dbh->prepare(insert into table(....) values(....)); $sth->execute sleep (300); }

麻媛苇2616LINUX:编一个shell程序 -
景翁章15266081250 ______ #!/bin/bash read -p "Please input the first number:" num1 read -p "Please input the second number:" num2 read -p "Please input the third number:" num3 min=$num1 if [ $min -gt $num2 ] then min=$num2 fi if [ $min -gt $num3 ] then min=$num3 fi echo "The minimum number is $min"

麻媛苇2616菜鸟一位想写一个linux shell 脚本,执行次脚本回显数字,执行第一次回显1,执行第二次显示2,以此类推... -
景翁章15266081250 ______ 试下下面的这个脚本,showcnt.sh#!/bin/bash cntFile=".showcnt.txt" if [ ! -f $cntFile ]; then echo "0" > $cntFile#chmod +rw $cntFilefi if [ $# == 1 ]; then if [ $1 == "resetcnt" ]; then echo "0" > $cntFile fi fi tCnt=`cat $cntFile` echo $(($tCnt + 1)...

麻媛苇2616用linux编写shell程序,实现如下功能:从终端接收10个大于零的整数,并显示已输入的最大的数.
景翁章15266081250 ______ #试试这个(保存并给予此文件x权限然后在终端运行): arg_cnt=$# arg_list=$* biggest=$1 if [ $arg_cnt -eq 0 ]; then echo "$RF 后面必须添加你想要做比较的数(以空格分隔)" exit 1 fi for each_arg in $arg_list do if [ $each_arg -gt $biggest ]; then biggest=$each_arg fi done echo "最大的数是 : $biggest \n" exit 0

麻媛苇2616、在linux系统下,怎样编写shell脚本把当前目录下的文...... -
景翁章15266081250 ______ ls -l --time-style=full | awk '$6>"2011-09-13"&&$6="01"&&$7/dev/null 2>&1

麻媛苇2616在linux下,用c++如何编写shell -
景翁章15266081250 ______ 没有使用C++的shell脚本.一般用bash写脚本 要用C的话,可以用tcsh.它是用一种类似C的脚本语言,但运行得太慢了.要用与C类似得脚本的话,可以用PHP或Perl来运行脚本.

麻媛苇2616linux中shell编程 -
景翁章15266081250 ______ Linux系统中与Windows中的一些字符的编码不一样,所以会造成你说的问题.有两个命令可以分别完成这两种格式的转换:dos2unix unix2dos 对于你的情况,这样试试:dos2unix 你的shell程序 然后再运行你的程序

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