crontab 是 UNIX 系統上週期性調度任務的任務調度器。其名字是 chronic table(週期性時間表)的縮寫。UNIX 系統上的每個用戶都有其本身的 "crontab"。git
經過執行 crontab -e
,你能夠打開你登入的用戶的 crontab。下面的插圖顯示了個人 crontab 的內容。github
如你所見,我在用 crontab 來自動化 home brew, npm 和 arcanist 的更新(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 文件的方法各不相同。在 VIM 中,你可使用 :w⏎
來保存。若是你在使用 macOS,那麼當你保存完文件後將會遇到下面這個對話框,你須要點擊「OK」來讓你的系統接受你的修改。工具
每一次一個命令被 crontab 所執行,你都會獲得一封郵件。你能夠在命令行環境以 mail
命令查看這封郵件。oop
而後天天你來到你的桌前,只須要打開你的命令行終端,而後輸入 mail
,而後你就能夠知道你哪些命令行軟件更新了。如你所見,今天我電腦上的 npm 更新了。post
默認下,每個被 crontab 執行的命令都會發送一封郵件給設置這個命令的用戶。可是你能夠經過在 crontab 文件的頂部加入以下一行來改變目的地的地址(輸入 crontab -e
打開 crontab 文件)。
MAILTO=your@emailaddress.com
複製代碼
你也能夠經過設置 MAILTO
爲 ""
來關閉郵件通知。具體以下列代碼所示:
MAILTO=""
複製代碼
經過執行 man crontab
, 你能夠查看 crontab 的細節使用方法.
個人 macOS 用 crontab 腳本: WeZZard/com.wezzard.crontab.macos
個人開發用 crontab 腳本: WeZZard/com.wezzard.crontab.dev
原文刊發於本人博客(英文)
本文使用 OpenCC 進行繁簡轉換