zoukankan      html  css  js  c++  java
  • 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最小单位为分钟,想完成 秒 的任务,需要用其他机制
  • 相关阅读:
    permission 文档 翻译 运行时权限
    TabLayout ViewPager Fragment 简介 案例 MD
    Log 日志工具类 保存到文件 MD
    OkHttp 官方wiki 翻译 MD
    Okhttp 简介 示例 MD
    OkHttp 官方Wiki之【使用案例】
    DialogPlus
    倒计时 总结 Timer Handler CountDownTimer RxJava MD
    RecyclerView 判断滑到底部 顶部 预加载 更多 分页 MD
    CSS3的媒体查询(Media Queries)与移动设备显示尺寸大全
  • 原文地址:https://www.cnblogs.com/xuanbjut/p/11822817.html
Copyright © 2011-2022 走看看