Linux系统中有一种例行性工作(crontab)可以调度,是通过crontab和at来实现的。

这两种工作调度:

一种是例行性的,就是每隔一定的周期要来办的事项。

一种是突发性的,就是这次做完以后就没有的那种。

at:at是个可以处理仅执行一次就结束调度的命令,不过要执行at时,必须要有atd这个服务的支持才行。在某些新版的distributions中,atd可能默认并没有启动,那么at这个命令就会失效,不过我们CentOS默认是启动的。

Crontab:crontab这个命令所设置的工作将会循环一直进行下去。可循环的时间为分钟、小时、每周、每月、每年等。Crontab除了可以使用命令执行外,也可编辑/etc/crontab来支持。至于让crontab可以生效的服务则是crond这个服务。

Linux上常见的例行性工作

  1. 进行日志文件的轮替(log rotate)

Linux会主动将系统所发生的各种信息都记录下来,这就是日志文件。由于系统会一直记录日志信息,所以日志文件将会越来越大。我们知道大型文件不但占容量,还会造成读写性能的困扰,因此实时将日志文件数据挪一挪,让旧的数据与新的数据分别存放,则比较可以有效地记录日志信息。这就是log rotate的任务,这也是系统必要的例行任务。

  1. 日志文件分析logwatch的任务

如果系统发生了软件问题、硬件错误等,绝大多部分的错误信息都会被记录到日志文件中,因为此系统管理员的重要任务之一就是分析日志文件,但你不可能动手通过vi的软件去检查日志文件,因为数据太复杂了,我们的CentOS提供一个程序“logwatch”来主动分析日志信息,所有你会发现,你的root老是收不到标题为logwatch的信件,那是正常的。你最好能看看该信件的内容。

  1. 新建locate的数据库

Locate这个命令是通过已经存在的文件名数据库来进行系统中文件名的查询。我们的文件名数据库是放置到/var/lib/mlocate/中。问题是,这个数据库怎么会自动更新呢?这就是系统的例行性工作所产生的效果了,系统会主动进行updatedb。

  1. Whatis数据库的建立

与locate数据库类似的,whatis也是数据库,这个whatis是与man page有关的一个查询命令,不过要使用whatis命令时,必须要拥有whatis数据库,而这个数据库也是通过系统的例行性工作调度来自动执行的。

  1. RPM软件日志文件的新建

PRM是一种软件管理的机制。由于系统可能会经常更改软件,包括软件的新安装、非经常性更新等,都会造成软件文件名的区别。为了方便未来跟踪,系统也帮我们将文件名做个排序的记录呢,有时系统也会通过调度来帮助RPM数据库的重新生成。

  1. 删除临时文件

某些软件在运行中会产生一些临时文件,但是当这个软件关闭时,这些临时文件可能并不会主动被删除。有些临时文件则有时间性,如果超过一段时间后,这个临时文件就没用了,此时删除这些临时文件就是一件重要的工作,否则磁盘空间会被耗光。系统通过例行性工作调度执行名为tmpwatch的命令删除这些临时文件。

  1. 与网络服务有关的分析行为

如果你有安装类型www服务器软件(一个名为apache的软件),那么你的linux系统通常就会主动分析该软件的日志文件,同时某些认证的网络信息是否过期的问题,我们的Linux系统也会帮我们进行自动检测。

仅执行一次的工作调度

atd的启动与at运行的方式

要使用单一工作调度时,我们的Linux系统上面必须要有负责这个调度的服务,那就是atd。不过并非所有的Linux distributions都默认会把它打开,所以,某些时刻我们必须要手动将它启动才行。启动的方法很简单。

/etc/init.d/atd restart

正在停止atd:     [确定]

正在激活 atd:     [确定]

#再设置一下开机时就启动这个服务,免得每次重新启动都得再来一次

Chkconfig atd on

at的运行方式

  1. 既然是工作调度,那么应该会有产生工作的方式,并且将这些工作排进日程表中。那么生成工作的方式是怎么进行的?事实上,我们使用at这个命令来生成所要运行的工作,并将这个工作以文本文件的方式写入/var/spool/at/目录内,该工作便能等待atd这个服务的取用与执行了,就这么简单。
  2. 不过,并不是所有的人都可以进入at工作调度。为什么?因为安全的理由,很多主机被所谓的“绑架”后,最常发现的就是他们的系统当中多了很多的骇客程序,这些程序非常可能运用工作调度来执行或搜集系统信息,并定时回报给黑客团队。所以,除非你认可的账号,否则先不要让他们使用at吧!那么怎样使用at的管理呢?
  3. 我们可以利用/etc/at.allow 与/etc/at.deny这两个文件来进行at的使用限制呢!加上这两个文件后,at的工作情况其实是这样的:

