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里面

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值