请教各位一个shell脚本的问题条件判断问题

发布于 2022-09-12 23:41:43 字数 662 浏览 51 评论 0

我设想的功能:

1、先检测相关进程,若相关进程的PID存在,则提示进程已存在
2、若检测不到相关进程的PID,则执行启动命令
这两步我已经实现。
3、启动第2步的进程之后,再次检测进程
4、执行第3步的进程检测后,若进程存在,则发出成功提示,若进程不存在,则发出失败提示。

我目前的代码:

function start_namesrv() {
NAMESRV_PID=`ps -ax | grep -v grep | grep java | grep -i 'org.apache.rocketmq.namesrv.NamesrvStartup' | awk '{print $1}'`
        if [[ -n ${NAMESRV_PID} ]];then
                echo -e "\033[1;42;37m +++ The RocketMQ_namesrv(${NAMESRV_PID}) is already exsit... \033[0m"
        else
                cd ${ROCKETMQ_BIN}
                nohup sh mqnamesrv -n ${ADDR}:${NAMESRV_PORT} > ${NAMESRV_RUN_LOG} 2>&1 &

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

听你说爱我 2022-09-19 23:41:43
function start_namesrv() {
NAMESRV_PID=`ps -ax | grep -v grep | grep java | grep -i 'org.apache.rocketmq.namesrv.NamesrvStartup' | awk '{print $1}'`
        if [[ -n ${NAMESRV_PID} ]];then
                echo -e "\033[1;42;37m +++ The RocketMQ_namesrv(${NAMESRV_PID}) is already exsit... \033[0m"
        else
                cd ${ROCKETMQ_BIN}
                # 如果 sleep 5 秒后,pid 不存在,将会报错
                nohup sh mqnamesrv -n ${ADDR}:${NAMESRV_PORT} > ${NAMESRV_RUN_LOG} 2>&1
                sleep 5
                kill -0 $!
                if [ $? -ne 0 ]; then echo 'start failure'; else echo 'start success'; fi
                
}



# 启动
start_namesrv
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文