crontab 是 UNIX 系统上周期性调度任务的任务调度器。其名字是 chronic table(周期性时间表)的缩写。UNIX 系统上的每一个用户都有其自己的 "crontab"。
编辑 crontab 文件。
通过执行 crontab -e,你可以打开你登入的用户的 crontab。下面的插图显示了我的 crontab 的内容。

如你所见,我在用 crontab 来自动化 home brew, npm 和 arcanist 的更新(Arcanist 是代码审查、项目计划、代码托管套件:Phabricator 的一个命令行代码审查工具)。
左侧的如 0 0 * * * 这样的数字序列代表「每天 00:00 AM」。这些数字序列将设置右侧命令的执行时间。你可以在 crontab.guru 获得一个用户友好的介面来设置这串数字。
右侧的命令仅支持少部分环境变量。你可以想象一个没有任何 *rc 文件加载的 shell 环境,那就是 crontab 所拥有的。
因为被 crontab 执行的命令所拥有的是这样的 shell 环境,连 PATH 变量也没有被设置,所以你必须写下要执行命令的完全路径。
被 crontab 执行的命令可以是一个 UNIX 系统随行的命令行命令,也可以是你自己编写的一段脚本。如果你要执行一个需要 root 权限的系统命令,那么你需要保证你要执行的命令在 sudoers 文件里面。如果你要在 crontab 中执行一个 shell 脚本,那么你需要使用 chmod +x 你脚本的名字 来让你的脚本有执行权限。
保存 crontab 文件
在不同的编辑器上,保存 crontab 文件的方法各不相同。在 VIM 中,你可以使用 :w⏎ 来保存。如果你在使用 macOS,那么当你保存完文件后将会遇到下面这个对话框,你需要点击「OK」来让你的系统接受你的修改。

通知邮件
每一次一个命令被 crontab 所执行,你都会得到一封邮件。你可以在命令行环境以 mail 命令查看这封邮件。

然后每天你来到你的桌前,只需要打开你的命令行终端,然后输入 mail,然后你就可以知道你哪些命令行软件更新了。如你所见,今天我电脑上的 npm 更新了。

改变通知邮件目的地
默认下,每一个被 crontab 执行的命令都会发送一封邮件给设置这个命令的用户。但是你可以通过在 crontab 文件的顶部加入如下一行来改变目的地的地址(输入 crontab -e 打开 crontab 文件)。
MAILTO=your@emailaddress.com
你也可以通过设置 MAILTO 为 "" 来关闭邮件通知。具体如下列代码所示:
MAILTO=""
阅读 crontab 的手册
通过执行 man crontab, 你可以查看 crontab 的细节使用方法.

一些资源
我的 macOS 用 crontab 脚本: WeZZard/com.wezzard.crontab.macos
我的开发用 crontab 脚本: WeZZard/com.wezzard.crontab.dev
原文刊发于本人博客(英文)
本文使用 OpenCC 进行繁简转换