美文网首页
Linux自动执行任务

Linux自动执行任务

作者: 耗奇害死猫 | 来源:发表于2018-01-04 10:19 被阅读0次

单次执行用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最小单位为分钟,想完成 秒 的任务,需要用其他机制;

相关文章

  • Linux自动执行任务

    单次执行用at和batch,周期性任务执行用crontab。任务执行结束后会将结果返回给发起人,通过邮件完成的。邮...

  • crontab的基本使用

    作用 crontab是linux的一项系统服务。用来在linux上面定时执行任务。crontab服务又分为系统任务...

  • Linux下的crontab定时执行任务命令详解

    Linux下的crontab定时执行任务命令详解 在LINUX中,周期执行的任务一般由cron这个守护进程来处理[...

  • 批处理脚本

    shell脚本和批处理,通常就是linux和windows下进行的一些简单脚本执行任务的途径。对于linux来说,...

  • mac 自动定时执行任务

    1、launchctl launchctl: 是一个统一的服务管理框架,可以启动、停止和管理守护进程、应用程序、进...

  • mac 自动定时执行任务

    1、launchctl launchctl: 是一个统一的服务管理框架,可以启动、停止和管理守护进程、应用程序、进...

  • 查看Linux系统服务(systemctl)

    Linux 系统服务有时也称为守护程序,是在Linux启动时自动加载并在Linux退出时自动停止的系统任务。 Ce...

  • Linux 设置开机自动运行脚本

    1. Linux 设置开机自动运行脚本 1. Linux 设置开机自动运行脚本[#1-linux-%E8%AE%B...

  • 作业-第04周--课堂-Day17-linux系统定时任务Cro

    Day17 课堂笔记 1 Linux系统定时任务 1、什么是定时任务?周期性的执行任务计划的软件,Linux定时任...

  • 定时任务

    Linux定时任务 什么是定时任务: 周期性的执行任务计划的软件,linux里定时任务常用软件有:Crond 使用...

网友评论

      本文标题:Linux自动执行任务

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