每个人或多或少都有一些约会或者是工作,有的工作是例行性的, 例如每年一次的年会、每个月一次的工作报告、每周一次的周会、每天需要的打卡等等; 有的工作则是临时发生的,例如刚好有高层领导来访,需要你准备演讲器材等等! 用在生活上面,例如每年的爱人的生日、每天的起床时间等等、还有突发性的商场大促销(真希望天天有!)等等。
像上面这些例行性工作,通常你得要记录在行事历上面才能避免忘记!不过,由于我们常常在电脑前面的缘故,如果电脑系统能够主动的通知我们的话,那不就轻松多了!这个时候Linux的例行性工作排程就可以派上用场了! 我们的Linux的可以帮你提醒很多任务,例如:每一天早上 8:00钟要服务器连接上音响,并启动音乐来唤你起床;而中午 12:00 希望 Linux 可以发一封信到你的邮件信箱,提醒你可以去吃午餐了; 另外,在每年的你爱人生日的前一天,先发封信提醒你,以免忘记这么重要的一天。
那么 Linux 的例行性工作是如何进行排程的呢?所谓的排程就是将这些工作安排执行的流程之意! 咱们的 Linux 排程就是通过 crontab 与 at 这两个东西!这两个玩意儿有啥不同?就让我们来瞧一瞧!
Linux 工作排程的种类: at, cron
从上面的说明当中,我们可以很清楚的发现两种工作排程的方式:
一种是例行性的,就是每隔一定的周期要来办的事项;
一种是突发性的,就是这次做完以后就沒有的那一种 ( 商场大促销...)
那么在 Linux 底下如何达到这两个功能呢?那就得使用 at 与 crontab 这两个好东西了!
at :at 是个可以仅执行一次就結束排程的命令,不过必须要有 atd这个服务的支持才行。在某些新版的 distributions 中,atd 可能默认并沒有启动,那么 at 这个命令就会失效!
crontab :crontab 这个命令所设定的工作将会循环的一直进行下去! 可循环的时间为分钟、小时、每周、每月或每年等。crontab 除了可以使用命令执行外,也可编辑
/etc/crontab 来支持。 至于让 crontab 可以生效的服务则是 crond 这个服务!
底下我们先來谈一谈 Linux 的系统到底在做什么事情,怎么有那么多的工作排程在进行呢?
CentOS Linux 系统上常见的例行性工作
如果你曾经使用过 Linux 一阵子了,那么你大概会发现到 Linux 会主动的帮我们进行一些工作! 比方说自动的进行线上更新 (on-line update)、自动的进行 updatedb 更新文件名名资料库、自动的作登录文件分析 (所以 root 常常会收到标题为 logwatch 的邮件) 等等。这是由于系统要正常运行的话, 某些在后台的工作必须要定时进行的缘故。基本上 Linux 系统常见的例行性任务有:
进行登录文件的轮替 (log rotate):
Linux 会主动的将系统所发生的各种信息都记录下來,这就是登录文件 。 由于系统会一直记录登录信息,所以登录文件将会越来越大!我们知道大型档案不但占容量还会造成读写性能的困扰, 因此适时的将登录文件资料挪一挪,让旧的资料与新的资料分別存放,则比较可以有效的记录登录信息。这就是 log rotate 的任务!这也是系统必要的例行任务;
登录文件分析 logwatch 的任务:
如果系统发生了软件问题、硬件错误,绝大部分的错误信息都会被记录到登录文件中, 因此系统管理員员的重要任务之一就是分析登录文件。但你不可能手动通过 vim 等软件去检视登录文件,因为资料太复杂了! 我们的CentOS 提供了一个程序『 logwatch 』來主动分析登录信息,所以你会发现,你的 root 老是会收到标题为 logwatch 的邮件,那是正常的!你最好也能夠看看该邮件的內容!
建立 locate 的资料库:
在我们用到 locate 命令时, 我们知道该命令是通过已经存在的文件名资料库来进行系统上文件名的查询。我们的文件名资料库是放到 /var/lib/mlocate/ 中。 问題是,这个资料库怎么会自动更新啊?这就是系统的例行性工作所产生的效果了!系统会主动的进行 updatedb !
man page 查询资料库的建立:
与 locate 资料库类似的,可提供快速查询的 man page db 也是个资料库,但如果要使用 man page 资料库时,就得要执行 mandb 才能夠建立好! 而这个 man page 资料库也是通过系统的例行性工作排程來自动执行的!
RPM 软件登录文件的建立:
RPM 是一种软件管理的机制。由于系统可能会常常变更软件, 包括软件的新安裝、非经常性更新等,都会造成软件文件名的差异。为了方便未来追踪,系统也帮我们将文件名作个排序的记录! 有时候系统也会通过排程来帮忙 RPM 资料库的重新建立!
移除缓存文件:
某些软件在运行中会产生一些缓存文件,但是当这个软件关闭时,这些缓存文件可能并不会主动的被移除。 有些缓存文件则有时间性,如果超过一段时间后,这个缓存文件就沒有效用了,此时移除这些缓存文件就是一件重要的工作! 否则硬盘容量会被耗光。系统通过例行性工作排程执行名为 tmpwatch 的命令来刪除这些缓存文件!
与网络服务有关的分析行为:
如果你有安装类似 WWW 伺服器软件 (一个名为 apache 的软件),那么你的 Linux 系统通常就会主动的分析该软件的登录文件。 同时某些凭证与认证的网络信息是否过期的问題,我们的 Linux 系统也会很亲和的帮你进行自动检查!
其实你的系统会进行的例行性工作与你安装的软件多寡有关,如果你安装过多的软件,某些服务功能的软件都会附上分析工具, 那么你的系统就会多出一些例行性工作!
了解更多技术类相关内容就在源码时代!