您好,登錄后才能下訂單哦!
這篇文章主要講解了“Linux crontab的用法”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Linux crontab的用法”吧!
使用 cron的時候,我們經常會因為 某個命令運行時間太長,命令再次被啟動時,會出現多進程。
可以使用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'
當多個進程可能會對同樣的數據執行操作時,這些進程需要保證其它進程沒有也在操作,以免損壞數據。
通常,這樣的進程會使用一個「鎖文件」,也就是建立一個文件來告訴別的進程自己在運行,如果檢測到那個文件存在則認為有操作同樣數據的進程在工作。這樣的問題是,進程不小心意外死亡了,沒有清理掉那個鎖文件,那么只能由用戶手動來清理了。
參數
-s,--shared:獲取一個共享鎖,在定向為某文件的FD上設置共享鎖而未釋放鎖的時間內,其他進程試圖在定向為此文件的FD上設置獨占鎖的請求失敗,而其他進程試圖在定向為此文件的FD上設置共享鎖的請求會成功。 -x,-e,--exclusive:獲取一個排它鎖,或者稱為寫入鎖,為默認項。 -u,--unlock:手動釋放鎖,一般情況不必須,當FD關閉時,系統會自動解鎖,此參數用于腳本命令一部分需要異步執行,一部分可以同步執行的情況。 -n,--nb, --nonblock:非阻塞模式,當獲取鎖失敗時,返回1而不是等待。 -w, --wait, --timeout seconds:設置阻塞超時,當超過設置的秒數時,退出阻塞模式,返回1,并繼續執行后面的語句。 -o, --close:表示當執行command前關閉設置鎖的FD,以使command的子進程不保持鎖。 -c, --command command:在shell中執行其后的語句。
實例
crontab運用flock防止重復執行
0 23 * * * (flock -xn ./test.lock -c "sh /root/test.sh") #-n 為非阻塞模式
感謝各位的閱讀,以上就是“Linux crontab的用法”的內容了,經過本文的學習后,相信大家對Linux crontab的用法這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。