zoukankan      html  css  js  c++  java
  • linux定时任务crontab

      crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。crontab储存的指令被守护进程激活, crond常常在后台运行,每一分钟检查是否有预定的作业需要执行,下面是以centos为例介绍。

    • 检测crontab是否安装

    crontab -l
    

      如果显示 ‘no crontab for root’ 或者显示当前的任务列表或者不报错,crontab已经安装;

      1.安装crontab服务

    yum -y install vixie-cron crontabs
    

     

      2.cron服务开启与关闭

    # 查看cond 状态
    service crond status
    
    # 启动cron
    service crond start
    
    # 关闭cron
    service crond stop
    
    # 重启cron
    service crond restart
    

      

    • crontab命令

      通过crontab可以在指定的时间内执行一个shell脚本或一系列的命令;

      1.命令格式

    crontab [-u user] file
    crontab [-u user] [-l | -r | -e] [-i] [-s]
    crontab -n [ hostname ]
    crontab -c
    

      -u user:用来设定某个用户的crontab服务;

      file:命令文件的名字,作为crontab的任务列表文件并载入crontab中,如果在命令行中没有指定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将它们载入crontab;

      -e:编辑某个用户的crontab文件内容;如果不指定用户,则表示编辑当前用户的crontab文件;

      -l:显示crontab文件;如果不指定用户,则表示编辑当前用户的crontab文件;

      -r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件;

      -i:在删除用户的crontab文件时给确认提示;

      

      2.crontab文件格式

      在/etc/crontab为crontab的全局配置文件

      格式实例:

      

    #每一分钟执行脚本
    */1 * * * * /xx/xx.sh
    
    #每一小时执行脚本
    0 */1 * * * /xx/xx.sh
    
    #每天21:30执行脚本
    30 21 * * * /xx/xx.sh
    
    #每周1-5的23:59执行脚本
    59 23 * * 1,2,3,4,5 /xx/xx.sh
    或
    59 23 * * 1-5 /xx/xx.sh
    
    #每月的1号,5号 23 号 28 号 的11点30分,执行脚本
    30 11 1,5,23,28 * * /xx/xx.sh
    
    #每隔两分钟,偶数分钟执行脚本
    */2 * * * * /xx/xx.sh
    
    #每隔两分钟,奇数分钟执行脚本
    1-59/2 * * * * /xx/xx.sh
    

      "*":表示任何时候都匹配

      "a,b,c":表示a 或者 b 或者c 执行命令

      "a-b":表示a到b之间执行命令

      "*/a":表示每隔a(分钟/小时等)执行一次

      crontab不能编辑系统级的任务;环境变量的值,在crontab 文件中获取不到;在crontab中%是有特殊含义的,表示换行,使用必须进行转义\%;

      

    • 使用实例

      编写一个测试的脚本,chmod +x添加权限

    #!/bin/bash
    echo "$(date +"%Y-%m-%d %H:%M:%S")" >> mytest.log >/dev/null 2>&1
    

      执行crontab -e,添加定时任务,每分钟执行一次

    */1 * * * * /root/demo.sh
    

      重启crontab服务

    service crond restart
    

      之后在/root中会出现一个mytest.log文件,每隔一分钟输出一次当前时间;

        删除定时服务,要先关闭服务

    service crond stop
    

      crontab -e选择需要删除的定时服务,或在/etc/spool/cron中选择需要删除的用户的命令文件;

      

      

  • 相关阅读:
    curl 命令行使用参考
    PHP 输出json_encode 空白的检查
    RAM和ROM
    浮点数
    负数补码
    位运算
    无法加载文件 C:UsershuangshiminAppDataRoaming pmwechat-terminal.ps1,因为在此系统上禁止运行脚本
    windows + php + shell_exec 执行失败的可能原因
    Ubuntu 发送邮件
    红黑树
  • 原文地址:https://www.cnblogs.com/coder-zyc/p/10216061.html
Copyright © 2011-2022 走看看