我有一个简单的bash脚本,可以监视mysql是up还是down.如果它关闭,我想也阻止HAProxy运行.下面是我简单的bash脚本:
#!/bin/bash
nc -z 127.0.0.1 3306
rt_val=$?
msg=$(sudo service haproxy stop);
if [ $rt_val != 0 ]; then
eval $msg
exit 3
else
exit 0
fi
Run Code Online (Sandbox Code Playgroud)
MySQL运行或不运行的部分工作得很好.停止HAProxy部分似乎有问题.发生的事情是当mysql停止时HAProxy停止.但是当我启动MySQL和HAProxy时,即使MySQL启动并运行,脚本似乎也会继续停止HAProxy.
在您的脚本中,您无条件地执行sudo service haproxy stop
并$msg
使用命令替换存储输出.
您可以将命令存储在变量中,但这被认为是非常糟糕的做法(请参阅Bash FAQ 050).相反,尝试将命令分配给函数并稍后调用它(function
关键字既是可选的又是Bash特定的,为了便于携带而留下它):
#!/bin/bash
function stopcmd() { sudo service haproxy stop ; } # semicolon needed if on single line
nc -z 127.0.0.1 3306
rt_val=$?
if [ $rt_val != 0 ]; then
stopcmd
exit 3
else
exit 0
fi
Run Code Online (Sandbox Code Playgroud)
此外,[ ... ]
在这种简单的情况下,函数和test()都不是必需的.您的脚本可以写成:
#!/bin/bash
if nc -z 127.0.0.1 3306
then
exit 0
else
sudo service haproxy stop
exit 3
fi
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
116 次 |
最近记录: |