crontab 文件语法
在 Linux 系统上默认安装并激活 cron 守护进程。
它每分钟检查一次是否为当前时间定义了任何作业。
cron 守护进程使用一个名为 crontab 的文件,该文件包含一个作业列表以及它们何时运行。
整个 Linux 系统都存在一个 crontab 文件。
系统上的每个用户也可以定义自己的 crontab 文件。
crontab 文件中的每一行定义了一个 cron 作业。
前五个字段(由空白字符分隔——空格或者制表符)定义何时
应该运行 cron 作业。
它们使用以下语法:
字段编号 | 字段标签 | 范围 |
---|---|---|
1 | 分钟 | 0-59 |
2 | 小时 | 0-23 |
3 | 一个月中的哪一天 | 1-31 |
4 | 月 | 1-12 |
5 | 工作日 | 0-7 |
在用户 crontab 文件中,后续字段(字段 6 及以上)指定要运行的命令及其选项(如果有)。
在系统 crontab 文件中,第 6 个字段指定用于执行其余(第 7 个字段及以上)字段中的命令的用户。
cron 守护进程可以运行任何命令或者 shell 脚本。
但是,在运行命令或者 shell 脚本时,没有用户交互可用。
以下是配置这些字段的准则:
- 如果我们希望作业每分钟、每小时、每天或者每月运行一次,请在相应字段中输入星号 (*)。
- 我们可以在以逗号分隔的列表中的一个字段中包含多个条目。
- 我们可以指定一个范围,其中开始值和结束值用连字符分隔。
- 我们可以使用 /n 配置时间步长(其中 n 代表步长的大小)。
- 我们可以使用名称的前三个字母(例如,MON、TUE、JAN、FEB)指定月份和工作日。这些字母不区分大小写。但是,当我们使用字母时,我们不能使用范围或者列表。
- 代表工作日的数字从星期日的 0 开始并连续贯穿整个星期,7 再次代表星期日。例如,3 是星期三,6 是星期六。
定义用户作业
用户使用 crontab 命令创建和维护自己的 crontab 文件。
以下选项可与 crontab 命令一起使用:
选项 | 描述 |
---|---|
crontab -e | 创建或者编辑作业。 使用 vi 编辑器。 |
crontab file | 使用指定的文件替换当前用户的任何现有 crontab 文件,假设该文件包含使用正确语法的作业列表。 |
crontab -l | 显示当前作业。 |
crontab -r | 删除所有作业。 |
例如,假设我们要定义一个 cron 作业,该作业在每晚 5:05 PM 将用户主目录的内容复制到安装在 /media/USB 中的外部 USB 驱动器。
我们需要执行以下操作:
打开终端会话。
在 shell 提示符下,输入“crontab -e”。
# crontab -e
如果这是我们第一次定义 cron 作业,则会为用户创建一个空白的 crontab 文件。
- 按 I 键,然后输入以下内容:
5 17 * * * cp ~/* /media/USB
按 Esc,然后输入 ':wq!'。
我们可以通过创建以下两个文件来指定允许哪些用户创建 cron 作业,哪些不允许:
- /etc/cron.allow :此文件中列出的用户可以创建 cron 作业。
- /etc/cron.deny :未在此文件中列出的用户可以创建 cron 作业。
如果 /etc/cron.allow 文件存在,则它是唯一评估的文件;在这种情况下 /etc/cron.deny 将被忽略。
如果这两个文件都不存在,则只允许 root 用户定义用户 cron 作业。
我们会发现有许多任务需要在 Linux 系统上定期执行。
例如,我们可能需要更新数据库或者备份 /home/ 目录中的用户数据。
虽然我们可以手动运行这些任务,但如果我们将 Linux 系统配置为自动运行它们会更高效(也更可靠)。
这样做的一种选择是使用 cron。
cron 守护进程 (/usr/sbin/cron) 允许我们安排将定期为我们执行的作业。