关于本系列
通常,UNIX 管理员都拥有一套他/她经常使用协助管理进程的实用程序、技 巧和系统。提供了各种用于简化不同过程的关键实用工具、命令行链和脚本。这些工具中有一部分来自于 操作系统,而大部分的技巧则来源于长期的经验和简化系统管理员工作的要求。本系列文章主要专注于最 大限度地利用各种 UNIX 环境中可用的工具,包括简化异类环境中的管理任务的方法。
及时管理 中的计划
典型的系统管理员会花很多时间进行重复的任务。至少在没有可在合适的时间点运行各 种任务的任务计划系统的情况下,他们会这样做。
典型的例子包括运行备份之类的日常任务,也 包括要每周或每个月执行的各种任务,如清理日值、生成报告以及在各种情况下要执行的大量其他命令。
另外还有其他希望以特定时间间隔运行的任务,例如监视当前运行的进程或当前磁盘使用量列表 的命令,所有此类任务都可以用于帮助在出现故障或其他问题时诊断和确定问题。或者,可能存在希望在 自己不在场的特定时间执行的命令。例如,您可能会希望在夜间关闭为第二天工作做准备的计算机,但您 可能不希望仅为了关闭计算机而一直等到午夜。
有可用于所有这些情况的解决方案,但在了解如 何执行这些操作前,应该注意到计划方法的一些缺点和不足。
由于所有任务都已自动化,计划执 行的一个主要问题是,如果发生了任何错误或意外的情况,并没有机会对出现的问题加以解决。另外,您 还完全依赖于系统及其在特定时间执行特定任务的功能。在命令何时执行方面有一些限制,而处理 “如果发生了X,则执行 Y,否则执行 Z”之类的不可预测的情况要求进行脚本编写,并需要 进行很多次试验,可能遇到很多错误。
不过,计划可以节约大量的时间,因此这些选项值得考虑 。
计划一次性执行的任务
cron系统可处理所有基于时间的命令执行计划,并提供了可用于 在特定时间运行命令的两个不同解决方案。at命令可计划在特定的时间执行某项任务,且仅执行一次。 crontab系统允许指定命令的执行计划,可以在指定的时间运行,可以在特定某天运行,还可以将二者结 合使用。
可采用两种方法使用at命令。第一个是直接键入at和希望命令运行的时间(可以选择指 定日期)。例如:
$ at 17:20
echo It's 17:20!
job 1 at Tue Apr 11 17:20:00 2006
输入了at命令后,它将等待您输入要在指定时间运行的命令。可以输入任 意多的命令,这些命令将作为 Shellscript 执行。要终止输入,请使用end-of-file命令(通常为 Control-D)。
您所键入的命令将在调用at命令的环境副本中执行。这意味着,将记录您的活动 PATH、库和其他环境设置,并用于执行您生成的脚本。通常会在命令完成时将结果通过电子邮件发送给您 。