、总结Linux系统上的任务计划(at、crontab)的详细使用方法;

Linux上的任务计划:

   任务计划分为:

      在未来时间点一次性执行某任务,实现目标命令:at batch

      在未来时间内周期性执行某任务,crontab


电子邮件服务:

  协议:SMTP:简单邮件传输协议  

              /var/spool/mail/USERNAME

              登录用户的默认邮件目录

        POP3:邮局协议

        imap4:互联网访问协议


mail命令的使用:

   centos7下为mailx;

发送邮件例:

#mail root@localhost    \\-s 可代替邮件主题subject,直接回车输入


正文;

Subject:Hi   主题

How are you   正文

How old you   正文

Ctrl+D        邮件发送

发送给localhost   本地主机;

#mail    查看邮件信息

& number  查看某封邮件


输入重定向发送邮件:

mail -s "fstab" root@localhost < /etc/fstab   \\输入重定向<;

cat /etc/fstab | mail -s 'fstab.new' root @localhost


MUA:mail命令的简单使用


mail命令:

   mail:进入交互式收发邮件接口;

   使用mail -s 指明subject 

   mail -s 

   

   

at命令的使用:

    一次性执行某任务;

    Ctrl+d 提交作业

    承载未来时间点运行的某作业:

    支持使用作业队列:

        默认为a队列;


at  [option]... TIME

    TIME:

       (1)绝对时间   HH:MM;tomorrow;

       (2)相对时间   now+时间单位   minute  hour;

       (3)模糊时间   midnight   noon   teatime   

    

   at -l 

   at now+3minute

常用选项:

  -q:  at作业队列;实现相关队列的管理;

  -f:  读取文件中的作业命令;可编辑一个文件后使用文件名进行读取


作业,例:at -f at.list 15:15-->读取at.list文件中的命令在15:15分


进行作业执行;

  -l:  查看作业队列待运行的作业列表=atq命令

  -c:  查看待运行作业的内容;

  -d: 删除指定作业;相当于atrm

  


batch:相似与at,但是不需要指定时间,时间由系统自行选择在资源较


为空闲时,运行指定的任务。


crontab:周期性任务计划;

    守护进程:crond,在后台出于运行状态,进行监控。

crontab  -e 编辑任务,打开当前shell回话的默认编辑器来编辑cron任


务表;

crontab  -l 查看任务  list

         -u user:不是管理自己的cron任务,而是指定的目标用户,只


有管理员可操作,不指定用户就代表管理自己的任务。

         -r 移除所有任务

         

    周期性任务有两类:

     1.系统cron任务:没有默认运行用户身份,需要额外指定运行者;

      在/etc/crontab   vim打开进行编辑操作;


      七个字段组成: 前5个字段来定义时间点

                    user-name:以哪个用户的身份运行任务:

                    command to be executed:要运行的任务

     2.用户cron任务:由某个用户所提交,默认以提交者的身份运行,


无需额外指定运行者;

     在/var/spool/cron/USERNAME    vim命令打开编辑;

 注: 普通用户不建议拥有此权限查看这个文件; 

     建议用crontab命令让用户管理此文件;

        前五个为时间点,最后一个为运行任务本身

       5个时间点:

             分钟:有效范围为0-59minute

             小时:0-23:

             日  :1-31,不是每个月都有31号的。

             月  :1-12,

             周几:0-7,0和7都表示周日; 

        注意:几月几号与周几,不建议同时使用;

           例:6 * * * * 表示:每月每天每小时的第六分钟

           时间点表示法:

               *:对应时间点有效取值范围内的每个时间点

               用数字表示既定时间点;

               -:一个特定的连续时间范围,3-7=3到7分钟

               ,: 一个离散的时间点,3,5,7=第三和第五和第七分钟;

               /#:表示有效时间范围内每多少时间;用于指定频率;


1-30/4=每一个小时的1-30分钟每4分钟运行一次;*/4=每4小时运行一次


,*表示小时的话;

              5 */3 * * * /bin/echo "howdy" 每三个小时运行echo查


看howdy;要给既定的分钟才可实现,不然意义不同为三小时以后而不是


每三小时;

    

思考:

  如果想实现每8分钟运行一次某任务

  如果想实现每10秒钟运行一次某任务

了解sleep命令;


cron补充性的工具:anacron

在cron一段时间内没有运行规定时间点执行任务的时候,立即执行此任务


一次。

(1)如何禁止crontab运行发送邮件给管理员;

      COMMAND > /dev/null

      COMMAND &> /dev/null

(2)对于crontab文件来讲:%有特殊功能,如果命令中出现%。要记得转


义,或者用单引号对其引用。

(3)crontab的PATH变量与用户的变量不完全相同,所以,建议在cron中


的任务要使用绝对路径。 

              

题目:

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

[root@localhost ~]#mkdir /backups/
[root@localhost ~]#contab -e
20 3 * * */1-6 /bin/cp /etc/ /backup/etc-$( date +\%Y-\%m-\%d )

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

[root@localhost ~]#mkdir /backup/fstab
[root@localhost ~]#crontab -e 
30 2 * * */0  /bin/cp /etc/fstab /backup/fstab-$( date +\%Y-\%m-\%d-\%H-\%M-\%S )

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

[root@localhost ~]#mkdir /statistics/meminfo.txt
[root@localhost ~]#crontab -e
0 0 * * * /bin/echo "=================" >> statistics/meminfo.txt && /usr/bin/egrep '^(S|M)' /proc/meminfo >> statistics/meminfo.txt