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。 展开
#####脚本部分截取
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。 展开
展开全部
sh /usr/local/sbin/gdas/start.sh
改为
source /usr/local/sbin/gdas/start.sh
用sh方式去执行就是另开一个shell去跑,相当于是异步的,不等start.sh执行完就执行下面的判断了。用source在当前shell执行该脚本,就是阻塞方式,就不存在此问题了。
建议先手动执行脚本,检验无误了再加入crontab
改为
source /usr/local/sbin/gdas/start.sh
用sh方式去执行就是另开一个shell去跑,相当于是异步的,不等start.sh执行完就执行下面的判断了。用source在当前shell执行该脚本,就是阻塞方式,就不存在此问题了。
建议先手动执行脚本,检验无误了再加入crontab
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询