Linux任务计划管理

1.基础概念linux

Linux能够经过atbatch来设定任务执行计划,让任务在指定时间点运行,运行的结果将会以邮件的形式告知给设定运行计划的用户。若是须要周期性运行某任务则要用到cron命令服务器

 

2.相关命令ide

2.1mailx工具

用途:mailxlinux的内置邮箱处理工具,能够用来查看发送邮件。通常电子邮件服务包含以下三种协议smtp(简单邮件传输协议,用于传送邮件)、pop3(邮局协议,用来收邮件)、imap(因特网邮件传输协议,用来收邮件)。Imap邮件协议目前在企业中使用比较普遍,他能与服务器完成双向同步,比较适合多客户端操做。spa

邮件查看:orm

[root@localhost ~]# mailx                        ####输入mailx命令队列

Heirloom Mail version 12.5 7/5/10.  Type ? for help.进程

"/var/spool/mail/root": 4 messagescrontab

>   1 user@localhost.local  Thu Mar  9 15:43  90/2906  "[abrt] full crash report"             #### ip

            2 root                  Sat Jun  3 09:40  49/1208  "Output from your job        3"   ####

            3 root                  Sat Jun  3 15:34  16/542   "Output from your job        4"   ####

           4 root                  Sat Jun  3 20:40  19/623   "Hi                            ####

           &  

?注释:

           #(数字)+ 回车:查看指定序号的邮件

           delete  #(数字)+ 回车:删除指定序号的邮件

           l + 回车:列出能够操做的全部命令

           q + 回车:退出mailx命令。

发送邮件:

mailx [-s 'SUBJECT'] username[@hostname]

邮件正文的生成:

                    (1) 直接给出,Ctrl+d;

                    (2) 输入重定向;

                    (3) 经过管道;

                             echo -e "How are you?\nHow old are you?" | mail

 

2.2 at

用途:用于管理计划做业任务。

格式:at [ option ] TIME

           TIME:

                    HH:MM [ YYYY-mm-dd ] :指定具体几点几分执行,还能够加上年月日

                    noon:指定中午执行

                    midinight:午夜12点执行

                    teatime:下午茶时间执行,通常在下午5

                    now + #minutes,hours,days,weeks:如今时间为基点,多少分、小时、天、周后执行

经常使用选项:

           -q QUEUE:使用指定的伫列(Queue)来储存,at 的资料是存放在所谓的 queue 中,使用者能够同时使用多个 queue

           -l :列出指定队列中等待运行的做业,至关于atq

           -d:删除指定做业,至关于atrm

           -c:查看具体的做业任务

           -f /path/form/somefile :从指定文件中读取任务

 

2.3 batch

用途:batch实际上也是调用at,让系统自动选择空闲时间去执行此处指定的任务;

2.4 cron

功能:管理周期性任务。

简介:

相关的程序包:

                    croniecron主程序包,提供了crond守护进程及相关辅助工具,若是要运行cron先使用systemctl status crondCentOS 7/service crond statusCentOS 6)命令确认crond是否运行。

                    cronie-anacroncronie的补充程序,用于监控cronie任务执行的状况,若是cronie程序设置的任务在设定的时间点未执行,则anacron会在随后启动一次此任务。

                    crontabs:包含CentOS提供的系统维护任务

系统cron任务:

经过编辑 /etc/crontab 文件来实现,编辑/etc/crontab文件这种方式仅限于root用户使用。

                             # 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    

示例:晚上9点10分备份一次 /etc  到/root/bakup下。

         # 10 21 * * * user-name cp -a /etc/root/bakup/

时间表示方法:

(1)   特定值:给定有效时间点,例如上述示例,指定晚上9点10分,经过10 21 * * * 来表示

(2)   * :给定时间点上全部有效值,好比将*写在分钟里则表示每分钟

(3)   离散取值 ,:指定某几个不连续的时间点例如“0 0 * * 1,3,5 ”则表示每周1、3、五的00:00执行做业

