shell 脚本检测当前脚本已在执行则kill

####实现功能说明:定时任务中每分钟执行该脚本(脚本还有其他功能,没有展示出来)。但是害怕该脚本僵死或者常驻等,所以每次定时任务执行脚本时,都检测是否有该脚本在运行,如... ####实现功能说明:定时任务中每分钟执行该脚本(脚本还有其他功能,没有展示出来)。但是害怕该脚本僵死或者常驻等,所以每次定时任务执行脚本时,都检测是否有该脚本在运行,如果有那就kill掉。
#####脚本部分截取
sh_process=`ps -aux|grep match.sh| grep -v grep|grep -v PPID|awk '{print $2}'`
for i in $sh_process
do
echo $i
echo $$
if [ $i == $$ ] ####当前进程则跳过
then
continue
fi
#kill -9 $i
done

运行上面脚本获取到的$i会有两个,例如15259,15260其自身的pid是15259,但是不知道pid15260是什么,如果将kill -9 $i注释打开:提示match.sh: line 24: kill: (15260) - No such process。
展开
 我来答
弭艳枋0F1
2018-05-23 · TA获得超过475个赞
知道小有建树答主
回答量:418
采纳率:77%
帮助的人:62.5万
展开全部
sh /usr/local/sbin/gdas/start.sh
改为
source /usr/local/sbin/gdas/start.sh
用sh方式去执行就是另开一个shell去跑,相当于是异步的,不等start.sh执行完就执行下面的判断了。用source在当前shell执行该脚本,就是阻塞方式,就不存在此问题了。
建议先手动执行脚本,检验无误了再加入crontab
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式