新聞中心
如果crontab設(shè)定任務(wù)每分鐘執(zhí)行一次,但執(zhí)行的任務(wù)需要花費(fèi)5分鐘,這時(shí)系統(tǒng)會再執(zhí)行導(dǎo)致兩個(gè)相同的任務(wù)在執(zhí)行。發(fā)生這種情況下可能會出現(xiàn)一些并發(fā)問題,嚴(yán)重時(shí)會導(dǎo)致出現(xiàn)臟數(shù)據(jù)性能瓶頸等惡性循環(huán)。

為高密等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及高密網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站設(shè)計(jì)、成都網(wǎng)站設(shè)計(jì)、高密網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
如果crontab設(shè)定任務(wù)每分鐘執(zhí)行一次,但執(zhí)行的任務(wù)需要花費(fèi)5分鐘,這時(shí)系統(tǒng)會再執(zhí)行導(dǎo)致兩個(gè)相同的任務(wù)在執(zhí)行。 發(fā)生這種情況下可能會出現(xiàn)一些并發(fā)問題,嚴(yán)重時(shí)會導(dǎo)致出現(xiàn)臟數(shù)據(jù)性能瓶頸等惡性循環(huán)。 為了防止這種情況,可以使用flock建立排它鎖。
例:
# /tmp/sleeptest.sh
#!/bin/bash
# Sleep
# PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
# export PATH
echo ""
echo "*****************************************"
echo "start time `date '+%Y-%m-%d %H:%M:%S'` "
sleep 300s
echo "finish time `date '+%Y-%m-%d %H:%M:%S'` "
echo "*****************************************"
計(jì)劃任務(wù)
# crontab -e
*/1 * * * * /tmp/sleeptest.sh >> /tmp/sleeptest.log
查看進(jìn)程
#ps aux | grep sleeptest.sh | wc -l
2
(每分鐘都會增加一個(gè),說明shell重復(fù)執(zhí)行中)
flock鎖
使用flock建立排它鎖,如果對進(jìn)程加了排他鎖其他進(jìn)程無法加鎖, 可以選擇等待超時(shí)或馬上返回。
flock [-sxun][-w #]
flock [-sxon][-w #] file [-c] command
-s, --shared: 獲得一個(gè)共享鎖
-x, --exclusive: 獲得一個(gè)獨(dú)占鎖/排他鎖
-u, --unlock: 移除一個(gè)鎖,通常是不需要的,腳本執(zhí)行完會自動(dòng)丟棄鎖
-n, --nonblock: 如果沒有立即獲得鎖,直接失敗而不是等待
-w, --timeout: 如果沒有立即獲得鎖,等待指定時(shí)間
-o, --close: 在運(yùn)行命令前關(guān)閉文件的描述符號。用于如果命令產(chǎn)生子進(jìn)程時(shí)會不受鎖的管控
-c, --command: 在shell中運(yùn)行一個(gè)單獨(dú)的命令
-h, --help 顯示幫助
-V, --version: 顯示版本
-w 等待時(shí)間,秒
添加鎖
*/1 * * * * flock -xn /tmp/sleeptest.lock -c /tmp/sleeptest.sh >> /tmp/sleeptest.log
## -x 獨(dú)占鎖 -n 直接失敗 如發(fā)現(xiàn)被鎖如就失敗不等待,除非解鎖。
*/1 * * * * flock -x -w 30 /tmp/sleeptest.lock -c /tmp/sleeptest.sh >> /tmp/sleeptest.log
## 如發(fā)現(xiàn)被鎖等30秒,解鎖成功的話就執(zhí)行。
網(wǎng)頁題目:Centosflock防止腳本重復(fù)運(yùn)行
新聞來源:http://www.fisionsoft.com.cn/article/dhshedo.html


咨詢
建站咨詢
