使用cron进行自动维护
为了克服这些缺点,Apple Computer 开发了一个统一的启动工具 launchd,它可以在引导时、根据需要和按照指定的时间间隔启动进程。实际上,在 Mac OS 10.4 Tiger 中 launchd 已经替代了 cron(和 init 以及用来引导和初始化系统的其他几个系统实用程序)。(Apple 在系统上保留了 cron,以便为用户提供方便,而且 Vixie cron 的调度选项更灵活)。Mac OS X 的引导速度很快确实可以归功于 launchd:它会在引导时列出要启动的程序,但是只在首次需要时执行程序。 launchd 是开放源码的,可以从 Mac OS Forge 上它的主页获得源代码。目前,launchd 已经被移植到 FreeBSD 上,但是还没有移植到其他 UNIX 或 Linux 系统。但是,许多项目正在积极地实现与 launchd 等效的程序,所以简要地了解它的特性是有必要的: launchd 并不创建作业来检查目录中是否有新文件,而是自动监视目录中是否有新文件或者监视空目录中是否添加了任何文件,并根据需要启动作业。launchd 不执行轮询;而是使用 kqueues 设施让内核在目录发生变化时通知它。(Linux 具有一种相似的事件设施 inotify,以后的一篇 developerWorks 文章将讨论它) 。 如果指定了,launchd 会使用 chroot 把您的作业发送到一个新目录。chroot 读作 “cha-root”,它是一个系统调用,可以改变前向斜杠(/)和根目录指向的目录。因此,如果使用 chroot 把文件发送到 /opt/root,/opt/root 之外的所有文件就是不可访问的(毕竟,/opt/root 现在是 /,也就是文件系统的顶级目录),/opt/root 中的所有目录成为一级目录。通常使用 chroot 限制作业,使代码无法进入更大的文件系统,以避免产生损害。 可以为作业设置资源限制。可以限制的资源包括内存、堆栈大小和打开的文件的最大数量。 当定义一个任务并把它装载到 launchd 中之后,可以按照名称从命令行启动和停止作业。 launchd 由三个组件组成:launchd 守护进程本身;用来添加、修改和删除作业以及控制 launchd 的 launchctl 实用程序;一个或多个配置文件,每个文件定义一个或多个作业。由于它起源于 Mac OS X,launchd 配置文件只是简单的属性文件,可以用 Extensible Markup Language (XML) 表示。 简单地说,在 Mac OS X 上使用 launchd 的步骤如下(要监视一个目录中添加的文件并根据需要运行作业): 1.创建一个属性文件来表达此作业及其所有属性。 可以使用 Mac 的 Property Editor,也可以手工编辑 XML。无论采用哪种方法,产生的文件都应该与 清单 1 相似。 清单 1. 监视文件系统目录变化的 launchd 作业示例 <?xml version="1.0" encoding="UTF-8"?> 简单地说,当 /Users/strike/data/incoming 目录的内容发生变化时,此文件运行 /Users/strike/bin/processor 中的实用程序脚本。把 OnDemand 设置为 True 让 launchd 根据需要启动此作业。把此文件保存到 ~/Library/LaunchAgents/com.example.processor.plist。 (编辑:应用网_丽江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |