如何在Linux中终止作业调度员?

时间:2014-01-13 02:35:35

标签: linux bash shell unix process

我有一个包含以下代码的作业调度程序bash shell脚本:

for (( i=0; i<$toBeDoneNum; i=i+1 ))
do
    while true
    do
            processNum=`ps aux | grep Checking | wc -l`
            if [ $processNum -lt $maxProcessNum ]; then
                break
            fi
            echo "Too many processes: Max process is $maxProcessNum."
            sleep $sleepSec
    done
    java -classpath ".:./conf:./lib/*" odx.comm.cwv.main.Checking $i
done

我像这样运行脚本在后台:

./dispatcher.sh &

我想用kill -9终止这个调度程序进程。但我没有在第一时间记录调度员流程的pid。相反,我使用工作来显示所有过程,但它没有显示任何内容。即便是这个fg也无法将这个过程带到前台。

fg
bash: fg: current: no such job

但我认为这个调度程序进程仍在运行,因为它仍然继续分配java程序来运行。我该如何终止这个作业调度程序bash shell脚本进程?

编辑:我使用了工作,工作-l,工作-r和工作-s。没有任何表现。

1 个答案:

答案 0 :(得分:0)

创建包含内容的test.sh

sleep 60

然后

jobs -l | grep 'test.sh &' | grep -v grep | awk '{print $2}'

这给了我Ubuntu和OSX上的进程ID

您可以将其分配给变量然后将其删除

pid=`jobs -l | grep 'test.sh &' | grep -v grep | awk '{print $2}'`
kill -9 $pid