天天看点

秒级定时计划

碰到一道面试题,每个10秒打印一次系统时间,投机取巧,弄成功了。

1

2

3

4

5

6

7

8

9

10

11

<code>$ </code><code>for</code> <code>i </code><code>in</code> <code>`</code><code>seq</code> <code>1 10`;</code><code>do</code> <code>date</code><code>;</code><code>sleep</code> <code>10 ;</code><code>done</code>

<code>2012年 08月 29日 星期三 08:51:32 CST</code>

<code>2012年 08月 29日 星期三 08:51:42 CST</code>

<code>2012年 08月 29日 星期三 08:51:52 CST</code>

<code>2012年 08月 29日 星期三 08:52:02 CST</code>

<code>2012年 08月 29日 星期三 08:52:12 CST</code>

<code>2012年 08月 29日 星期三 08:52:22 CST</code>

<code>2012年 08月 29日 星期三 08:52:32 CST</code>

<code>2012年 08月 29日 星期三 08:52:42 CST</code>

<code>2012年 08月 29日 星期三 08:52:52 CST</code>

<code>2012年 08月 29日 星期三 08:53:02 CST</code>

这样做忽略了程序运行时间,不是很精确,所以能够成功,唬下人。

另外,用while循环+sleep(usleep)可以实现秒级(微秒级)的任务。示例脚本如下

<code>while</code> <code>true</code>

<code>do</code>

<code>    </code><code>command</code>

<code>    </code><code>sleep</code> <code>1</code>

<code>done</code>

这样做就会一致循环下去,用if 给它加一个开关锁

<code>    </code><code>if</code> <code>[ -f </code><code>/tmp/file</code><code>.lock ];</code><code>then</code>

<code>        </code><code>command</code>

<code>        </code><code>sleep</code> <code>1</code>

<code>    </code><code>else</code>

<code>        </code><code>exit</code> <code>0</code>

<code>    </code><code>fi</code>

想要停止循环,删除一个锁文件即可

本文转自 紫色葡萄 51CTO博客,原文链接:http://blog.51cto.com/purplegrape/976003,如需转载请自行联系原作者

继续阅读