• 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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    注意:
    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
    
    • 1
    mysqladmin -uroot -proot shutdown
    
    • 1

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

  • 相关阅读:
    常用的正则表达式30个,整数、浮点数、中文、英文字母、手机号、邮箱、日期、IP等等( JavaScript、Java)
    C#调用C++ dll 返回数组
    【2023】Git版本控制-远程仓库详解
    【MySQL】MVCC(多版本并发控制)详解
    Java学习-MyBatis学习(四)
    算力经济下DPU芯片的发展机遇
    Kubernetes教程(五)---Service 的几种访问方式
    02【Java的IO模型】
    40_内部类
    雷达得基本概念--关键词
  • 原文地址:https://blog.csdn.net/weixin_45853881/article/details/127440067