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

相关文章
相关标签/搜索