简介

cron:计划任务,是任务在约定的时间执行已经计划好的工作,这是表面的意思。在Linux中,我们经常用到 cron 服务器来完成这项工作。cron服务器可以根据配置文件约定的时间来执行特定的任务。

crond:crond的概念和crontab是不可分割的。crontab是一个命令,常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。该词来源于希腊语chronos(χρόνος),原意是时间。而crond正是它的守护进程。

crontab:crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。该词来源于希腊语 chronos(χρνο),原意是时间。通常,crontab储存的指令被守护进程激活, crond常常在后台运行,每一分钟检查是否有预定的作业需要执行。这类作业一般称为cron jobs。
以上摘自百度百科

通俗理解:
cron是一种规范,规定计划任务的规范。
crond是linux系统中实现cron规范的一个守护进程,会开启自启。
crontab是linux系统提供的一个操作crond进程的工具,通过这个工具用户可以添加自己的定时任务。

详解

cron定义规范

second minute hour day month week

second表示秒钟,可以是从0到59之间的任何整数
minute表示分钟,可以是从0到59之间的任何整数
hour表示小时,可以是从0到23之间的任何整数
day表示日期,可以是从1到31之间的任何整数
month表示月份,可以是从1到12之间的任何整数
week表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日

特俗符号:

星号(*)代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作
逗号(,)可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
中杠(-)可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
正斜线(/)可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次

注意:
各字段中间以空格隔开。crontab中没有秒,从分钟开始。

使用方法

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

创建crontab文件,执行命令 crontab crontab文件
crontab文件可以是普通的文本文件。

示例:

touch crontab.file   #创建名为crontab.file文件
echo '* * * * * /bin/echo `date` >> /aaa.txt' > crontab.file     #将定时任务命令输入到crontab.file文件
crontab crontab.file     #用crontab命令执行定时任务命令

依次执行上列命令,会发现根目录下的aaa.txt文件会记录每分钟的时间。

注意:所建立的crontab文件中,每一行都代表一项任务

其他命令参数讲解

-u user用来设定某个用户的crontab服务,例如,“-u ixdba”表示设定ixdba用户的crontab服务,此参数一般有root用户来运行
-e编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件
-l显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容
-r从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件
-i在删除用户的crontab文件时给确认提示
# crontab -l     #将定时任务输出
* * * * * /bin/echo `date` >> /aaa.txt

# crontab -r     #删除定时任务
# crontab -l     #再输出定时任务提示没有
no crontab for root

crontab -e #编辑定时任务
屏幕截图 2022-10-07 210731.png
编辑定时任务,按 ctrl+x 退出。

结束语

定时任务的应用场景很多,比如定时备份文件、定时重启某服务。
一个还用的cron表达式在线生成网站----clickme