• 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中选择需要删除的用户的命令文件;

      

      

  • 相关阅读:
    nginx 代理概念理解
    nginx反向代理(proxy_pass)tomcat的过程中,session失效的问题解决
    Mybatis-Generator 详解 http://www.cnblogs.com/jtzfeng/p/5254798.html
    web容器线程数和程序中线程阻塞导致 请求超时
    教程-Delphi操作快捷键
    PC-博客首页中增加必应或GOOGLE搜索功能
    PC-大概最全的黑客工具表了
    PC-计算机动行命令里的密密!系统管理程序!
    PC-红警联机问题与下载
    PC-破解RAR软件注册问题
  • 原文地址:https://www.cnblogs.com/coder-zyc/p/10216061.html
Copyright © 2020-2023  润新知