本文转载自: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定时任务会出现无法执行的问题。可以从以下几个方面查找问题原因:
a.查看当前cron服务是否启动。
可以通过执行service crond status
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私房菜
实验楼