# 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 分执行任务。