Skip to content

crontab

crontab 命令用于管理周期性任务的表格,这些任务可按照用户指定的时间间隔执行,通常用于自动执行系统维护、日常任务或其他常规操作。

语法

shell
crontab [ -u user ] file
crontab [ -u user ] [-l | -r | -e ]

file 指的是待执行任务的 crontab 文件。

选项

shell
-e: 编辑该用户的任务表格, 如果表格不存在, 则创建一个新的
-l: 列出该用户的所有任务
-r: 删除该用户的任务表格
-u<用户名称>: 指定要编辑,列出,删除的用户的 crontab 表格

系统任务调度

系统任务调度的配置文件:/etc/crontab, 文件内容解读如下

shell
# 指定要使用的 shell
SHELL=/bin/bash

# 指定系统执行命令的路径
PATH=/sbin:/bin:/usr/sbin:/usr/bin

# 指定将执行信息发送电子邮件给用户,值为空表示不发送
MAILTO=""

# cron 表达式说明
# .---------------- 分钟: 0 - 59
# |  .------------- 小时: 0 - 23
# |  |  .---------- 天数: 1 - 31
# |  |  |  .------- 月份: 1 - 12 或者 jan,feb,mar,apr ...
# |  |  |  |  .---- 星期: 0 - 7 (Sunday=0 or 7) 或者 sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * 用户名 待执行的命令

*/15 * * * * root command

用户任务调度

用户任务调度配置文件: /var/spool/cron/ 目录下,文件名和用户名一致,表达是格式同系统任务调度,只是少了用户。

shell
/etc/cron.deny     该文件中所列用户不允许使用 crontab 命令
/etc/cron.allow    该文件中所列用户允许使用 **crontab 命令
/var/spool/cron/   所有用户 crontab 文件存放的目录,以用户名命名

cron 表达式符号

星号[*]: 代表所有可能的值, 例如month字段如果是星号, 则表示在满足其它字段的制约条件后每月都执行该命令操作

逗号[,]: 可以用逗号隔开的值指定一个列表范围, 例如: 1,3,5,7,9

中杠[-]: 可以用整数之间的中杠表示一个整数范围, 例如: 2-6 表示 2,3,4,5,6

正斜线[/]: 可以用正斜线指定时间的间隔频率, 例如: 0-23/5 表示每 5 小时执行一次, 同时正斜线可以和星号一起使用, 例如: */10, 如果用在 minute 字段, 表示每十分钟执行一次

crond 服务

shell
# 启动服务
/sbin/service crond start

# 关闭服务    
/sbin/service crond stop

# 重启服务  
/sbin/service crond restart

# 重新载入配置
/sbin/service crond reload

# 查看服务状态
/sbin/service crond status

# 开机自启动
chkconfig -level 35 crond on

Released under the MIT License.