码迷,mamicode.com
首页 > 系统相关 > 详细

m20预习笔记整理--linux任务计划

时间:2016-07-24 21:08:26      阅读:236      评论:0      收藏:0      [点我收藏+]

标签:linux任务计划

周期性执行任务
    1、未来的某时间执行一次某任务 at、batch
    2、周期性运行某任务crontab


    执行结果:会通过邮件发送给用户
邮件:
    1只用于本机的邮件服务
    2本机用户之间传递邮件
    /var/spool/mail/username
    注:不同于互联网的电子邮件,仅本机用户之间发送邮件
        cenos5,6,7默认邮件功能都是开启的


检测邮件功能是否开启
    ss -tnl
    netstat -tnl
    25号端口为服务端口处于监听状态
    netstat -tnlp 显示出程序名称 master
本地电子邮件服务
    smtp:用户向服务器发送邮件
      用户收邮件:
        pop3
        imp4


mail命令


mailx:收发邮件
mua:用户收发邮件的程序(相当于windows下的foxmail)


发送
    mailx -s ”hello centos“ centos  发送标题为hello centos 的邮件
    how are you these days
    .  (点号结束邮件编写退出并发送)
    接收邮件mail
    &(选取邮件编号)查看邮件
    &q退出


        邮件正文的生成
        1交互式输入,点号成行可以表示结束正文;ctrl+d
        2通过输入重定向
        3通过管道


at     命令
    at[OPTION]...TIME
    TIME:
    HH:MM [YYYY-MM-DD]
    noon(中午);midnight(半夜);teatime(下午4点)
    tomorrow(明天)
    now+#
        #单位:minutes,hours,days,weeks
                at now+2min


    at > cat /etc/issue
    at > ls /var
    at > echo "hello there"


    #ctrl+退出
    at -l         显示任务查看作业队列
            任务完成后自动发送邮件给用户
                  at的作业队列,用单个字母表示,默认都使用a队列
    at -l=at q
    at -f    /path/from/somefile 从指定文件中读取任务
            注vim输入命令即可,每行一个;而不用交互式输入
       
    at -d # 删除任务 ,#作业号
    at rm=at -d


 [root@yangyouwei ~]# at now  +2min-----#2分钟后执行以下命令
 at> cat /etc/issue
 at> ls /dev
 at> cat /etc/issue
 at> ls /var
 at> echo "hello there"
 at> <EOT>---------------------#ctrl+d结束输入


 [root@yangyouwei ~]# at -l-----------------#列出队列
 6       2016-07-22 18:24 a root
 [root@yangyouwei ~]# at -c 6---------------#显示队列内容


 atrm
 atq
 atrun
 attr
 atd


  注意:at支持使用脚本,但脚本中的命令最好给出绝对路径,因为环境变量可能与用户不一致导致出错。


batch命令
 batch会让系统自动选择在系统资源相对较空闲的时候运行程序


周期性任务计划:cron
 需要一个服务实时检测是否有满足时间的任务
 centos6,7使用的服务为cronie
 cronie主程序包,提供了crond守护进程及相关辅助工具
 确保cron守护进程daemon处于运行状态
 ~]#systemctl status crond.service----------centos7查询服务状态
 ~]#service crond status--------------------centos6查询服务状态


 向crond提交作业的方式不同于at,它需要使用专用的配置文件。且有固定格式,不建议使用文本编辑器编辑此文件,要用crontab命令


cron任务分为2类
 系统cron任务:主要用于实现系统自身的维护
 用户cron任务:用户自己定义的任务


 系统cron任务 :手动编辑/etc/crontab文件
 用户cron任务 :命令crontab  /var/spool/cron/username


cron时间表示法
 1特定值
  给定时间点有效取值范围内的值
  注:day of week和day of month一般不同时使用


  *:星号 五个字段分别表示 分钟 小时 日 月 星期几
   给定时间上有效取值范围内的所有值表示“每”
   在哪一位上表示每“分,小时,天,星期,月..”
   列如:
    3 * * * *-------------每几点三分执行
    3 4 * * 5-------------每周五四点三分执行
    5 6 7 * *-------------每月的7号的6点5分执行
    7 8 9 10 *------------每年的10月9号8点7分
 


 2离散取值
  在时间点上使用逗号分隔的多个值
   例如
    9 8 * * 3,7-----------每周三和周日的8点9分执行
    0 8,20 * * 3,7--------每周三和周日的8点和20点执行


 3连续取值
  在时间点上使用——连接开头和结尾
  #-#
  例:
   0 9-18 * * 1-5------------每周一和周五9点至18点每小时执行一次


 4在指定时间上,定义步长
  列:
   */5 * * * *---------每5分钟执行一次
   注意:指定的时间点不能被步长整除时,其意义将不复存在
      cond最小单位为分钟,向完成秒级任务,需要其他机制如:定义每分钟执行一次,而再利用脚本每三秒执行一次,循环多次。


crond命令
 crond [-u user][-l|-r|-e][-i][-s]
   -e  编辑任务
   -l  列出所有任务
   -r  移除所有任务
   -i  在使用-r时提示用户确认
   -u  user    root用可为指定用户管理cront任务
  定义command时命令中需要用到“%”时需要使用转义或放到单引号中


思考:某任务在指定时间因关机未能执行,下次开机时会不会自动执行
  答案:不会


  如果期望某时间因故未能按时执行,下次开机时无论是否了相应时间点都要执行一次,可使用anacron实现
 课外作业:anacron用法




m20预习笔记整理--linux任务计划

标签:linux任务计划

原文地址:http://yangyouwei.blog.51cto.com/114816/1829349

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!