ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 防止脚本重复运行方法

防止脚本重复运行方法

原创 Linux操作系统 作者:fjzcau 时间:2015-02-08 22:15:53 0 删除 编辑
清单 3. 防止脚本重复运行方法 1
#!/usr/bin/ksh

main(){
selfPID="$$"
scriptFile="$0"

typeset existingPid
existingPid=`getExistingPIDs $selfPID "$scriptFile"`

if [ ! -z "$existingPid" ]; then
  echo "The script already running, exiting..."
  exit -1
fi

doItsTask

}

#获取除本身进程以外其它运行当前脚本的进程的 PID
getExistingPIDs(){
selfPID="$1"
scriptFile="$2"

ps -ef | grep "/usr/bin/ksh ${scriptFile}" | grep -v "grep" | awk "{ if(\$2!=$selfPID) print \$2 }"
}

doItsTask(){
echo "Task is now being executed..."
sleep 20  #睡眠 20s,以模拟脚本在执行需要长时间完成的任务
}

main $*


清单 4. 防止脚本重复运行方法 2
#!/usr/bin/ksh

main(){
selfPID="$$"
scriptFile="$0"

typeset existingPid
existingPid=`getExistingPIDs $selfPID "$scriptFile"`

if [ ! -z "$existingPid" ]; then
  echo "The script already running, killing it..."
  kill -9 "$existingPid" #此方法有一定风险,慎用!
fi

doItsTask

}

#获取除本身进程以外其它运行当前脚本的进程的 PID
getExistingPIDs(){
selfPID="$1"
scriptFile="$2"
ps -ef | grep "/usr/bin/ksh ${scriptFile}" | grep -v "grep" | awk "{ if(\$2!=$selfPID) print \$2 }"
}

doItsTask(){
echo "Task is now being executed..."
sleep 20  #睡眠 20s,以模拟脚本在执行需要长时间完成的任务
}

main $*

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22661144/viewspace-1430664/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: vi 命令专题
请登录后发表评论 登录
全部评论

注册时间:2011-04-03

  • 博文量
    208
  • 访问量
    547150