相同名称的多进程程序的启动和停止

我们经常会遇到这种开发问题, 在同一台机器上后台启动多个进程.

这时我们需要使用脚本来启动,停止,监控每个进程,那么由于进程名称相同,使用 ps -ef | grep $excname 的形式无法区分每个进程,
此时我们该怎么办呢?

有一种解决办法是在启动每个进程时记录其进程号,然后在停止,监控该进程时只需对进程号操作就可以了.

办法如下:

启动时记录进程号写入某个文件:

nohup ./a.sh 1>log 2>&1 &
echo $! > svr.pid  # 获取启动进程的进程号

实际上 hadoop 的启动、停止脚本就是这么做的, 例如: hadoop-daemon.sh

pid=$HADOOP_PID_DIR/hadoop-$HADOOP_IDENT_STRING-$command.pid

启动时:
    if [ -f $pid ]; then
      if  kill -0 `cat $pid` > /dev/null 2>&1; then    # kill -0 测试指定进程号的进程是否存在 #
        echo $command running as process `cat $pid`.  Stop it first.
        exit 1
      fi
    fi

    nohup nice -n $HADOOP_NICENESS "$HADOOP_HOME"/bin/hadoop --config $HADOOP_CONF_DIR $command "$@" > "$log" 2>&1 < /dev/null &
     echo $! > $pid
    sleep 1; head "$log"
    ;;

停止时:

    if [ -f $pid ]; then
      if  kill -0 `cat $pid` > /dev/null 2>&1; then
        echo stopping $command
        kill `cat $pid`
      else
        echo no $command to stop
      fi
    else
      echo no $command to stop
    fi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值