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