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

在Linux中如何在后台终止作业调度程序?,linux,bash,shell,unix,process,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

我有一个作业调度器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
我想用kill-9终止这个调度程序进程。但是我第一次没有记录调度进程的pid。相反,我用jobs来显示所有的过程,但它什么也没显示。即使是这个fg也不能将这个过程带到前台

fg
bash: fg: current: no such job
但我认为这个dispatcher进程仍然在运行,因为它仍然继续分配java程序来运行。我应该如何终止这个作业调度程序bashshell脚本进程


编辑:我使用了jobs,jobs-l,jobs-r和jobs-s。未显示任何内容。

使用内容创建test.sh

sleep 60
然后

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

您可以将其分配给一个变量,然后终止它

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

还有一个Linux Q&a站点,可能也值得在那里发布此站点。您是否尝试ps获取所有进程的列表?如果你想做一些grep/awk魔术,你可以得到进程的id。把它传给沙尔格,然后杀了他。只是一个深思熟虑的ps-ef。上面并没有dispater的名字,我使用了jobs,jobs-l,jobs-r和jobs-s。什么都没显示。你怎么启动调度员的?dispacher.sh&?
jobs -l | grep 'test.sh &' | grep -v grep | awk '{print $2}'
pid=`jobs -l | grep 'test.sh &' | grep -v grep | awk '{print $2}'`
kill -9 $pid