# Crontab定时任务
以下是 crontab 的一些常用命令:
# 任务编辑
- crontab -e:编辑当前用户的 crontab 任务列表,打开默认的编辑器(一般是 vi 或 nano),可以在其中添加、修改或删除定时任务。
- crontab -u <用户名> -e:编辑指定用户的 crontab 任务列表,需要有相应的权限。
# 任务查看
- crontab -l:列出当前用户的所有定时任务。
- crontab -u <用户名> -l:列出指定用户的所有定时任务。
# 任务删除
- crontab -r:删除当前用户的所有定时任务,删除前需谨慎确认,因为此操作不可恢复。
- crontab -u <用户名> -r:删除指定用户的所有定时任务。
- crontab -ir:在删除当前用户的所有定时任务之前,会先进行交互询问确认。
# 服务管理
- /sbin/service crond start:启动 crond 服务,该服务负责定期检查并执行定时任务。
- /sbin/service crond stop:停止 crond 服务。
- /sbin/service crond restart:重启 crond 服务。
- /sbin/service crond reload:重新载入 crond 服务的配置文件,使配置生效,无需重启服务。
# 从文件加载任务
- crontab <文件名>:将指定文件中的内容加载为当前用户的 crontab 任务,文件中的每一行应符合 crontab 的任务格式。
# 添加 SELinux 属性
- crontab -s <文件名>:在从文件中加载 crontab 任务时,添加包含当前 SELinux 安全上下文的变量,若不使用 SELinux 则无需关注此命令。
在 crontab 中,时间格式由五个字段组成,从左到右依次是:分、时、日、月、周。每个字段的取值范围和含义如下:
# 分钟(0 - 59)
- 可以是一个固定的数字,比如
30
,代表 30 分钟的时候执行。 - 也可以是一个范围,如
10-20
,代表从 10 分钟到 20 分钟之间每分钟都执行。 - 还可以是间隔时间,像
*/5
,表示每隔 5 分钟执行一次。
# 小时(0 - 23)
- 例如,
12
表示 12 点执行;8-10
表示 8 点、9 点、10 点都执行;*/2
表示每隔 2 个小时执行一次。
# 日期(1 - 31)
- 如
15
代表 15 号执行;1-5
表示 1 号到 5 号每天都执行;*/3
意思是每隔 3 天执行一次。
# 月份(1 - 12)
- 例如,
6
表示 6 月份执行;3-6
表示 3、4、5、6 月执行;*/2
即每隔 2 个月执行一次。
# 星期(0 - 6,0 代表周日,1 - 6 代表周一到周六)
- 比如,
0
表示周日执行;1,3,5
代表周一、周三、周五执行;*/2
是每隔 2 天(按星期算)执行一次。
这些字段间用空格分隔,例如30 12 * * *
代表每天 12 点 30 分执行任务。