防止指令碼重複執行方法
清單 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 $*
#!/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部落格 ” ,連結:http://blog.itpub.net/22661144/viewspace-1430664/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 如何防止jQuery物件動畫重複執行jQuery物件動畫
- linux指令碼完成重複執行的命令Linux指令碼
- LightDB/PostgreSQL 生成可重複執行的指令碼SQL指令碼
- 防止表單重複提交的程式碼
- jquery防止重複提交程式碼例項jQuery
- 防止Toast重複提醒AST
- Laravel 是怎樣防止你的定時任務重複執行的Laravel
- Perl指令碼執行方法小結指令碼
- PHP防止表單重複提交的解決方法PHP
- js 防止重複提交方案JS
- 使用nohup執行迴圈指令碼插入發現資料重複的問題指令碼
- bash shell指令碼執行方法總結指令碼
- 不能執行兩個指令碼的方法指令碼
- 前臺防止表單重複提交的方法。Jquery、jsjQueryJS
- PHP 防止表單重複提交PHP
- 前端如何防止介面重複提交前端
- 前端js指令碼與防止js指令碼前端JS指令碼
- WinForm MDIParent如何防止重複開啟ORM
- 執行shell指令碼指令碼
- 指令碼執行方式指令碼
- Casperjs迴圈執行(重複執行不退出)JS
- 如何避免任務重複執行
- 前端防止使用者重複提交-js前端JS
- MQ 如何防止訊息重複入隊MQ
- mybatis執行sql指令碼MyBatisSQL指令碼
- crontab執行shell指令碼指令碼
- PowerShell 指令碼執行策略指令碼
- SQL SERVER執行指令碼SQLServer指令碼
- 指令碼後臺執行指令碼
- 執行python指令碼後臺執行Python指令碼
- js儘量減少程式碼重複執行的次數JS
- redis執行lua指令碼的實現方法括饃Redis指令碼
- php不設定指令碼執行時間的方法PHP指令碼
- RouterOS 限速指令碼和限執行緒指令碼ROS指令碼執行緒
- appium ios java 指令碼如何用指令執行,例如 adb 那種方式執行指令碼APPiOSJava指令碼
- 【Shell】使用Shell指令碼快速完成SQL指令碼中重複枯燥的任務指令碼SQL
- PHP防止使用者重複提交表單PHP
- 防止表單重複提交的幾種策略