像上面这些例行性工作,通常你得要记录在行事历上面才能避免忘记!不过,由于我们常常在计算机前面的缘故, 如果计算机系统能够主动的通知我们的话,那么不就轻松多了!嘿嘿!这个时候 Linux 的例行性工作调度就可以派上场了! 在不考虑硬件与我们服务器的链接状态下,我们的 Linux 可以帮你提醒很多任务,例如:每一天早上 8:00 钟要服务器连接上音响,并启动音乐来唤你起床;而中午 12:00 希望 Linux 可以发一封信到你的邮件信箱,提醒你可以去吃午餐了; 另外,在每年的你爱人生日的前一天,先发封信提醒你,以免忘记这么重要的一天。

    那么 Linux 的例行性工作是如何进行调度的呢?所谓的调度就是将这些工作安排执行的流程之意! 咱们的 Linux 调度就是通过 crontab 与 at 这两个东西!这两个玩意儿有啥异同?就让我们来瞧瞧先!

    从上面的说明当中,我们可以很清楚的发现两种工作调度的方式:

    • 一种是例行性的,就是每隔一定的周期要来办的事项;
    • at :at 是个可以处理仅执行一次就结束调度的指令,不过要执行 at 时, 必须要有 atd 这个 的支持才行。在某些新版的 distributions 中,atd 可能默认并没有启动,那么 at 这个指令就会失效呢!不过我们的 CentOS 默认是启动的!

    下面我们先来谈一谈 Linux 的系统到底在做什么事情,怎么有若干多的工作调度在进行呢?然后再回来谈一谈 at 与 crontab 这两个好东西!

    15.1.2 CentOS Linux 系统上常见的例行性工作

    如果你曾经使用过 Linux 一阵子了,那么你大概会发现到 Linux 会主动的帮我们进行一些工作呢! 比方说自动的进行线上更新 (on-line update)、自动的进行 updatedb (第六章谈到的 locate 指令) 更新文件名数据库、自动的作登录文件分析 (所以 root 常常会收到标题为 logwatch 的信件) 等等。这是由于系统要正常运行的话, 某些在背景下面的工作必须要定时进行的缘故。基本上 Linux 系统常见的例行性任务有:

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

    • 创建 locate 的数据库:在第六章我们谈到的 locate 指令时, 我们知道该指令是通过已经存在的文件名数据库来进行系统上文件名的查询。我们的文件名数据库是放置到 /var/lib/mlocate/ 中。 问题是,这个数据库怎么会自动更新啊?嘿嘿!这就是系统的例行性工作所产生的效果啦!系统会主动的进行 updatedb 喔!

    • RPM 软件登录文件的创建:RPM () 是一种软件管理的机制。由于系统可能会常常变更软件, 包括软件的新安装、非经常性更新等,都会造成软件文件名的差异。为了方便未来追踪,系统也帮我们将文件名作个排序的记录呢! 有时候系统也会通过调度来帮忙 RPM 数据库的重新创建喔!

    • 与网络服务有关的分析行为:如果你有安装类似 WWW 服务器软件 (一个名为 apache 的软件),那么你的 Linux 系统通常就会主动的分析该软件的登录文件。 同时某些凭证与认证的网络信息是否过期的问题,我们的 Linux 系统也会很友好的帮你进行自动检查!

    其实你的系统会进行的例行性工作与你安装的软件多寡有关,如果你安装过多的软件,某些服务功能的软件都会附上分析工具, 那么你的系统就会多出一些例行性工作啰!像鸟哥的主机还多加了很多自己撰写的分析工具,以及其他第三方协力软件的分析软件, 嘿嘿!俺的 Linux 工作量可是非常大的哩!因为有这么多的工作需要进行,所以我们当然得要了解例行性工作的处理方式啰!