[英]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.