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文件有了,现在我们可以添加我们需要的定时任务了。如上图,创建了一个每分钟在fanco目录创建一个以当前时间命名的空白文件。如果命令调用的是shell命令(.sh),最好使用绝对路径,这样不会找不到执行档。
需要注意的是,有时候可能crontab定时任务会出现无法执行的问题。可以从以下几个方面查找问题原因:
a.查看当前cron服务是否启动。
可以通过执行service crond status
如果crond状态为 crond is stopped ,则定时任务服务不会生效故无法执行。
b.可能是命令写的不正确。
可以将crontab的命令拿出来单独执行,看是否报错。嗯,我遇到的就是这种情况。
crontab -e 与 /etc/crontab
- crontab -e 是针对使用者即某个用户来设计的,etc/crontab则是针对系统的例行性任务。
2.crontab -l
可以通过以下命令对cron文件进行备份
$ crontab -l > HOME/fanco/mycopycron
3.crontab -r
删除定时任务文件,将目前所有创建的crontab定时任务删除。(慎用),建议通过前面crontab-l进行文件备份。
crontab文件编写实例:
# 每一分钟执行一次command命令
* * * * * command
# 每小时的第3 和 第15分钟执行command命令
3,15 * * * * command
参考链接:
鸟哥的Linux私房菜
实验楼
网友评论