shell脚本的含义

时间:2013-04-05 19:12:09

标签: bash shell

我想了解这个过程的问题是什么;当一个进程运行时,它不会返回计数。它直接进入echo “没有QMS过程发现在$ PWD上运行”这种情况。

QMS_PROCESS=`ps -ef | grep $PWD/qms_kernel | grep -v grep | cut -f6 -d' '`
QMS_PROCESS_COUNT=`echo $QMS_PROCESS | egrep [0-9] | wc -c`
if [ $QMS_PROCESS_COUNT -eq 0 ]
  then
    echo "No QMS process found running on $PWD" 
  else
    kill -15 $QMS_PROCESS
    echo "QMS process $QMS_PROCESS stopped on $PWD" 
fi

任何人都可以帮助我理解。

2 个答案:

答案 0 :(得分:1)

这种方法怎么样:

QMS_PROCESS=`pidof "$PWD/qms_kernel"`
if [ -z "$QMS_PROCESS" ]; then
  echo "No QMS process found running on $PWD" 
else
  kill -15 $QMS_PROCESS
  echo "QMS process ($QMS_PROCESS) stopped on $PWD" 
fi

答案 1 :(得分:0)

第一行运行ps -ef列出所有进程,查找特定的qms_kernel进程,其中包含前面当前目录的路径(即$PWD部分,并且有点令人惊讶,然后过滤掉grep命令并运行一个神秘的cut命令来收集第6个字段。

第二行计算位数,这也是一个奇怪的数字。

if块检查$QMS_PROCESS_COUNT中的值是否为0。如果是,则报告“无QMS进程”,否则尝试终止(信号15,即TERM或SIGTERM)进程并报告进程已停止。