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

Linux之任务计划

时间:2015-09-06 18:38:11      阅读:369      评论:0      收藏:0      [点我收藏+]

标签:at、任务计划、anacron、crontab、bacth

Linux之任务计划


   在了解linux任务计划之前,先来了解linux的邮件服务,因为任务计划默认会调用mail邮件服务来发送邮件。以下对mail邮件服务,进行初步了解。主要对邮件发送方法,查看邮件等。

   常见邮件应用协议:

      SMTP:(Simple Mail Transmission Protocol)简单邮件传输协议,TCP 25端口,smtps (linux操作系统默认启用smtp服务)

      POP3:(Post Office Protocol)第3版邮局协议,TCP 110端口,pops 

      IMAP4:(Internet Mail Access Protocol)因特网消息访问协议,TCP 143端口,imaps

  Mine/MIME:(Multipurpose Internet Mail Extensions)多用途、多功能互联网邮件扩展:以文本的方式对二进制数据做重新编码,并能够实现以文本协议发送二进制数据。常用编码编码方式:base64.。

    语法:mail [-iInNv][-b<地址>][-c<地址>][-f<邮件文件>][-s<邮件主题>][-u<用户帐号>][收信人地址]

    常见参数选项

        -f:读取指定邮件文件中的邮件

        -s:邮件的主题

  -u<USERNAME>:读取指定用户的邮件


   三种常用格式发信

       1、当前shell当成编辑器来用,编辑完内容后Ctrl+D结束

         mail -s mytest root@localhost 

技术分享

       2、用管道编辑内容发送

         echo "mytest mail mytest2" |mail -s mytest2 root@localhost

技术分享

       3、以文件内容作为邮件内容发信

         mail -s mytest3 root@localhost < /tmp/mytest3.txt 

      

     任务计划可以分两种:一次性任务作业(at命令、batch命令);周期性任务作业(crontab命令、anacron)

     一次性任务作业:at,一种交互式命令,有两种执行模式:交互式,它可以让用户在at>提示符下输入一个或多个命令;批处理式,将任务的命令写入文件中,由at调用

     batch的命令使用与at的区别是,batch不能设定执行的时间,只能由系统自动选择空闲的时间执行,这里不做过多介绍,只是简单了解

     注意:Ctrl+d为提交作业;任务执行的结果默认会以邮件的方式发送给提交者

     语法:at [参数] 时间点

     常见参数选项

         -v:显示任务将被执行的时间

         -c:显示任务的内容

    -q<列队>:指定列队

    -f<文件>:从指定的文件中读取要运行的作业

-t<时间参数>:以时间参数的形式提交要运行的任务

     TIME:时间格式

     hh:mm(小时:分钟)

     midnight(深夜),noon(中午),teatime(饮茶时间,一般是下午4点)

     now+time-units ,now就是当前时间,time-units是时间单位,可以是minutes(分钟)、hours(小时)、days(天)、weeks(星期)22

     

     以下交互式模式,示例:在22:01执行查看/tmp目录信息,显示/etc/fstab自动挂载信息两个任务

技术分享技术分享技术分享

     注:作业有队列的概念,默认情况下,所有作业都在一队下,作业列表是[a-z],使用命令 at –q [a-z]

技术分享

     以下文件模式,示例:在23:00执行文件fileat,fileat查看/tmp目录信息并且显示/etc/fstab自动挂载信息

技术分享


   周期性任务作业

   crond是守护进程:指运行在后台随时监听用户的请求随时响应的进程。

  cron分系统级别和用户级别,系统级别:系统自动执行的,以系统的环境变量(非登陆时shell)去运行该些进程,因此在编写脚本的时候被调用的命令建议写全路径,不然会出现执行脚本的


时候找不到路径的情况。执行结果默认会以邮件发方式发送给root用户,如果不想发邮件可以任务作业重定向至/dev/null(也称黑洞)

   系统cron的文件保存/etc/crontab中,用户crontab在/var/spool/cron/UserName中

技术分享

  语法:crontab –l|-r|-e|-i [username]

  常见参数选项

  -l:显示作业文件的内容

  -i  作业前给提示,常与r并用

  -r  删除作业任务

  -e  编辑作业任务

   管理员加上-u 可以为普通用户指定任务:如crontab –l –u [普通用户]


  以下强调一下上面描述的注意事项:

      (1) 如果不想接收任务执行结果的通知邮件:COMMAND > /dev/null或COMMAND &> /dev/null

      (2) 对于crontab文件来讲,%有特殊功用;如果命令中会出现%, 要记得转义,或者用单引号对其引用

      (3) crontab的PATH变量与用户的变量不完全相同,所以,建议在cron中的任务要使用绝对路径

  下面简要解析crontab中时间格式

  # 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


     第一段:分钟 0—59  

     第二段:小时 0—23  

     第三段:日期 1—31  

     第四段:月份 1—12  

     第五段:星期几,0代表星期日 0—6 


     举一些小例子说明时间表示法:

     1)每个时间都应该使用其可用的有效取值范围内的值;

        2 3 4 * *      //4号3点2分

     2)某时间位上的*表示每

       * 3 4 * *       //4号3点每一分钟都执行

     3)-:连续的时间相邻取值

       15-18 3 4 * *   //4号3点的15分到18分每分执行一次

     4),:离散的时间取值

        10,15,20 3 4 * *   //4号3点的10分,15分,20分各执行一次

     5)/#,表示在指定时间范围内每隔#一次

        */15 3 4 * *      //4号3点每15分钟执行一次

     6)如果我们不……想查看执行的结果呢,可以把输出重定向,如:

       0 */2 * * *   /bin/echo “mytest1” &> /dev/null

    示例:4号3点2分查看/etc/fstab文件

技术分享

    注:anacron和cron 相似的任务调度器,只不过它并不要求系统持续运行,它可以用来运行通常由 cron 运行的每日、每周、和每月的作业;任务被列在配置文件 /etc/anacrontab 中。对于每项任务,anacron 先判定该任务是否已在配置文件的 period 字段中指定的期间内被执行了。如果它在给定期间内还没有被执行,anacron 会等待 delay 字段中指定的分钟数,然后执行command 字段中指定的命令;


练习:

     1、每周一到周六的凌晨3点20分,运行cp命令对/etc/目录进行归档另存,存储位置为/backups/etc-YYYY-MM-DD;

技术分享

     2、每周日凌晨2点30分,运行cp命令对/etc/fstab文件进行备份,存储位置为/backup/fstab-YYYY-MM-DD-hh-mm-ss

技术分享

     3、每天晚上12点,取得/proc/meminfo文件中所有以S或M开头的行,追加至/statistics/meminfo.txt文件中,且每天的消息之前,要加上类似===============分隔线

技术分享

      或者使用

      0 0 * * * /usr/bin/egrep (egrep ‘^(S|M)‘ /proc/meminfo;echo "====================") >> statistics/meminfo.txt


本文出自 “一万小时定律” 博客,请务必保留此出处http://daisywei.blog.51cto.com/7837970/1691864

Linux之任务计划

标签:at、任务计划、anacron、crontab、bacth

原文地址:http://daisywei.blog.51cto.com/7837970/1691864

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