linux任务计划

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

 周期性执行某个入伍:crontab  


 1.1电子邮件服务

    smtp: simple mail transmission protocol 简单的邮件传输协议

     邮件保存出:/var/spool/mail/USERNAME

    

    pop3: post office protocol  邮局协议的第三个版本(离线协议的标准)

     imap4: internet mail access protocol。

    

 1.2 mail 命令

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

    发送邮件的三种方式 ctrl +d 提交邮件

    1: mail -s test root@localhost 发送一份邮件标题为test的邮件给root用户

     mail root@localhost 可一直接输入标题和内容并发送root用户。


    2:echo "你好” | mail -s test root@localhost  发送一份邮件标题为test 邮件内容为“你好” 发送给root用户


    3:mail -s test root@localhost

第一种

wKiom1Xu9nfjxSqeAADvuLUjqwE685.jpg


wKiom1Xu9uTDGiN3AADabZtKy6w495.jpg


第二种

wKioL1Xu-ZCQWOd3AAD8Wpl8BBo959.jpg


第三种

wKiom1Xu-MKxqHFvAALqNhx8Tbs861.jpg




 1.3 at 命令 

    承载着未来时间运行的某作业;支持使用作业队列,默认为a队列

         ctrl+d 提交任务 

         at [option] ...TIME

            常用选项:

            -q QUEUE :at 作业队列。

            -f /PATH/FROM/SOMEFILE:从指定文件中读取要运行的作业;

            -l:查看作业队列中的等运行查看作业列表;相当于使用atq命令。

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

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

  

        TIME :


         (1)绝对时间 HH:MM 例如MMDDYY(月,日,年),MM/DD/YY,DD.MM.YY ,YY_MM_DD

         (2)相对时间 now+#UNIT ,UNIT:单位时间是minute(分钟),hour(时),day(天),week(周)

        (3)模糊时间: midnight,noon,teatime

    

 1.4 batch:由系统自行选择在资源较为空闲时运行指定的任务


 1.5   crontab:周期性任务计划 。

    守护进程crond ,一旦关闭,那么crontab的周期任务将不能生效。

    系统cron 任务:没有默认运行用户身份,所需要的额外运行指定者。/etc/crontab.

    vim 命令

    # Example of job definition:

# .---------------- minute (0 - 59)

# |  .------------- hour (0 - 23)

# |  |  .---------- day of month (1 - 31)

# |  |  |  .------- month (1 - 12) OR 

# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat

# |  |  |  |  |

# *  *  *  *  * user-name  command to be     executed

    一共7个字段 前五个字段分别表达式 分,时,天,月,星期。

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

    command to be executed :要运行的任务。


 1.6 用户cron任务:


    由某个用户所提交,默认就以提交者的身份运行,所以无需额外指定运行者。


# 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

# |  |  |  |  |

# *  *  *  *  *  command to be executed


    5个时间点:

        分钟:有效取值范围0-59;

        小时:0-23

        日:1-31

        月:1-12

        周几:0-7


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

        时间表示法

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

        -:一个特定连续时间范围,3-7

        ,:一个离散时间点。

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

            例如:5 /3 * * *  echo "hello" 表示每隔三个小时的5分钟输出一次hello

                 

    1.7crontab 命令

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


            -u: user :指定目标用户的cron任务。仅root拥有管理其他用户cron任务的权限;默认管理自己的;

             -l:list列出任务。

            -r:remove 移除任务。

            -e:edit ,编辑,打开当前shell会话的默认编辑器来编辑cron任务表。

补充性的工具:anacron:


    注意:

    (1) 如果不想接收任务执行结果的通知邮件:

    COMMAND > /dev/null

            COMMAND &> /dev/null

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


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



home work

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

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


    20 3 * * 1-6 /bin/tar -zcvf  /backups/etc-$(date +%Y-%m-%d) /etc/


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


    30 2 * * 0 /bin/cp /etc/fstab /backup/fstab-$(date +%Y--%m-%d-%H-%M-%S)


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