zoukankan      html  css  js  c++  java
  • Linux任务计划

    Linux任务计划,周期性任务执行

    • 未来的某时间点执行一次某任务:at,batch
    • 周期性执行某任务:crontab
      • 以上两种的执行结果会通过邮件发送给用户(本地邮件服务,非互联网)

                

      • 检测邮件服务是否开启
        • ss -tnlp
        • 或者netstat -tnlp
        • 如果存在127.0.0.1:25(IPV4)/::1:25(IPV6)则说明邮件服务已经开启

    本地电子邮件服务

    • 协议
      • smtp:simple mail transmission protocal/简单邮件传输协议,应用层协议,只能发邮件不能收邮件
      • pop3:post office protocal/邮局协议
      • imap4:internet mail access protocal/互联网邮件访问协议
    • mail/mailx命令
      • 收发互联网邮件
      • MUA:mail user agent,用户收发邮件的工具程序
      • mail [-s "SUBJECT"] username[@hostname]
      • "."号单独一行表示邮件结束了/或者ctrl+d
      • mail命令不带任务参数表示收邮件

      • 邮件正文的生成
        • 交互式输入
        • 通过输入重定向:mail -s "fstab file" root < /etc/fstab
        • 通过管道:cat /etc/fstab | mail -s "fstab file" root

     at命令:

    • 在未来某个时间点执行一次任务
    • at [OPTION]... TIME
    • TIME:
      • HH:MM [YYYY-mm-dd]
      • noon, midnight, teatime(下午四点)
      • HH:MM tomorrow
      • now+#,例如at now+1min(简写minutes)
        • Unit: minutes, hours, days, weeks
    • ctrl+d提交命令

    • at -l查看提交且未执行的at命令队列,相当于atq命令
    • at的作业有队列,用单个字母表示,默认都使用a队列
    • at -f FILE TIME:表示从指定文件中读取作业任务,不用再交互式输入
    • at -d #:删除未执行的某个作业任务,相当于atrm
    • at -c #:查看某个作业任务的详细信息,包括执行环境(默认的at执行环境路径可能不对,所以某些命令可能需要给出绝对路径)
    • at -q QUEUE:指明队列
    • 注:作业执行的结果以邮件发送给提交作业的用户

    batch命令:

    •  batch会让系统自行选择在系统资源较空闲的时间去执行指定的任务

    周期性任务计划:cron

    • 服务程序
      • cronle:主程序包,提供了crond守护进程及相关辅助工具
    • 确保crond守护进程(daemon)处于运行状态
      • systemctl status crond[.service]/CentOS 7
      • service crond status/CentOS 6
    • 向crond提交作业的方式不同于at,它需要使用专用的配置文件,此文件有固定格式,不建议使用文本编辑器直接编辑此文件,要使用crontab命令
      • cron任务分为两类
        • 系统cron任务:主要用于实现系统自身的维护
          • 只能手动编辑/etc/crontab文件
        • 用户cron任务:
          • 命令:crontab
      • 系统cron的配置格式

        • 配置文件位置:/etc/crontab
        • 每一行定义一个周期性任务,共7个字段
          • * * * * *:表示定义周期性时间
          • user-name:运行任务的用户身份
          • command to executed:要执行的任务
        • 此处的环境变量不同于用户登录后获得的环境变量,因此建议命令使用绝对路径,或者自定义PATH环境变量
        • 执行结果邮件发送给MAILTO指定的用户
      • 用户cron的配置格式

    • 配置文件位置:/var/spool/cron/USERNAME
    • 每一行定义一个周期性任务,不需要指定用户名,共6个字段
    • 此处的环境变量不同于用户登录后获得的环境变量,因此建议命令使用绝对路径,或者自定义PATH环境变量
    • 邮件发送给当前用户
      • 时间表示法
        • 特定值:给定字段处有效取值范围内的值
          • 注:day of week和day of month一般不同时使用
          • 如果不设置某时间字段,保留*号通配符
          • 例如:3 * * * *:每小时的第三分钟执行一次
          • 例如:3 4 * * 5:每周五的四点三分执行一次
        • *:每
        • 离散取值:在给定时间段上使用逗号分隔的多个值,没有空格
          • 例如:9 8 * * 3,7:每周三和周日的八点九分执行一次
        • 连续取值:在给定时间段上使用-连接开头和结束
          • 例如:0 9-18 * * 1-5:工作时间
        • 定义步长:/#
          • */5 * * * *:每5分钟执行一次
          • 当时间段最大值不能被整除时,其意义将不复存在
          • 最小时间单位是分钟,想完成秒级任务需要借助于其它机制实现,例如在脚本中秒级循环执行
    • crontab命令
      • -e:编辑任务(直接用vim编辑文件没有语法检查)
      • -l:列出所有任务
      • -r:移除所有任务,即删除/var/spool/cron/USERNAME文件;如果只想删除某一个任务,-e编辑(#号注释)
      • -i:在使用-r的时候提示用户确认
      • -u USER:root用户可以为其他用户管理cron任务,例如:crontab -u gentoo -l
      • 注:百分号有特殊意义,需要转义;单引号中的百分号不需要转义
        • 例如:touch $(date +%F-%H-%M-%S)

    注:如果不想接受邮件,可以在每个任务命令后面输出重定向:

    • COMMAND > /dev/null(错误流输出还是会发邮件的)
    • COMMAND &> /dev/null,错误也不收邮件

    注:如果在指定时间点上关机未执行,下次开机不会自动执行;如果想下次开机自动执行,可以使用anacron实现

    练习:

     

  • 相关阅读:
    二叉树前、中、后遍历
    程序员节宜冒泡
    HashMap源码分析
    Stack源码解析
    逆袭之旅DAY24.XIA.二重进阶、双色球
    逆袭之旅DAY24.XIA.数组练习
    LY.JAVA面向对象编程.内部类
    LY.JAVA面向对象编程.修饰符
    LY.JAVA面向对象编程.包的概述、导包
    XIA.人机猜拳
  • 原文地址:https://www.cnblogs.com/jacky1982/p/7859167.html
Copyright © 2011-2022 走看看