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

新手上路,请多包涵

我设想的功能:

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 &
阅读 1.7k
1 个回答
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
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题