Linux的任务计划

    任务计划:

        在未来的时间点一次性执行任务:at,batch

        周期性执行任务:crontab

    电子邮件服务

        smtp

            /var/spool/mail/USERNAME

        pop3

        imap4

        mail命令:

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

                mail -s "subject" username@hostname

            mail -s "subject" username@hostname < /PATH/FROM/SOMEFILE

            COMMAND | mail -s  "subject" username@hostname    Linux的任务计划_Linux的任务计划

Linux的任务计划_Linux的任务计划_02Linux的任务计划_Linux的任务计划_03

Linux的任务计划_Linux的任务计划_04

   

     at命令

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

        支持使用作业队列:默认为A队列 

        ctrl+d----提交作业

        at [OPTION]....time

            time:

               (1)绝对时间

                  HH:MM

                  MMDDYY,MM/DD/YY,DD.MM.YY,YY-MM-DD

                  tomorrow

                (2)相对时间

                   now+#UNIT

                        minute,hour,day,week

                (3)模糊时间

                   midnight

                   noon

                   teatime

Linux的任务计划_Linux的任务计划_05

    常用选项:

        -q Queue:at作业队列:

        -f /PATH/FROM/SOMEFILES:从指定的文件读取进行的作业

        -l:查看作业队列中的当前待运行的作业列表,相当于atq命令

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

        -d:删除指定作业atrm

Linux的任务计划_Linux的任务计划_06

Linux的任务计划_Linux的任务计划_07

Linux的任务计划_Linux的任务计划_08Linux的任务计划_Linux的任务计划_09


        crontab周期性任务计划

           守护进程:crond 

            周期性任务有两类:

                (1)系统crond任务,没有默认运行用户身份,所以要额外指定运行者;

                     /etc/crontab------ vim命令修改

Linux的任务计划_Linux的任务计划_10

                7个字段

                    有5个字段:时间点

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

                    command to be executed:运行的任务

               (2)用户crond任务,有某个用户来提交,默认就以提交者的身份运行,所以不需要额外指定运行者  

                     /var/spool/cron/USERNAME

                      vim命令:不建议

                     crontab命令,建议

Linux的任务计划_Linux的任务计划_11

Linux的任务计划_Linux的任务计划_10

                    6个字段

                        有5个字段:时间点

                            时间点:

                                分钟:0-59

                                小时:0-23

                                日  :1-31

                                月  :1-12

                                周  :0-7 (0或者7代表星期天)  

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

                        command to be executed:运行的任务

                        例如:

                            6 * * * *

                        说明:

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

                            -:一个特定的连续范围:3-7

                            ,:一个离散的时间点 3,5,7

                            /#:有效时间范围内每多少时间,用于指定频率1-30/4,*/4

Linux的任务计划_Linux的任务计划_13

Linux的任务计划_Linux的任务计划_14

                                             

                crontab命令:

                    crontab [-u user] [ -l| -r | -e ] 

                       -u user:管理目标用户的crond,仅root才有权限,默认管理自己的。

                       -l:list,列出任务

                       -r:remove,移除所有任务

                       -e:edit,编辑

Linux的任务计划_Linux的任务计划_15

                补充工具:anacron-----检查任务,如没有执行,立马执行。

                注意:

                    (1)如果不想接受任务执行结果通知邮件;

                        COMMAND > /dev/null

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

                   (3)crontab的PATH的变量与用户的变量不完全相同,建议在crontab要使用绝对路径。包括脚本里面也要使用绝对路径。

                        /root/bin/a.sh


练习:

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

Linux的任务计划_Linux的任务计划_16

Linux的任务计划_Linux的任务计划_17

Linux的任务计划_Linux的任务计划_18


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

Linux的任务计划_Linux的任务计划_19

Linux的任务计划_Linux的任务计划_20

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

Linux的任务计划_Linux的任务计划_21

Linux的任务计划_Linux的任务计划_22