(4)   连续取值 -:指定一个取值范围,例如“0 1-3 * * *”则表示在天天1点、2点、3点执行做业。

(5)   定义步长 / :在指定的范围内定义步长,好比“*/10 * * * *”则表示每10分钟执行一次做业。即10分、20分、30分、40分、50分、60分各执行一次做业。

 

用户cron任务:

    用户使用crontab命令来定义周期性计划任务,每一个用户都有一个专用的文件放置于/var/spool/cron/USERNAME,可是除root外的其余用户没有查看、编辑此文件的权限,只能经过crontab命令将计划任务按照规定格式写入到此文件中。

    格式:crontab [ -u user ] [ -l | -r | -e ] [ -i ]

    参数:

        -l :列出当前用户全部的任务

        -e :编辑任务

        -r :移除全部任务

        -i :同-r一块儿使用,以交互式模式让用户有选择的移除指定任务

 

        -u user :仅root用户可运行,root用户可代其余用户管理cron任务

 

sleep命令:

    用途:指定休眠时间,配合crontab可实现非秒级或不能被整除的时间表示

    格式:sleep NUMBER [ SUFFIX ]

        SUFFIX:

            s :秒,若是不填写suffix,默认都是秒

            m :分

            h:小时

            d:天

 

    注意点:

(1)   因为cron执行任务时使用的是本身的环境变量,因此建议使用命令的绝对路径。

(2)   因为运行结果都会以邮件通知相关用户,COMMAND > /dev/null表示只将执行错误的信息邮件通知用户,COMMAND &> /dev/null 表示不经过邮件通知相关用户执行结果

(3)   对于cron任务来讲,%有特殊用途,因此命令中如果要使用%必须使用转义符\,不过若是把%放置于单引号中可不转义

 

示例:

(1)   在/root目录下有一个文件1,每10秒将date执行结果追加到文件1中。

[root@localhost cron]# crontab -e

no crontab for root - using an empty one

* * * * * sleep 10;date>>/root/1

* * * * * sleep 20;date>>/root/1

* * * * * sleep 30;date>>/root/1

* * * * * sleep 40;date>>/root/1

* * * * * sleep 50;date>>/root/1

~                                                                                                     

~                                                                                                     

~                                                                                                                                                                                                          

"/tmp/crontab.rZAyFQ" 5L, 165C written

crontab: installing new crontab

[root@localhost ~]# cat 1

Tue Jun  6 16:03:12 CST 2017

Tue Jun  6 16:03:22 CST 2017

Tue Jun  6 16:03:32 CST 2017

Tue Jun  6 16:03:42 CST 2017

Tue Jun  6 16:03:52 CST 2017

Tue Jun  6 16:04:11 CST 2017

Tue Jun  6 16:04:21 CST 2017

Tue Jun  6 16:04:31 CST 2017

Tue Jun  6 16:04:41 CST 2017

Tue Jun  6 16:04:51 CST 2017

Tue Jun  6 16:05:11 CST 2017

(2)   每4小时备份一次/etc目录至/root/backup目录中,保存的文件名称格式为“etc-yyyy-mm-dd-HH.tar.xz”。

* */4 * * * cp -a /etc /root/backup/etc;tar -Jcf /root/backup/etc-`date '+%Y-%m-%d-%H'`.tar.xz /root/ba

ckup/etc

(3)   每周2, 4, 7备份/var/log/messages文件至/logs目录中,文件名形如“messages-yyyymmdd”

* * * * 0,2,4 cp -a /var/log/messages /logs/messages-`date '+%Y%m%d'`

(4)   每两小时取出当前系统/proc/meminfo文件中以S或M开头的信息追加至/tmp/meminfo.txt文件中

* */2 * * * cat /proc/meminfo|grep ^[SM].* >> /tmp/meminfo.txt

(5)   工做日时间内,每小执行一次“ip addr show”命令

* */1 * * 1-5 ip addr show

相关文章
相关标签/搜索