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之计划任务_第1张图片
我这个人比较懒,实在是懒得写,所以就在书上拍了一张照片,大家将就着看。默认的情况下,只要当前的用户不在/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之计划任务_第2张图片
我们看一个具体的例子
首先我在家目录下创建了一个名为“hahahhahahah”的文件夹
Linux之计划任务_第3张图片
然后我会将这个文件作为邮件发给我自己
Linux之计划任务_第4张图片
这是内容:每天的8:20给我发送hahahahhah文件的内容Linux之计划任务_第5张图片
在下图中可以看到确实受到了一封邮件在这里插入图片描述
接下来去查看该邮件
Linux之计划任务_第6张图片
确实是我的邮件,由此可见此次计划任务的创建成功了。
因为cron -e 这个命令是针对把用户的cron来设计的,如果要执行系统的例行性任务时,该如何处理呢?这个时候就需要编辑/etc/crontab这个文件了,我们先看一看这个文件
Linux之计划任务_第7张图片
真正修改的时候,使用vi/vim对其进行修改就好了
Linux之计划任务_第8张图片
总结:个人性的任务使用【crontab -e】,系统性的任务使用【vim /etv/crontab】

你可能感兴趣的:(服务器,Linux)