繁体   English   中英

在Linux中如何在后台终止作业调度程序?

[英]How to terminate a job dispatcher in back ground in Linux?

我有一个包含以下代码的工作调度程序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。 什么都没显示。

用内容创建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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM