linux脚本中防止杀掉当前进程
本文介绍了linux脚本中防止杀掉当前进程的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
job.sh:
#!/bin/sh
cd ~/scripts
PATH=$PATH:/usr/local/bin
export PATH
killall -9 -g job.sh
scrapy crawl job
上面的脚本用来执行一个scrapy的抓取任务,通过crontab设置了定时启动,为防止任务重复,会先把老的任务终止:
kill all -9 -g job.sh #希望通过这句话同时关闭job.sh和他导致的scrapy进程
问题是,运行的时候老的被关掉了,当前正在被执行的这个脚本也被停止了,导致下面的scrapy任务没法启动。
怎么破?
解决方案
1、cd ~/scripts/job.sh
,这个是什么鬼?cd一个文件?
2、 建议脚本不要这样写:
先判断上个进程是否存在,如果不存在直接执行脚本
count=`ps -ef|grep job.sh|grep -v grep|wc -l`
如果存在,杀死进程
ps -ef|grep job.sh|grep -v grep |awk -F ' ' '{print $2}'|xargs kill -9
3、不要使用killall,这样会把你当前启动的脚本一并杀死,后面的命令当然也执行不了。
这篇关于linux脚本中防止杀掉当前进程的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文