美文网首页
Linux定时任务crontab

Linux定时任务crontab

作者: Meditator_6344 | 来源:发表于2018-06-09 10:41 被阅读0次

    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私房菜
    实验楼

    相关文章

      网友评论

          本文标题:Linux定时任务crontab

          本文链接:https://www.haomeiwen.com/subject/nldzsftx.html