天天看点

Linux之crontab与at

温故:

         物理卷(PV):我们实际的分区(或磁盘)需要通过gdisk命令调整系统标识符(system id)使之成为8e(LVM的标识符),此时还要使用物理卷创建命令(pvcreate)将它转化为LVM底层可认的物理卷(PV),之后才能将这些PV加以使用。

        卷组(VG):所谓的VG就是将所有的PV组合而成的大磁盘

        物理扩展块(PE): LVM默认使用4MB的PE数据块,但是LVM的LV在32位的系统上最多仅能含有65534个PE,因此默认的LVM的LV会由4MB*65534/1024=256GB,这个PE是整个LVM中最小的存储单位,也就是说我们写入的数据其实都是通过写入PE来完成的,你就可以将之理解为文件系统里面的block.因此PE的调整就会间接的影响到LVM的容量。

       逻辑卷(LV):最终的VG还会被切成LV,这个LV就是可以被格式化使用的类似分区的东西。要注意的是LV是不可以随便指定大小的,上面我也已经说了,LV的大小虽然不能随便指定,那么就要考虑如何改变当前这个LV内的PE总数了。

        如果对这部分内容感兴趣,请看我的《​​​Linux之逻辑卷管理器​​》

知新:

        今天要说的内容主要是关于计划任务的,关于计划任务的概念就不去说了,你只要知道它分为两种情况,其一就是在一个在固定时间点做计划好的工作,类似于Oracle数据库的JOB,比如你可以设置这个计划任务每天12点发一封邮件,设置它每年的一月一日重启一次设备;其二就是临时性地定制一项任务,比如设置LINUX在今天中午12点提醒自己可以吃午餐了,前者是例行性的,周而复始,后者是临时性的,具备突发性。这就是计划任务的两种不同表现。

        上面说了计划任务的种类,下面就来说一说如何实现计划任务,要想实现这两个功能就需要使用at和crontab这两个好东西。接下来我会对这两个“好东西”进行讲解

        at: at是个可以处理仅执行一次就结束的命令,不过要执行at的时候,需要有atd这个服务,不然就会失效,要注意的是有些版本的Linux默认没有开启这个服务,不过Centos都是默认开启的。

        crontab: crontab这个命令所设置的任务将会一直循环下去,循环的时间可以是分钟、小时、每月、每年等等,crontab除了可以使用命令执行外,还可以编辑/etc/crontab来支持。和at命令一样,它也需要一个服务来支持其运行,这个服务就是crond.

一、at命令的使用

        首先我们先来谈谈单一计划任务的运行,也就是at这个命令的执行过程,这里有一点是我要事先说明的,由于我的系统里面没有atd这个服务,所以这一次我无法给大家进行试验,就只能和大家谈一谈理论知识。既然是计划任务,就会有产生任务的方式,at的运行方式就是使用at这个命令来产生所要运行的任务,并将这个任务以文本文件的方式写入/var/spool/at这个目录内,该任务便能等待atd这个服务的使用与执行了。

        但是也不是所有的用户都可以使用at,毕竟存在安全问题。因此就需要一些限制对at给予管控,关于这一点可以通过两个文件夹来确认,第一个文件是/etc/at.allow,注意到这个文件中的“allow”了吗,这个文件的意义就是写在这个文件中的用户才能使用at,没有写在这个文件中的用户则不能使用at.第二个文件是/etc/at.deny,如果之前查看的/etc/at.allow文件不存在,就继续看/etc/at.deny这个文件,写在这个文件中的用户则不能使用at。如果这两个文件都不存在,那么就只有root用户可以使用at。

关于这个at的命令我真的是不了解,而且我的系统也不支持,实在抱歉,还是和大家聊一聊另一个命令吧。

二、crontab命令的使用

        关于对计划任务的限制,不单单只是限制了at命令,对于crontab这个命令同样也有着类似的限制,同样有两个文件,分别是/etc/cron.allow和/etc/cron.deny,而且他们的限制与at是一样的,写在前者中的用户可以使用at,写在后者之中的用户不可以使用at,这个时候你可能会有一个的疑惑,如果这两个文件同时有一个相同的用户该如何判定呢,关于这一点早有考虑,这两个文件其实是存在优先级的,前者优先级高于后者,这两个文件只能选择一个来限制,个人建议两个文件只保留一个即可。一般来说,系统里默认保留的都是后者,这个时候你就可以将不能执行at的 用户写进去。

        当用户使用crontab这个命令来建立计划任务的时候,该项任务就会被记录到/var/spool/cron中,而是以账号来作为判断依据的。举例来说用户test使用crontab之后就会形成一个新的文件/var/spool/cron/test.但是这里有一点是要注意的,尽可能不要使用vi去编辑这个文件,因为你极有可能因为输入法错误导致这个文件不可以使用。

接下来咱们就来聊一聊crontab这个命令的使用吧。

Linux之crontab与at

         我这个人比较懒,实在是懒得写,所以就在书上拍了一张照片,大家将就着看。默认的情况下,只要当前的用户不在/etc/cron.deny文件中,那么就可以直接执行crontab -e去创建自己的任务了。

每一项任务都具有6个字段,这6个字段的意义分别是:

minute: 区间为 0 – 59

hour: 区间为0 – 23

day-of-month: 区间为0 – 31

month: 区间为1 – 12. 1 是1月. 12是12月.

Day-of-week: 区间为0 – 7. 周日可以是0或7.

简单的说就是分时月日周。

然后再说说特殊字符的用法

Linux之crontab与at

 我们看一个具体的例子

首先我在家目录下创建了一个名为“hahahhahahah”的文件夹

Linux之crontab与at

 然后我会将这个文件作为邮件发给我自己

Linux之crontab与at

 这是内容:每天的8:20给我发送hahahahhah文件的内容

Linux之crontab与at

在下图中可以看到确实受到了一封邮件

Linux之crontab与at

接下来去查看该邮件 

Linux之crontab与at

 确实是我的邮件,由此可见此次计划任务的创建成功了。

因为crontab -e 这个命令是针对把用户的cron来设计的,如果要执行系统的例行性任务时,该如何处理呢?这个时候就需要编辑/etc/crontab这个文件了,我们先看一看这个文件

Linux之crontab与at

 真正修改的时候,使用vi/vim对其进行修改就好了