起初是linux设置了开机自启数据库,可是没建立一个新连接就启动一次,会发生冲突的问题,然后这里在启动的时候先看看有没有之前启动的,有的话就进行关闭
话不多说直接上代码
一般查询任务的进程就是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
是安全干净的退出,不影响正在进行地,所以有时候会出现杀不死进程的情况(正常)
。termux两个都可以使用,但前提是第二个账号密码要对要设置
可以参考这个文章进行设置:https://blog.csdn.net/weixin_45853881/article/details/126940611
mysqladmin -u $(whoami) shutdown
mysqladmin -uroot -proot shutdown
如果不想使用kill可以把这个放到then里面