在 Linux 中安全且輕鬆地管理 Cron 定時任務

Sk發表於2022-11-27

在 Linux 中遇到計劃任務的時候,你首先會想到的大概就是 Cron 定時任務了。Cron 定時任務能幫助你在類 Unix 作業系統中計劃性地執行命令或者任務。也可以參考一下我們之前的一篇《關於 Cron 定時任務的新手指導》。對於有一定 Linux 經驗的人來說,設定 Cron 定時任務不是什麼難事,但對於新手來說就不一定了,他們在編輯 crontab 檔案的時候不知不覺中犯的一些小錯誤,也有可能把整個 Cron 定時任務搞掛了。如果你在處理 Cron 定時任務的時候為了以防萬一,可以嘗試使用 Crontab UI,它是一個可以在類 Unix 作業系統上安全輕鬆管理 Cron 定時任務的 Web 頁面工具。

Crontab UI 是使用 NodeJS 編寫的自由開源軟體。有了 Crontab UI,你在建立、刪除和修改 Cron 定時任務的時候就不需要手工編輯 Crontab 檔案了,只需要開啟瀏覽器稍微操作一下,就能完成上面這些工作。你可以用 Crontab UI 輕鬆建立、編輯、暫停、刪除、備份 Cron 定時任務,甚至還可以簡單地做到匯入、匯出、部署其它機器上的 Cron 定時任務,它還支援錯誤日誌、郵件傳送和鉤子。

安裝 Crontab UI

只需要一條命令就可以安裝好 Crontab UI,但前提是已經安裝好 NPM。如果還沒有安裝 NPM,可以參考《如何在 Linux 上安裝 NodeJS》這篇文章。

執行這一條命令來安裝 Crontab UI。

$ npm install -g crontab-ui

就是這麼簡單,下面繼續來看看在 Crontab UI 上如何管理 Cron 定時任務。

在 Linux 上安全輕鬆管理 Cron 定時任務

執行這一條命令啟動 Crontab UI:

$ crontab-ui

你會看到這樣的輸出:

Node version: 10.8.0
Crontab UI is running at http://127.0.0.1:8000

首先在你的防火牆和路由器上放開 8000 埠,然後開啟瀏覽器訪問 <http://127.0.0.1:8000>

注意,預設只有在本地才能訪問到 Crontab UI 的控制檯頁面。但如果你想讓 Crontab UI 使用系統的 IP 地址和自定義埠,也就是想讓其它機器也訪問到本地的 Crontab UI,你需要使用以下這個命令:

$ HOST=0.0.0.0 PORT=9000 crontab-ui
Node version: 10.8.0
Crontab UI is running at http://0.0.0.0:9000

Crontab UI 就能夠透過 <http://IP-Address>:9000 這樣的 URL 被遠端機器訪問到了。

Crontab UI 的控制檯頁面長這樣:

從上面的截圖就可以看到,Crontab UI 的介面非常簡潔,所有選項的含義都能不言自明。

在終端輸入 Ctrl + C 就可以關閉 Crontab UI。

建立、編輯、執行、停止、刪除 Cron 定時任務

點選 “New”,輸入 Cron 定時任務的資訊並點選 “Save” 儲存,就可以建立一個新的 Cron 定時任務了。

  1. 為 Cron 定時任務命名,這是可選的;
  2. 你想要執行的完整命令;
  3. 設定計劃執行的時間。你可以按照啟動、每時、每日、每週、每月、每年這些指標快速指定計劃任務,也可以明確指定任務執行的具體時間。指定好計劃時間後,“Jobs” 區域就會顯示 Cron 定時任務的句式。
  4. 選擇是否為某個 Cron 定時任務記錄錯誤日誌。

這是我的一個 Cron 定時任務樣例。

如你所見,我設定了一個每月清理 pacman 快取的 Cron 定時任務。你也可以設定多個 Cron 定時任務,都能在控制檯頁面看到。

如果你需要更改 Cron 定時任務中的某些引數,只需要點選 “Edit” 按鈕並按照你的需求更改對應的引數。點選 “Run” 按鈕可以立即執行 Cron 定時任務,點選 “Stop” 則可以立即停止 Cron 定時任務。如果想要檢視某個 Cron 定時任務的詳細日誌,可以點選 “Log” 按鈕。對於不再需要的 Cron 定時任務,就可以按 “Delete” 按鈕刪除。

備份 Cron 定時任務

點選控制檯頁面的 “Backup” 按鈕並確認,就可以備份所有 Cron 定時任務。

備份之後,一旦 Crontab 檔案出現了錯誤,就可以使用備份來恢復了。

匯入/匯出其它機器上的 Cron 定時任務

Crontab UI 還有一個令人注目的功能,就是匯入、匯出、部署其它機器上的 Cron 定時任務。如果同一個網路裡的多臺機器都需要執行同樣的 Cron 定時任務,只需要點選 “Export” 按鈕並選擇檔案的儲存路徑,所有的 Cron 定時任務都會匯出到 crontab.db 檔案中。

以下是 crontab.db 檔案的內容:

$ cat Downloads/crontab.db
{"name":"Remove Pacman Cache","command":"rm -rf /var/cache/pacman","schedule":"@monthly","stopped":false,"timestamp":"Thu Aug 23 2018 10:34:19 GMT+0000 (Coordinated Universal Time)","logging":"true","mailing":{},"created":1535020459093,"_id":"lcVc1nSdaceqS1ut"}

匯出成檔案以後,你就可以把這個 crontab.db 檔案放置到其它機器上並匯入成 Cron 定時任務,而不需要在每一臺主機上手動設定 Cron 定時任務。總之,在一臺機器上設定完,匯出,再匯入到其他機器,就完事了。

在 Crontab 檔案獲取/儲存 Cron 定時任務

你可能在使用 Crontab UI 之前就已經使用 crontab 命令建立過 Cron 定時任務。如果是這樣,你可以點選控制檯頁面上的 “Get from crontab” 按鈕來獲取已有的 Cron 定時任務。

同樣地,你也可以使用 Crontab UI 來將新的 Cron 定時任務儲存到 Crontab 檔案中,只需要點選 “Save to crontab” 按鈕就可以了。

管理 Cron 定時任務並沒有想象中那麼難,即使是新手使用 Crontab UI 也能輕鬆管理 Cron 定時任務。趕快開始嘗試並發表一下你的看法吧。


via: https://www.ostechnix.com/how-to-easily-and-safely-manage-cron-jobs-in-linux/

作者:SK 選題:lujun9972 譯者:HankChow 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出

相關文章