Linux使用脚本关闭数据库

起初是linux设置了开机自启数据库,可是没建立一个新连接就启动一次,会发生冲突的问题,然后这里在启动的时候先看看有没有之前启动的,有的话就进行关闭

1.使用进程进行关闭数据库

话不多说直接上代码
一般查询任务的进程就是ps -ef| grep xxx或者ps aux |grep xxx
因为在查询一个启动的进程的时候总是会打印两个进程,所以这里使用了grep -v grep反向查询1不包含grep的进程,可是进程总是一长串我们只需要用到进行的pid就可以了,然后就使用awk '{print $2}'进行了类似截取字符串的操作

例如:有一个文件,名字为a.tx
awk ‘{print $2}’ a.txt结果如下
在这里插入图片描述

#查询mysql的进程
pid=`ps -ef | grep mysql |grep -v grep | awk '{print $2}'`
#这里使用$pid或者{pid}都是可以的
echo $pid
#这里参数必须得加上"",不然就有可能不经判断直接进行里面的操作
if [ -n "${pid}" ]
then
	kill -15 $pid
fi

注意:
1.shell中利用一般利用if [ -n str1 ]来判断字符串不为空
2.如果为上述pid的情况,必须加上"",如果不加改语句就等同于if [ -n ]
shell就会把它当成if [ str1 ]来处理-n用来是判断的自然不为空,所以就会一直为真

语句 解释
if [ str1 = str2 ] 当两个变量内容,长度相同时时为真
if [ str1 != str2 ] 当两个变量不等时为真
if [ -n str1 ] 当变量的长度大于0时为真(变量不能为空)
if [ -z str1 ] 当变量的长度为0时为真{变量为空))
f [ str1 ] 当变量不为空时为真
内容 解释
grep -v 是反向查询的意思
grep -v grep 就是不查含有gre的字段
$2 是第二个字段的意思
print $2 就是打印第二个字段
awk ‘{print $2}’ 意思是一行一行的读取,空格作为分隔符,打印第二个字段

因为怕mysql正在使用突然关闭会影响,这里使用kill -15而不是kill -9,因为kill -9是强制杀死,kill -15是安全干净的退出,不影响正在进行地,所以有时候会出现杀不死进程的情况(正常)

2.关闭mariadb 数据库

。termux两个都可以使用,但前提是第二个账号密码要对要设置
可以参考这个文章进行设置:https://blog.csdn.net/weixin_45853881/article/details/126940611

mysqladmin -u $(whoami) shutdown
mysqladmin -uroot -proot shutdown

如果不想使用kill可以把这个放到then里面

猜你喜欢

转载自blog.csdn.net/weixin_45853881/article/details/127440067