很多用cron定時(shí)執(zhí)行的shell腳本可能會(huì)由于各種原因執(zhí)行很久,會(huì)有必要在運(yùn)行的時(shí)候先檢查一下自身是否還在運(yùn)行。本文提供的linux shell腳本用以檢查以命令sh ...來執(zhí)行的shell腳本。要對(duì)其他東西進(jìn)行唯一性檢查,可以稍微修改一下源代碼。
代碼如下:
# 檢查通過sh命令執(zhí)行的shell腳本是不是還在執(zhí)行當(dāng)中,避免重復(fù)執(zhí)行.
# 把這段代碼放在需要保證唯一性的程序頭部即可
# 注意,如果直接把此腳本放到cron里面執(zhí)行的話,必須再grep -v " -c sh "以排除由cron產(chǎn)生的進(jìn)程!
checkitem="$0"
let procCnt=`ps -A --format='%p%P%C%x%a' --width 2048 -w --sort pid|grep "$checkitem"|grep -v grep|grep -v " -c sh "|grep -v "$$" | grep -c sh|awk '{printf("%d",$1)}'`
if [ ${procCnt} -gt 0 ] ; then
echo "$0腳本已經(jīng)在運(yùn)行[procs=${procCnt}],此次執(zhí)行自動(dòng)取消."
exit 1;
fi
更多信息請(qǐng)查看IT技術(shù)專欄