溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Linux crontab的用法

發(fā)布時(shí)間:2021-07-10 16:03:25 來源:億速云 閱讀:100 作者:chen 欄目:建站服務(wù)器

這篇文章主要講解了“Linux crontab的用法”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Linux crontab的用法”吧!

crontab

使用 cron的時(shí)候,我們經(jīng)常會因?yàn)?某個(gè)命令運(yùn)行時(shí)間太長,命令再次被啟動時(shí),會出現(xiàn)多進(jìn)程。  
可以使用flock, 如:

*/1 * * * * flock -xn /opt/app/nginx/test_repo/app/tasks/checkPaymentUrl.lock -c 'sudo -u apache php /opt/app/nginx/test_repo/app/console Payment checkPaymentUrl >> /dev/null 2>&1'

當(dāng)多個(gè)進(jìn)程可能會對同樣的數(shù)據(jù)執(zhí)行操作時(shí),這些進(jìn)程需要保證其它進(jìn)程沒有也在操作,以免損壞數(shù)據(jù)。

通常,這樣的進(jìn)程會使用一個(gè)「鎖文件」,也就是建立一個(gè)文件來告訴別的進(jìn)程自己在運(yùn)行,如果檢測到那個(gè)文件存在則認(rèn)為有操作同樣數(shù)據(jù)的進(jìn)程在工作。這樣的問題是,進(jìn)程不小心意外死亡了,沒有清理掉那個(gè)鎖文件,那么只能由用戶手動來清理了。  
參數(shù)

-s,--shared:獲取一個(gè)共享鎖,在定向?yàn)槟澄募腇D上設(shè)置共享鎖而未釋放鎖的時(shí)間內(nèi),其他進(jìn)程試圖在定向?yàn)榇宋募腇D上設(shè)置獨(dú)占鎖的請求失敗,而其他進(jìn)程試圖在定向?yàn)榇宋募腇D上設(shè)置共享鎖的請求會成功。
-x,-e,--exclusive:獲取一個(gè)排它鎖,或者稱為寫入鎖,為默認(rèn)項(xiàng)。
-u,--unlock:手動釋放鎖,一般情況不必須,當(dāng)FD關(guān)閉時(shí),系統(tǒng)會自動解鎖,此參數(shù)用于腳本命令一部分需要異步執(zhí)行,一部分可以同步執(zhí)行的情況。
-n,--nb, --nonblock:非阻塞模式,當(dāng)獲取鎖失敗時(shí),返回1而不是等待。
-w, --wait, --timeout seconds:設(shè)置阻塞超時(shí),當(dāng)超過設(shè)置的秒數(shù)時(shí),退出阻塞模式,返回1,并繼續(xù)執(zhí)行后面的語句。
-o, --close:表示當(dāng)執(zhí)行command前關(guān)閉設(shè)置鎖的FD,以使command的子進(jìn)程不保持鎖。
-c, --command command:在shell中執(zhí)行其后的語句。

實(shí)例  
crontab運(yùn)用flock防止重復(fù)執(zhí)行

0 23 * * * (flock -xn ./test.lock -c "sh /root/test.sh") #-n 為非阻塞模式

感謝各位的閱讀,以上就是“Linux crontab的用法”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對Linux crontab的用法這一問題有了更深刻的體會,具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI