Linux任务计划,周期性任务执行详解

Linux任务计划,周期性任务执行

概述

本章将为大家介绍一些任务计划和周期性任务计划执行相关内容

任务计划的分类主要有由两种
   未来的某时间点执行一次某任务:at,batch
   周期性运行某任务:crontab

具体分为三个方面来说明:

   1、at计划任务

   2、cron计划任务

   3、mail命令

   4、计划任务作业及练习

第一章 at,batch计划任务

at是由atd服务提供的,在Centos6智商可以使用service atd start 来启动服务;在Centos7上要使用systemctl start atd.service来启动服务

at的使用方法:at[OPTION]...TIME
   TIME:
       HH:MM[YYYY-mm-dd]
       noon,midnight,teatime
       tomorrow
       now+#
           UNIT:minutes,hours,days,or weeks
at的作业

-l:at -l相当于atd命令,列出目前系统上面的所有当前用户的at队列;

-d:at -d相当于atrm命令,可以取消一个在at排程中的工作;
-v:可以使用较明显的时间格式列出at中的工作列表;
-f:把at要执行的所有任务放置于文件中,让at读取此文件作为要执行的任务;
   如:at -f /PATH/TO/SOMEFILE TIME
-q QUEUE:指明队列;
-c:查看指定作业的具体内容;如下图

blob.png

注意:作业执行结果是以邮件发送给提交作业的用户

batch命令:
   batch会让系统自行选择在系统资源较空闲的时间去执行指定的任务;
   (不用指定时间,所以这里就不多加说明)

第二章 周期性任务计划:cron

服务程序:
   cronle:主程序包,提供了crond守护进程及相关辅助工具;
确保crond守护进程(daemon)处于运行状态
   Centos6中可以使用service crond start来启动crond服务;
   Centos7可以使用systemctl start crond.service来启动crond服务;
向crond提交作业的方式不同于at,它需要使用专用的配置文件,此文件有固定格式,不建议使用文本编辑器直接编辑此文件,要使用crontab命令;
cron任务有两类:系统cron和用户cron;
   系统cron任务:主要用于实现系统自身的维护;
       手动编辑:/etc/crontab文件

[root@localhost ~]# >>cat /etc/crontab
SHELL=/bin/bash   #使用的shell
PATH=/sbin:/bin:/usr/sbin:/usr/bin      #到哪些文件夹寻找我们使用的到的命令
MAILTO=root #运行之后邮件发送给root用户

# For details see man 4 crontabs

# 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
注意:
   (1)每一行定义一个周期性任务;
   *  *  *  *  *: 定义周期性时间
   user-name:  运行任务的用户身份
   command to be executed:要执行的任务
   (2)此处的环境变量不同于用户登录后获得的系统变量,因此,建议命令使用绝对路径,或者自定义PATH环境变量;
   (3)执行结果邮件发送给MAILTO指定的用户

blob.png

用户cron任务: 
命令:crontab命令 
用户cron的配置格式:/var/spool/cron/USERNAME

SHELL=/bin/bash   #使用的shell
PATH=/sbin:/bin:/usr/sbin:/usr/bin      #到哪些文件夹寻找我们使用的到的命令
MAILTO=USERNAME #运行之后邮件发送给root用户

# For details see man 4 crontabs

# 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
注意:
   (1)每行定义一个cron任务,共6个字段
   (2)此处的环境变量不同于用户登录后获得的系统变量,因此,建议命令使用绝对路径,或者自定义PATH环境变量;
   (3)执行结果邮件发送给当前用户

时间表示法:
   (1)特定值;
       给定时间点有效取值范围内的值;
           注意:day of week和day of month一般不同时使用;
   (2)*
       给定时间点上有效取值范围内的所有值;表"每..."
   (3)离散取值:
       在时间点上使用逗号分隔的多个值;
       #,#,#
   (4)连续取值:-
       在时间点上使用-连接开头和结束
           #-#
   (5)在指定时间点上,定义步长;
       /#: #即步长;
       注意:
           (1)指定的时间点不能被步长整除时,其意义将不复存在;
           (2)最小时间单位为"分钟",想完成"秒"级任务,得需要额外借助与其他机制;
           定义成每分钟任务:而在利用脚本实现在每分钟之内,循环执行多次;

   示例:
       (1)3 * * * *:每小时执行执行一次;每小时的第3分钟;
       (2)3 4 * * 5:每周执行一次;每周五的43分;
       (3)5 6 7 * *:每月执行一次;每月的7号的65分;
       (4)7 8 9 10 *:每年执行一次;每年的10987
       (5)9 8 * * 3,7:每周三和周日;每周三和周日的83分执行一次
       (6)0 8,20 * * 3,7:每周三和周日的8点和20点执行一次
       (7)0 9-18 * * 1-5:每周一到周五的9点到18点每小时执行一次
       (8)*/5 * * * *:每5分钟执行一次任务;
       (9)*/7

