管理 crontab 的開源工具
crontab-ui 是一個用 Node.js 編寫的 Web 前端,幫助管理 crontab 文件。
自動化是目前的一個熱門話題。在我作為網(wǎng)站可靠性工程師(SRE)的日常工作中,我的部分職責(zé)是將盡可能多的重復(fù)性任務(wù)自動化。但是,有多少人在我們的日常非工作生活中這樣做呢?今年,我專注于將勞作自動化,以便我們可以專注于重要的事情。
作為一個初出茅廬的系統(tǒng)管理員,我最早了解的東西之一是 “cron”。cron 被廣泛用于做一些事情,如輪換日志、啟動和停止服務(wù)、運行程序作業(yè)等等。它在幾乎所有的 Unix 和 Linux 系統(tǒng)中都可用,而且是我認(rèn)識的每個系統(tǒng)管理員用來幫助管理服務(wù)和服務(wù)器的東西。cron 可以自動運行任何控制臺應(yīng)用或腳本,這使得它非常、非常靈活。
LCTT 譯注:CRON 是 “Command Run On” 的縮寫,即在某個時間運行命令。
Image of a Crontab
我用 cron 來獲取電子郵件,運行過濾程序,確保服務(wù)正在運行,與 Habitica 等在線游戲互動等。
以傳統(tǒng)方式使用 cron
要開始使用 cron,你可以簡單地在命令行輸入 crontab -e,啟動一個打開了當(dāng)前 crontab(“cron table” 的縮寫)文件的編輯器(如果你以 root 身份這樣做,你訪問的是系統(tǒng) crontab)。這是保存作業(yè)計劃的地方,記錄了何時運行。David Both 已經(jīng)寫了 大量 關(guān)于該文件的格式和如何使用它的文章,所以我不打算在這里介紹。我要說的是,對于新用戶來說,這可能有點嚇人,而且設(shè)置時間有點痛苦。
介紹 crontab-ui
有一些奇妙的工具可以幫助解決這個問題。我最喜歡的是 crontab-ui,這是一個用 Node.js 編寫的 Web 前端,可以幫助管理 crontab 文件。為了安裝和啟動 crontab-ui 供個人使用,我使用了以下命令。
# 做個備份
crontab -l > $HOME/crontab-backup
# 安裝 Crontab UI
npm install -g crontab-ui
# 創(chuàng)建本地數(shù)據(jù)庫目錄
mkdir $HOME/crontab-ui
# 啟動 crontab-ui
CRON_DB_PATH=$HOME/crontab-ui crontab-ui
完成這些后,只需將你的網(wǎng)頁瀏覽器指向 http://localhost:8000,你就會看到 crontab-ui 的網(wǎng)頁界面。要做的第一件事是點擊 “從 Crontab 獲取Get from Crontab”,加載你可能有的任何現(xiàn)有作業(yè)。然后點擊“備份Backup”,這樣你就可以回滾你所做的任何修改。
Image of Crontab-UI
添加和編輯 cron 作業(yè)是非常簡單的。添加一個名稱,你想運行的完整命令,以及時間(使用 cron 語法),然后保存。另外,你還可以捕獲日志,并設(shè)置將工作狀態(tài)郵寄到你選擇的電子郵箱。
完成后,點擊 “保存到 CrontabSave to Crontab”。
我個人非常喜歡它的日志記錄功能。有了 crontab-ui,你可以通過點擊一個按鈕來查看日志,這在排除故障時非常有用。
我建議不要一直運行 crontab-ui,至少不要公開運行。雖然它確實具有一些基本的身份驗證功能,但它不應(yīng)該暴露在你的本地機(jī)器之外。我不需要經(jīng)常編輯我的 cron 作業(yè),所以我可以按需啟動和停止它。
下次你需要編輯你的 crontab 時,可以試試 crontab-ui!