WEB开发网
开发学院操作系统Linux/Unix 系统管理员工具包: 时间和事件管理 阅读

系统管理员工具包: 时间和事件管理

 2008-11-11 08:12:32 来源:WEB开发网   
核心提示: 59 23 31 1,3,5,7,8,10,12 * do-something59 23 30 4,6,9,11* do-something59 23 28 2 * do-something在上面的示例中,通过手动的方式选择了每个月的最后一天,系统管理员工具包: 时间和事件管理(5),但管

59 23 31 1,3,5,7,8,10,12 * do-something
59 23 30 4,6,9,11    * do-something
59 23 28 2        * do-something

在上面的示例中,通过手动的方式选择了每个月的最后一天,但管理这三行可能有些麻烦,必须在闰年手动修改 crontab 定义,以确保该信息能计算出正确的日期。

相应的解决办法是使用 echo 命令(而不是 cron)执行日期检查。要实现这一点,需要使用 cal(用于输出当前月份的日历)和 awk(用于确定该月的最后一天)。如果运行以下命令,应该可获得月份的最后一天:

$ echo `cal`|awk '{print $NF}'

以上命令首先通过 echo 命令(会将通常的多行输出作为一行输出)输出日历,然后对输出的数字进行计数;最后的数字就是当前月份的最后一天。

要在 crontab 中使用此命令,应采用以下方式:

59 23 * * * [`echo `cal`|awk '{print $NF}'` -eq `date +%d`]
&& do-something

方括号将在用于运行命令的外壳程序中启动一个测试。另外要注意,cron 将筛选出 % 符号,因此在 crontab 中使用时必须进行转义。该测试的第一部分就是前面演示的内容,其第二部分使用 date 命令来输出当前日期。重复的 && 可确保 && 右侧的命令仅在左侧的测试结果为真时执行。

给定周中的特定天

另一个常见的需求是,仅在每月中的特定星期数运行。例如,可能希望在每个月的第一个星期一或星期五运行一个报告。为了完成此任务,可以使用与上面类似的过程。对于给定周中的任何天,它一定属于以下日期范围之一:

第 1 周:第 1 天到第 7 天

第 2 周:第 8 天到第 14 天

上一页  1 2 3 4 5 6 7  下一页

Tags:系统 管理员 工具包

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接