Linux定时任务crontab学习笔记

本文转载自:Meditator_6344的 Linux定时任务crontab

crontab简介与基本格式

1.1 简介

crontab 命令常见于 Unix 和类 Unix 的操作系统之中(Linux 就属于类 Unix 操作系统),用于设置周期性被执行的指令。crontab 命令从输入设备读取指令,并将其存放于 crontab 文件中,以供之后读取和执行。通常,crontab 储存的指令被守护进程激活,crond 为其守护进程,crond 常常在后台运行,每一分钟会检查一次是否有预定的作业需要执行。
通过 crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script 脚本。时间间隔的单位可以是分钟、小时、日、月、周的任意组合。

1.2 cron的工作原理

当用户使用crontab命令新建任务计划之后,该项 jobs 就会被 /var/spool/cron/ 目录下,而且以用户账号来创建一个文件,每一项任务计划为一行。
crond 检测的时间周期是 “分钟”, 每分钟会读取一次 /etc/crontab, 以及 /var/spool/cron 里面的记录并执行。
crond 执行的每一项任务计划,都会被记录到 /var/log/cron 这个日志文件。

1.3 crontab的命令格式

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

-u user:用来设定某个用户的crontab服务;
-file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。如果在命令行中没有指定这个文件,crontab命令将接受标准   输入(键盘)上键入的命令,并将它们载入crontab。
-e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。
-l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。
-r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。
-i:在删除用户的crontab文件时给确认提示。

以下是可以用于指定时间的特殊符号:
"*"       代表所有的取值范围内的数字,任何时刻都接受。特别要注意哦!
"*/n"     表示每n个单位间隔
"-"       时间范围
","       分隔的时段

1.4 crontab的文件格式

分 时 日 月 星期 要运行的命令

第1列分钟0~59
第2列小时0~23(0表示子夜)
第3列日1~31
第4列月1~12
第5列星期0~7(0和7表示星期天)
第6列要运行的命令

crontab使用

常用命令
$crontab -e 编辑crontab文件
$crontab -l 使用-l参数列出crontab文件
$crontab -r 删除crontab 文件

1.1 crontab -e

如果当前没有crontab文件,会默认创建一个新的cron文件。默认使用的编辑器是 vi,可以通过 export EDITOR=vim修改编辑器。crontab文件有了,现在我们可以添加我们需要的定时任务了。
Linux定时任务crontab学习笔记_第1张图片
如上图,创建了一个每分钟在fanco目录创建一个以当前时间命名的空白文件。如果命令调用的是shell命令(.sh),最好使用绝对路径,这样不会找不到执行档。
需要注意的是,有时候可能crontab定时任务会出现无法执行的问题。可以从以下几个方面查找问题原因:
a.查看当前cron服务是否启动。
可以通过执行 service crond status
Linux定时任务crontab学习笔记_第2张图片
如果crond状态为 crond is stopped ,则定时任务服务不会生效故无法执行。
b.可能是命令写的不正确。
可以将crontab的命令拿出来单独执行,看是否报错。嗯,我遇到的就是这种情况。

crontab -e 与 /etc/crontab

  • crontab -e 是针对使用者即某个用户来设计的,etc/crontab则是针对系统的例行性任务。

2.crontab -l

可以通过以下命令对cron文件进行备份

$ crontab -l > HOME/fanco/mycopycron
Linux定时任务crontab学习笔记_第3张图片

3.crontab -r

删除定时任务文件,将目前所有创建的crontab定时任务删除。(慎用),建议通过前面crontab-l进行文件备份。

crontab文件编写实例:

# 每一分钟执行一次command命令
* * * * *  command
# 每小时的第3 和 第15分钟执行command命令
3,15 * * * * command
 

参考链接:
鸟哥的Linux私房菜
实验楼

你可能感兴趣的:(Linux定时任务crontab学习笔记)