详解详解Unix/Linux中周期执行指令中周期执行指令Crontab命令命令
大家都知道Crontab是 Unix/Linux中用于设置周期执行指令的命令。如果我们需要定期执行某些任务,除了让任
务常驻外,更方便的方法是让crontab来帮助我们调度执行。下面通过这篇文章我们来详细介绍Crontab命令,有
需要的一起来看看吧。
简介简介
crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其
存放于“crontab”文件中,以供之后读取和执行。
通常,crontab储存的指令被守护进程激活,crond常常在后台运行,每一分钟检查是否有预定的作业需要执行。这类作业一般
称为cron jobs。
cron 是 Unix/Linux 中提供定期执行 shell 命令的服务,包括 crond 和 crontab 两部分:
crond: cron 服务的守护进程,常驻内存负责定期调度
crontab: cron 的管理工具,负责编辑调度计划
下面的演示在 Ubuntu 16.04 下进行。基本的使用方法可以用命令 man crontab 查看
NAME
crontab - maintain crontab files for individual users (Vixie Cron)
SYNOPSIS
crontab [ -u user ] file
crontab [ -u user ] [ -i ] { -e | -l | -r }
简单解释一下
-e 编辑,类似 vim,保存退出时会检查语法
-l 列举所有任务
-r 删除所有任务
如果 crontab 运行出错,可以查看日志文件/var/log/syslog
基本语法基本语法
cron 的语法非常简单,一共分六大块,其中前五块用于指定时间周期,最后一块是具体执行的命令,看起来大概是这么个格
式:
min hour day month week command
其中
min 表示分钟,范围 0-59
hour 表示小时,范围 0-23
day 表示天,范围 1-31
可以填写 L,表示当月最后一天
可以填写 W,1W 表示离 1 号最近的工作日
month 表示月,范围 1-12
每个月的最后一天 crontab 本身是不支持的,需要通过脚本判断
week 表示周,范围 0-7
这里 0 和 7 都表示周日
周与日月不能并存,可能会冲突
可以填写 #,4#3 表示当月第三个星期四
可以填写 L,5L 表示当月最后一个星期五
command 表示具体要执行的命令(最好是绝对路径)