linux计划任务

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

 

linux上的任务计划    
   
    任务计划:    
        在将来时间点一次性执行某任务:at batch    
        周期性执行某任务:crontab    
   
    电子邮件服务:    
        smtp:简单邮件传输协议 simple mail transmission protocol    
            /var/spool/mail/USERNAME(存放某个用户邮件的文件)    
            本地邮件服务(25端口)默认会开启,发送    
        pop3:邮局协议    
        imap4:互联网访问协议,从收取网络上收取邮件    
       
        mail命令:    
       
            默认进入交换式邮件收发接口(打开邮件箱),输入邮件编号查看邮件内容    
            
            -s “”  双引号内生邮件主题,邮件正文须要交互式提供    
            mail -s “hi”  root@local    
           
            输入重定向能够将文件内容做为邮件内容发送    
            mail -s “hi”  root@local <    /PATH/TO/SOMEFILE    
           
            利用管道为邮件提供内容    
            COMMAND | mail -s “hi”  root@local    
           
               
    at命令:    
   
        承载将来某时间运行的某做业:    
        支持使用做业队列:    
            默认为a队列    
            做业队列只能为a,b单个字符    
           
        在mail交互式接口下ctrl+d提交做业    
       
        at 【option】。。。TIME    
        TIME:    
            (1)绝对时间:    
                HH:MM    
                MMDD[CC]YY,MM/DD/[CC]/YY,    
                指下一个时间点到来的时间执行    
                tomorrow 标注明天某时间点    
            (2)相对时间    
                now+#UNIT    
                    minute,hour,day,week    
            (3)模糊时间    
                midnight 00:00    
                noon 12:00    
                teatime 16:00    
               
        经常使用选项:    
            -q QUEUE: 指定at做业的队列名    
            -f /PATH/TO/SOMEFILE 从指定的路径计划执行文件    
            -l 查看指定的做业队列中的等待运行的做业列表    
                 at -q b -l    
            -c 查看待运行做业的    
            -d:删除指定做业至关于atrm    
           
        在at做业中提交中的命令建议使用绝对路径    
       
        batch    
            执行时间由系统自行选择在资源较为空闲时运行指定的任务    
           
           
        crontab:周期性任务计划    
           
            守护进程:crond 系统启动后便一直运行在后台,随时监控着任务表上任务的执行时间点是否到了    
           
            周期性任务有两类:    
                (1)系统cron任务:没有默认运行用户身份,因此须要额外指定运行者 存在于/etc/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   
                    7个字段:    
                        前5个字段:时间点    
                        user-name: 以哪一个用户的身份运行任务    
                        command to be executed: 要运行任务           
               
               
                (2)用户cron任务:由某个用户提交,默认    
                    存在于/var/spool/cron/USERNAME    
                     文件中的某些命令多是带有机密性的,不容许用户查看    
                     不建议使用 vim命令查看    
                     建议使用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    
                    # |  |  |  |  |    
                    # *  *  *  *  *  command to be executed   
                    5个时间点:    
                        分钟:有效取值范围0-59;    
                        小时:0-23    
                        日:1-31    
                        月:1-12    
                        周几:0-7    
                        注意:几月几号与周几,不建议同时使用;    
                    时间表示法:    
                        *: 对应时间点有效取值范围内的每一个时间点;    
                        -: 一个特定连续时间范围, 3-7    
                        ,:一个离散的时间点, 3,5,7    
                        /#:有效时间范围内的每多少时间;用于指定频率;    
                                1-30/4, */4    
                        5 */3 * * * /bin/echo "howdy"    
                        5 7 * * 1-5 /bin/echo "howdy"linux

                    
        crontab命令:    
                        crontab [-u user] [-l | -r | -e]    
                            -u user: 不是管理本身的cron任务,而是指定的目标用户的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中的任务要使用绝对路径            
           ios

 

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

 

20 3 * * 1-6    /bin/cp -Rf /etc/*    /backup/etc-'date +$F'shell

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

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

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

 

might /bin/echo '=======' >> /statistios/meminfo.txt && /bin/egrep '^[S|M]'  /proc/meminfo  >> /statistios/meminfo.txt网络