15.1 什么是例行性工作调度
在不考虑硬件与服务器的链接状态下,Linux可以帮助提醒许多任务。Linux调度就是通过crontab与at这两个东西。
15.1.1 Linux工作调度的种类:at,cron
从上面的说明当中,我们可以很清楚的发现两种工作调度的方式:
一种是例行性的,就是每隔一定的周期要来办的事项;
一种是突发性的,就是这次做完以后就没有的那一种 ( 3C 大降价...)
在Linux下面如何达到这两个功能,就得用at和crontab这两个东西。
at:at 是个可以处理仅执行一次就结束调度的指令,不过要执行 at 时, 必须要有 atd 这个服务的支持才行。在某些新版的 distributions 中,atd 可能默认并没有启动,那么 at 这个指令就会失效呢!不过我们的 CentOS 默认是启动的。
crontab :crontab 这个指令所设置的工作将会循环的一直进行下去! 可循环的时间为分钟、小时、每周、每月或每年等。crontab 除了可以使用指令执行外,亦可编辑/etc/crontab 来支持。 至于让 crontab 可以生效的服务则是 crond 这个服务。
15.1.2 CentOS Linux 系统上常见的例行性工作
Linux会主动帮我们进行一些工作。 比方说自动的进行线上更新 (on-line update)、自动的进行 updatedb (第六章谈到的locate 指令) 更新文件名数据库、自动的作登录文件分析 (所以 root 常常会收到标题为logwatch 的信件) 等等。这是由于系统要正常运行的话, 某些在背景下面的工作必须要定时进行的缘故。基本上 Linux 系统常见的例行性任务有:
进行登录文件的轮替 (log rotate): Linux 会主动的将系统所发生的各种信息都记录下来,这就是登录文件 。 由于系统会一直记录登录信息,所以登录文件将会越来越大!我们知道大型文件不但占容量还会造成读写性能的困扰, 因此适时的将登录文件数据挪一挪,让旧的数据与新的数据分别存放,则比较可以有效的记录登录信息。这就是 log rotate 的任务!这也是系统必要的例行任务;
登录文件分析 logwatch 的任务: 如果系统发生了软件问题、硬件错误、资安问题等,绝大部分的错误信息都会被记录到登录文件中, 因此系统管理员的重要任务之一就是分析登录文件。但你不可能手动通过 vim 等软件去检视登录文件,因为数据太复杂了! 我们的 CentOS 提供了一只程序“ logwatch ”来主动分析登录信息,所以你会发现,你的 root老是会收到标题为 logwatch 的信件,那是正常的。
创建 locate 的数据库: 在第六章我们谈到的 locate 指令时, 我们知道该指令是通过已经存在的文件名数据库来进行系统上文件名的查询。我们的文件名数据库是放置到/var/lib/mlocate/ 中。 问题是,这个数据库怎么会自动更新,这就是系统的例行性工作所产生的效果。系统会主动的进行 updatedb。
man page 查询数据库的创建: 与 locate 数据库类似的,可提供快速查询的 man pagedb 也是个数据库,但如果要使用 man page 数据库时,就得要执行 mandb 才能够创建好。 而这个 man page 数据库也是通过系统的例行性工作调度来自动执行的。
RPM 软件登录文件的创建: RPM是一种软件管理的机制。由于系统可能会常常变更软件, 包括软件的新安装、非经常性更新等,都会造成软件文件名的差异。为了方便未来追踪,系统也帮我们将文件名作个排序的记录。 有时候系统也会通过调度来帮忙 RPM 数据库的重新创建。
移除暂存盘: 某些软件在运行中会产生一些暂存盘,但是当这个软件关闭时,这些暂存盘可能并不会主动的被移除。 有些暂存盘则有时间性,如果超过一段时间后,这个暂存盘就没有效用了,此时移除这些暂存盘就是一件重要的工作! 否则磁盘容量会被耗光。系统通过例行性工作调度执行名为 tmpwatch 的指令来删除这些暂存盘。
与网络服务有关的分析行为: 如果你有安装类似 WWW 服务器软件 (一个名为 apache的软件),那么你的 Linux 系统通常就会主动的分析该软件的登录文件。 同时某些凭证与认证的网络信息是否过期的问题,我们的 Linux 系统也会很友好的帮你进行自动检查。