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 进行繁简转换