Linux crontab 定时任务工具使用
一、基本概念
crontab 文件:每个用户都有一个专属的 crontab 文件,用于定义定时任务,默认存储在 /var/spool/cron/crontabs 目录。
cron 服务:后台运行的 cron 进程负责读取所有用户的 crontab 文件,并按预定时间执行任务。
二、特点
用户的 cron 中默认 PATH=/usr/bin:/bin,如果使用其它路径,在任务文件的第一行加 PATH=/path,或者加入到计划任务执行的脚本中。
第六个字段指定要运行的命令。 该行的整个命令部分,直至换行符或 % 字符,指定的 shell 执行,除非使用反斜杠(\)进行转义,否则该命令中的 % 字符将变为换行符,并且第一个 % 之后的所有数据将作为标准输入发送到该命令。
root能够修改其它用户的作业。
默认标准输出和错误会被发邮件给对应的用户。
三、命令解读
命令格式
crontab [-u user] [-l | -r | -e] [-i]
常用选项
-l :列出所有任务
-e :编辑任务
-r :移除所有任务
-i :同-r一同使用,以交互式模式移除指定任务
-u user :管理特定用户的cron, 仅root有权限操作
命令 | 作用 |
---|---|
crontab -e | 编辑当前用户的 crontab 任务(首次使用会提示选择编辑器) |
crontab -l | 列出当前用户的所有定时任务 |
crontab -r | 删除当前用户的所有定时任务(谨慎使用) |
crontab -u 用户名 -l | 查看指定用户的定时任务(需 root 权限) |
四、定时任务语法
crontab 任务的格式为 5 个时间字段 + 要执行的命令,字段之间用空格分隔
* * * * * command
- - - - -
| | | | |
| | | | +----- 星期(0-6,0=周日 或 7=周日)
| | | +------- 月份(1-12)
| | +--------- 日期(1-31)
| +----------- 小时(0-23)
+------------- 分钟(0-59)
时间字段通配符
*:匹配所有值(如分钟字段为 * 表示每分钟)。
/:表示 “每隔”(如 */10 表示每隔 10 单位)。
-:表示范围(如 1-5 表示 1 到 5)。
,:表示列表(如 1,3,5 表示 1、3、5)。
五、常用定时任务示例
1、每日凌晨1点,删除指定文件
2、每月月初对指定文件进行压缩
3、每隔5分钟执行一次命令
4、工作日(周一至周五)的 9:00 执行命令