crontab命令:
   crontab [-u user] [-l | -r | -e] [-i]
       -e:编辑任务;
       -l:列出所有任务;
       -r:移除所有任务;即删除/var/spool/cron/USERNAME文件;
       -i:在使用-r选项移除所有任务时提示用户确认;
       -u user:root用户可为指定用户管理cron任务


注意:运行结果以邮件通知给当前用户;如果拒绝接受邮件;
   (1)COMMAND > /dev/null
   (2)COMMAND &> /dev/null
注意:定义COMMAND时,如果命令需要用到%,需要对其转义;但放置于单引号中的%不用转义亦可;  

   如果某任务在指定的时间因关机未能执行,下次开机是不会自动执行,如果期望他能够继续自动执行;可使用anacron实现;

第三章 mail命令

mail命令:mailx -send and recelve Internet mail
   MUA:Mail User Agent,用户收发邮件的工具程序;
   mailx [-s 'SUBJECT'] username[@hostname]
       邮件正文的生成:
           (1)交互式的输入;单独成行可以表示正文结束;Ctrl+d提交亦可;
           (2)通过输入重定向;
           (3)通过管道;

第四章 计划任务作业及练习

1、每天的2点和12点整,将/etc备份至/testdir/backup目录中,保存的文件名称格式为“etcbak-yyyy-mm-dd-HH.tar.xz”

blob.png

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

blob.png

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

blob.png

4、工作日时间,每10分钟执行一次磁盘空间检查,一旦发现任何分区利用率高于80%,就执行wall警报

blob.png

原创文章,作者:Kartik,如若转载,请注明出处:http://www.178linux.com/49539

(0)
KartikKartik
上一篇 2016-09-27
下一篇 2016-09-27

相关推荐

  • http协议(2.2&2.4)RPM搭建配置

    http协议(2.2&2.4)RPM搭建配置 httpd的程序环境: 主程序文件:/usr/sbin/httpd CentOS6系列(默认httpd2.2) 1)配置文件: /etc/httpd/conf/httpd.conf、  /etc/httpd/conf.d/*.conf 2)服务脚本: /etc/rc.d/init.d/…

    Linux干货 2016-10-17
  • yum命令用法及源码的编译

     一:yum 何为yum? yum是rpm的前端程序,可解决软件包相关依赖性,可在多个库之间定位软件包,是up2date 的替代工具。 1.命令格式:     yum [options] [command] [package …] 2.yum客户端配置文件: 公共配置文件:/etc/yum.conf   &…

    Linux干货 2017-08-19
  • N25-第三周博客作业

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 [root@node1 ~]# who | cut -d" " -f1 | uniq (unknown) root 2、取出最后登录到当前系统的用户的相关信息…

    Linux干货 2016-12-17
  • vim

    VIM常用操作命令 模式转换 1、ESC键:编辑模式 --> 一般模式;2、从一般模式 --> 编辑模式 i:在光标所在处的前方转换为编辑模式 a:在光标所在处的后方转换为编辑模式 o:在光标所在行的下方新建一个空行并转换为编辑模式 I:在光标所在行的行首输入 A:在光标所在行的行尾输入 O:在光标所在行的上方新建一个空白行 3、一般模式 --> 末行模式:…

    Linux干货 2017-04-06
  • Linux-文件基本权限及特殊权限详解

    Linux文件基本权限及特殊权限详解 背景 Linux文件基本权限和特殊权限对于初学者很少烦恼,各种无法理解,所以在学到这一节时,将自己学到的以及自己的理解写出来以检查自己对这个部分的掌握情况。 什么是权限 在Linux里一切皆文件,所谓的权限就是用户对文件(目录也是以个文件)的操作范围,对文件的操作包括读、写和执行,用户对文件有不同的权限就能做相应的操作。…

    Linux干货 2017-07-22
  • 抓包获取QQ好友IP地址

    作者:网海过客 原文连接:https://www.chinasa.net/archives/326.html 原理:通过抓包软件,抓取QQ进程,向QQ好向发送UDP数据包,获取QQ好友IP地址 抓包软件:科来网络分析系统 步骤: 1、打开抓包软件,选择网卡,本地进程分析。 2、向QQ好友发起语音通话 3、在抓包软件里,找到QQ进程,数据包,过滤UDP协议,在…

    Linux干货 2017-06-30