• Linux自动执行任务


    Linux自动执行任务

    2018.01.04 10:19:45字数 74阅读 142

    单次执行用at和batch,周期性任务执行用crontab。任务执行结束后会将结果返回给发起人,通过邮件完成的。
    邮件位于:/var/spool/mail/user_name

    单次执行任务:at,batch

    at

    at [OPTION]...TIME
    
        TIME表示方法:
            HH:MM[YYYY-mm-dd]
            noon(中午十二点),midnight(晚上十二点),teatime(下午四点)
            tomorrow
            now+#
                UNIT:minutes,hours,days,weeks
            at的作业有队列,用单个字母表示,默认都使用a队列;
    
        -l: 查看作业队列,相当于atq
        -f /path/to/somefile:从指定文件中读取作业任务,而不用交互式输入
        -d:删除指定作业,等于atrm
        -c:查看指定作业的具体内容
        -q QUEUE:指明队列
    
    注意:作业执行结果会发送邮件给用户;
    注意:at可以执行脚本,但是执行的工作目录可能不一样,所以脚本中的路径最好用绝对路径表示;
    

    batch:

    batch会让系统负载水平允许的时候执行任务;
    各个细节和at一样
    

    周期性任务:cron

    服务程序:
        cronie:主程序包,提供了crond守护进程及相关辅助工具;
    确保crond守护进程(daemon)处于运行状态;
        CentOS 7:
            systemctl status crond.service
                Active:atcive (running)......
        CentOS 6:
            service crond status
                ...is running
    向crond提交作业的方式不同于at,需要专用的配置文件,此文件有固定格式,不建议使用文本编辑器直接编辑此文件;而使用crontab命令:
    
    对于系统cron配置的格式:/etc/crontab
        SHELL=/bin/bash
        PATH=/sbin:/bin:/usr/sbin:/usr/bin
        MAILTO=root
    
        # For details see man 4 crontabs
    
        # Example of job definition:
        # .---------------- minute (0 - 59)
        # |  .------------- hour (0 - 23)
        # |  |  .---------- day of month (1 - 31)
        # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
        # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
        # |  |  |  |  |
        # *  *  *  *  * user-name  command to be executed
        注意:
            1.每行定义一个周期任务,有七个字段,各字段之间用空格进行分割:
                *  *  *  *  * :指定周期性时间(5)
                user-name  :指定执行用户(1)
                command to be executed:要执行的任务(1)
            2.此处的环境变量不同于用户登录的环境变量,所以命令用绝对路径(whereis 查看命令绝对路径),或者自定义环境变量;
            3.执行结果通过邮件发送给MAILTO指定的用户
    用户cron的配置:/var/spool/cron/USER_NAME 
        SHELL=/bin/bash
        PATH=/sbin:/bin:/usr/sbin:/usr/bin
        MAILTO=root
    
        # For details see man 4 crontabs
    
        # Example of job definition:
        # .---------------- minute (0 - 59)
        # |  .------------- hour (0 - 23)
        # |  |  .---------- day of month (1 - 31)
        # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
        # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
        # |  |  |  |  |
        # *  *  *  *  *  command to be executed
        注意:
            1.每行定义一个cron任务,共6个字符;
            2.使用绝对路径或者自定义环境变量
            3.邮件放给当前用户
    
    时间表示:
        1.特定值:
            给定时间点有效取值范围内的值
                day of week和day of mouth一般不同时使用;
        2. * :给定时间点上有效取值范围内的所有值;
        3.离散取值表示:用逗号隔开
        4.连续时间:用 - 表示,#-#
        5.在指定的时间点上,定义步长: /#:#即步长: */3 * * * *:每三分钟执行一次
            注意:
                1.指定的时间点不能被步长整除时,其意义将不复存在;
                2.cron最小单位为分钟,想完成 秒 的任务,需要用其他机制
  • 相关阅读:
    poi 导出文件
    获取哪一年 周一的所有日期
    线程池配置
    mybatis基于唯一索引插入或更新
    mongoTemplate关联查询
    cas认证机制
    SpringBoot服务
    HashMap的底层实现
    maven仓库提示“Downloading: http://repo.maven.apache.org/maven2/”
    Tomcat安装SSL证书
  • 原文地址:https://www.cnblogs.com/xuanbjut/p/11822817.html
Copyright © 2020-2023  润新知