(1)、 先寻找/etc/at.allow这个文件,写在这个文件中的用户才能使用at,没有在这个文件中用户则不能使用at(即使没有写在at.deny当中)。

(2)、如果/etc/at.allow不存在,就寻找/etc/at.deny这个文件,若写在这个at.deny的用户则不能使用at,而没有在这个at.deny文件中的用户就可以使用at了。

(3)、如果两个文件都不存在,那么只有root可以使用at这命令。

  1. 通过这个说明,我们知道/etc/at.allow 是管理较为严格的方式,而/etc/at.deny则较为松散(因为账号没有在该文件中,就能够执行at了)。在一般的distributions当中,由于假设系统上的所有用户都是课信任的,因为系统通常会保留一个空的/etc/at.deny文件,意识是允许所有使用at命令的意识(你可以自行检查一下该文件)。不过,万一你不希望有某些用户使用at的话,将那个用户的账号写入/etc/at.deny即可!一个账号写一行。

实际运行一个工作调度

at [-mldv] TIME

at –c 工作号码

参数:

-m : 当at的工作完成后,即使没有输出信息,以email通知用户该工作已完成。

-l  :at –l 相当于atq,列出目前系统上面的所有该用户的at调度。

-d : at –d相当于atrm,可以取消一个在at调度中的工作。

-v :  可以使用较明显的时间格式列出at调度中的任务列表。

-c : 可以列出后面接的该项工作的实际命令内容。

TIME:时间格式,这里可以定义什么时候要进行at这项工作的时间,格式有:

HH:MM    ex>04:00

在今日的HH:MM时刻进行,若已超出该时刻,则明天的HH:MM进行此工作。

HH:MM YYYY-MM-DD     ex>04:00 2009-03-17

强制规定在某年某月某一天的特殊时刻进行该工作。

HH:MM[am|pm] [month] [Data]  ex>04pm March 17

也是一样,强制在某年某月某日的某时刻进行。

HH:MM[am|pm] + number [minutes|hours|days|weeks]

ex> now +5 minutes   ex> 04pm+ 3days

在某个时间点“再加上几个时间后”才执行。

范例一:再过5分钟后,将/root/.bashrc 寄给root自己

at now +5 minutes

/bin/mail root –s “testing at job” < /root/.bashrc

<EOT> <=这里输入[ctrl]+d就会出现<EOF>的字样,代表结束。

循环执行的例行性工作调度

相对于at是仅执行一次的工作,循环执行的例行性工作调度则是由cron(crond)这个系统服务来控制的。刚才谈到linux系统上面原本就非常多的例行性工作,因为这个系统服务是默认启动。另外,由于用户自己也可以进行例行性工作调度,所以Linux也提供用户控制例行性工作调度的命令(crotab)。

用户设置

用户想要新建循环型工作调度时,使用的是crontab这命令。不过,为了安全性问题,与at类似,我们也可以限制使用crontab的用户账号。使用的限制数据有:

/etc/cron.allow

将可以使用crontab的账号写入其中,若未记录到这个文件当中的用户,就不可以使用crontab。、

/etc/cron.deny

将不可以使用crontab的账号写入其中,若未记录到这个文件当中的用户,就可以使用crontab。

