使用 crontab 自動化命令行軟件的更新

crontab 是 UNIX 系統上週期性調度任務的任務調度器。其名字是 chronic table(週期性時間表)的縮寫。UNIX 系統上的每個用戶都有其本身的 "crontab"。git

編輯 crontab 文件。

經過執行 crontab -e,你能夠打開你登入的用戶的 crontab。下面的插圖顯示了個人 crontab 的內容。github

crontab 的編輯器
crontab 的編輯器

如你所見,我在用 crontab 來自動化 home brew, npmarcanist 的更新(Arcanist 是代碼審查、項目計劃、代碼託管套件:Phabricator 的一個命令行代碼審查工具)。shell

左側的如 0 0 * * * 這樣的數字序列表明「天天 00:00 AM」。這些數字序列將設置右側命令的執行時間。你能夠在 crontab.guru 得到一個用戶友好的介面來設置這串數字。macos

右側的命令僅支持少部分環境變量。你能夠想象一個沒有任何 *rc 文件加載的 shell 環境,那就是 crontab 所擁有的。npm

由於被 crontab 執行的命令所擁有的是這樣的 shell 環境,連 PATH 變量也沒有被設置,因此你必須寫下要執行命令的徹底路徑。markdown

被 crontab 執行的命令能夠是一個 UNIX 系統隨行的命令行命令,也能夠是你本身編寫的一段腳本。若是你要執行一個須要 root 權限的系統命令,那麼你須要保證你要執行的命令在 sudoers 文件裏面。若是你要在 crontab 中執行一個 shell 腳本,那麼你須要使用 chmod +x 你腳本的名字 來讓你的腳本有執行權限。編輯器

保存 crontab 文件

在不一樣的編輯器上,保存 crontab 文件的方法各不相同。在 VIM 中,你可使用 :w⏎ 來保存。若是你在使用 macOS,那麼當你保存完文件後將會遇到下面這個對話框,你須要點擊「OK」來讓你的系統接受你的修改。工具

macOS 的提示
macOS 的提示

通知郵件

每一次一個命令被 crontab 所執行,你都會獲得一封郵件。你能夠在命令行環境以 mail 命令查看這封郵件。oop

crontab 郵件
crontab 郵件

而後天天你來到你的桌前,只須要打開你的命令行終端,而後輸入 mail,而後你就能夠知道你哪些命令行軟件更新了。如你所見,今天我電腦上的 npm 更新了。post

crontab 郵件內容
crontab 郵件內容

改變通知郵件目的地

默認下,每個被 crontab 執行的命令都會發送一封郵件給設置這個命令的用戶。可是你能夠經過在 crontab 文件的頂部加入以下一行來改變目的地的地址(輸入 crontab -e 打開 crontab 文件)。

MAILTO=your@emailaddress.com
複製代碼

你也能夠經過設置 MAILTO"" 來關閉郵件通知。具體以下列代碼所示:

MAILTO=""
複製代碼

閱讀 crontab 的手冊

經過執行 man crontab, 你能夠查看 crontab 的細節使用方法.

crontab 手冊
crontab 手冊

一些資源

個人 macOS 用 crontab 腳本: WeZZard/com.wezzard.crontab.macos

個人開發用 crontab 腳本: WeZZard/com.wezzard.crontab.dev


原文刊發於本人博客(英文)

本文使用 OpenCC 進行繁簡轉換

相關文章
相關標籤/搜索