since2012/04/23

     
 
最近升级日期:2009/09/11

大标题的图示什么是例行性工作排程

每个人或多或少都有一些约会或者是工作,有的工作是例行性的, 例如每年一次的加薪、每个月一次的工作报告、每周一次的午餐会报、每天需要的打卡等等; 有的工作则是临时发生的,例如刚好总公司有高官来访,需要你准备演讲器材等等! 用在生活上面,例如每年的爱人的生日、每天的起床时间等等、还有突发性的计算机大降价 (啊!真希望天天都有!) 等等罗。

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

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


小标题的图示Linux 工作排程的种类: at, cron

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

  • 一种是例行性的,就是每隔一定的周期要来办的事项;
  • 一种是突发性的,就是这次做完以后就没有的那一种 (计算机大降价...)

那么在 Linux 底下如何达到这两个功能呢?那就得使用 at 与 crontab 这两个好东西罗!

  • at :at 是个可以处理仅运行一次就结束排程的命令,不过要运行 at 时, 必须要有 atd 这个服务 (第十八章) 的支持才行。在某些新版的 distributions 中,atd 可能默认并没有启动,那么 at 这个命令就会失效呢!不过我们的 CentOS 默认是启动的!

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

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


小标题的图示Linux 上常见的例行性工作

如果你曾经使用过 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 喔!

  • whatis 数据库的创建
    与 locate 数据库类似的,whatis 也是个数据库,这个 whatis 是与 man page 有关的一个查询命令,不过要使用 whatis 命令时, 必须要拥有 whatis 数据库,而这个数据库也是透过系统的例行性工作排程来自动运行的哩!

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

  • 移除缓存档
    某些软件在运行中会产生一些缓存档,但是当这个软件关闭时,这些缓存档可能并不会主动的被移除。 有些缓存档则有时间性,如果超过一段时间后,这个缓存档就没有效用了,此时移除这些缓存档就是一件重要的工作! 否则磁碟容量会被耗光。系统透过例行性工作排程运行名为 tmpwatch 的命令来删除这些缓存档呢!

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

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


 
     
http://linux.vbird.org is designed by VBird during 2001-2011. ksu.edu 

本网页主要以Firefox配合解析度 1024x768 作为设计依据     鸟哥自由软件整合应用研究室