linux例行性工作调度学习(一)的更多相关文章

  1. 第十五章 例行性工作(crontab)--循环执行的例行性工作调度 crontab(定时任务)

    循环执行的例行性工作调度 crontab(定时任务) 15.1 例行性工作调度 不考虑硬件与服务器的链接状态,Linux帮助提醒很多任务. Linux例行性工作是如何进行调度的? Linux调度就是通 ...

  2. 浅谈 linux 例行性工作 crontab (linux定时任务)

    定时任务大家都挺说过,就好比你手机上的闹钟,到了指定的时候就会响起. 今天在对redis缓存进行定时储存时又操作了一把,发现一些细节,写的不好.大家就将就看吧, 首先 简单介绍一下linux 例行性工 ...

  3. 重识linux-循环执行的例行性工作调度

    重识linux-循环执行的例行性工作调度 1 用户的设置 1)/etc/cron.allow  可以使用的账号,在这个文件内 2)/etc/cron.deny 不可以的放在这个文件里面 allow的优 ...

  4. Linux学习-循环执行的例行性工作排程

    循环执行的例行性工作排程则是由 cron (crond) 这个系统服务来控制的.Linux 系统上面原本就有非常多的例行性工作,因此这个系统服务是默认启动的. 另外, 由于使用者自己也可以进行例行性工 ...

  5. Linux学习-什么是例行性工作排程

    那么 Linux 的例行性工作是如何进行排程的呢?所谓的排程就是将这些工作安排执行的流程之意! 咱们的 Linux 排程就是透过 crontab 与 at 这两个东西! Linux 工作排程的种类: ...

  6. linux备忘录-例行性工作排程 (crontab)

    例行性工作排程 例行性工作排程分为两类 at at是只执行一次就结束的指令安排.要想使用at,必须要有atd服务的支持. crontab crontab是每隔一段时间自动执行的指令安排.crontab ...

  7. Linux管理,例行性工作,at和cron

    at 仅执行一次就结束调度(服务atd必须启动) at的配置信息 1.我们设定的at进程其实都是被以文本的方式写入到/var/spool/at/目录内,然后这些设定的进程便会等待atd服务来启动这些进 ...

  8. 例行性工作排程 (crontab)

    1. 什么是例行性工作排程 1.1 Linux 工作排程的种类: at, crontab 1.2 Linux 上常见的例行性工作2. 仅运行一次的工作排程 2.1 atd 的启动与 at 运行的方式: ...

  9. 第十六章、例行性工作排程 (crontab)

    1. 什么是例行性工作排程 1.1 Linux 工作排程的种类: at, crontab 1.2 Linux 上常见的例行性工作 2. 仅运行一次的工作排程 2.1 atd 的启动与 at 运行的方式 ...

随机推荐

  1. 第一百五十二节,封装库--JavaScript,表单验证--年月日注入

    封装库--JavaScript,表单验证--年月日注入 效果图 html <div id="reg"> <h2 class="tuo"> ...

  2. 【BZOJ】2019: [Usaco2009 Nov]找工作(spfa)

    http://www.lydsy.com/JudgeOnline/problem.php?id=2019 spfa裸题.....将飞机场的费用变成负,然后spfa找正环就行了 #include < ...

  3. Git进一步学习

    Git 安装配置 在使用Git前我们需要先安装 Git.Git 目前支持 Linux/Unix.Solaris.Mac和 Windows 平台上运行. Git 各平台安装包下载地址为:http://g ...

  4. 2014年辛星解读css第一节

    CSS是Cascading Style Sheets的缩写.即层叠样式表,它用于表现HTML的样式,即HTML仅仅是去写该网页有哪些内容,至于怎样去表现它们,由CSS去定制. ************ ...

  5. jquery代码规范让代码越来越好看

    最近学了jQuery,感觉这个jQuery是真的挺不错的,果然像他说的那样,少些多做!刚一入手感觉真是不错.但是写多了,就会发现这个代码一行居然能写那么长.而且可读性还不好.  有幸自己买了一本锋利的 ...

  6. Lumen 队列

    队列 简介 连接 Vs. 队列 驱动的必要设置 创建任务类 生成任务类 任务类结构 分发任务 延迟分发 任务链 自定义队列 & 连接 指定任务最大尝试次数 / 超时值 频率限制 错误处理 运行 ...

  7. Servlet及相关类和接口

    上一篇介绍了在Web项目中web.xml文件的配置信息,本篇主要介绍里面非常重要的配置——Servlet配置,重点介绍与Servlet相关的几个接口和类,包括Servlet接口.ServletConf ...

  8. tsinsen A1333. 矩阵乘法

    题目链接:传送门 题目思路:整体二分(二分的是答案,附带的是操作) 把矩阵中的元素对应成插入操作,然后就有插入和询问操作. 然后根据插入操作对于答案的影响,询问操作所匹配的符合答案个数,将操作分为两段 ...

  9. linux的%用法

    转自:http://blog.csdn.net/wu020708/article/details/52387473 linux (%和%%)(#和##)贪婪匹配规则 先看一个案例,提取文件名: fil ...

  10. nodejs 循环中操作需要同步执行解决方案

    最近用nodejs做了个针对某网站的小爬虫.干坏事得低调对吧,不能同时开太多的网络访问,结果各种回调/循环虐的心力交瘁. 经过了n次的百度\哥哥后终于拼出了自己要的功能.不敢独享分享出来以供大家参考. ...