在 Linux 中安全且輕鬆地管理 Cron 定時任務
在 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 定時任務了。
- 為 Cron 定時任務命名,這是可選的;
- 你想要執行的完整命令;
- 設定計劃執行的時間。你可以按照啟動、每時、每日、每周、每月、每年這些指標快速指定計劃任務,也可以明確指定任務執行的具體時間。指定好計劃時間後,「Jobs」 區域就會顯示 Cron 定時任務的句式。
- 選擇是否為某個 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
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive