Linux 中 cron 系統的 4 種替代方案
Linux cron 系統 是一項經過時間檢驗的成熟技術,然而在任何情況下它都是最合適的系統自動化工具嗎?答案是否定的。有一些開源項目就可以用來與 cron 結合或者直接代替 cron 使用。
at 命令
cron 適用於長期重複任務。如果你設置了一個工作任務,它會從現在開始定期運行,直到計算機報廢為止。但有些情況下你可能只想設置一個一次性命令,以備不在計算機旁時該命令可以自動運行。這時你可以選擇使用 at
命令。
at
的語法比 cron 語法簡單和靈活得多,並且兼具互動式和非互動式調度方法。(只要你想,你甚至可以使用 at
作業創建一個 at
作業。)
$ echo "rsync -av /home/tux/ me@myserver:/home/tux/" | at 1:30 AM
該命令語法自然且易用,並且不需要用戶清理舊作業,因為它們一旦運行後就完全被計算機遺忘了。
閱讀有關 at 命令 的更多信息並開始使用吧。
systemd
除了管理計算機上的進程外,systemd
還可以幫你調度這些進程。與傳統的 cron 作業一樣,systemd 計時器可以在指定的時間間隔觸發事件,例如 shell 腳本和命令。時間間隔可以是每月特定日期的一天一次(例如在星期一的時候觸發),或者在 09:00 到 17:00 的工作時間內每 15 分鐘一次。
此外 systemd 里的計時器還可以做一些 cron 作業不能做的事情。
例如,計時器可以在一個事件 之後 觸髮腳本或程序來運行特定時長,這個事件可以是開機,可以是前置任務的完成,甚至可以是計時器本身調用的服務單元的完成!
如果你的系統運行著 systemd 服務,那麼你的機器就已經在技術層面上使用 systemd 計時器了。默認計時器會執行一些瑣碎的任務,例如滾動日誌文件、更新 mlocate 資料庫、管理 DNF 資料庫等。創建自己的計時器很容易,具體可以參閱 David Both 的文章 使用 systemd 計時器來代替 cron。
anacron 命令
cron 專門用於在特定時間運行命令,這適用於從不休眠或斷電的伺服器。然而對筆記本電腦和台式工作站而言,時常有意或無意地關機是很常見的。當計算機處於關機狀態時,cron 不會運行,因此設定在這段時間內的一些重要工作(例如備份數據)也就會跳過執行。
anacron 系統旨在確保作業定期運行,而不是按計劃時間點運行。這就意味著你可以將計算機關機幾天,再次啟動時仍然靠 anacron 來運行基本任務。anacron 與 cron 協同工作,因此嚴格來說前者不是後者的替代品,而是一種調度任務的有效可選方案。許多系統管理員配置了一個 cron 作業來在深夜備份遠程工作者計算機上的數據,結果卻發現該作業在過去六個月中只運行過一次。anacron 確保重要的工作在 可執行的時候 發生,而不是必須在安排好的 特定時間點 發生。
點擊參閱關於 使用 anacron 獲得更好的 crontab 效果 的更多內容。
自動化
計算機和技術旨在讓人們的生活更美好,工作更輕鬆。Linux 為用戶提供了許多有用的功能,以確保完成重要的操作系統任務。查看這些可用的功能,然後試著將這些功能用於你自己的工作任務吧。(LCTT 譯註:作者本段有些語焉不詳,讀者可參閱譬如 Ansible 自動化工具安裝、配置和快速入門指南 等關於 Linux 自動化的文章)
via: https://opensource.com/article/21/7/alternatives-cron-linux
作者:Seth Kenlon 選題:lujun9972 譯者:unigeorge 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive