2012-03-29 125 views
10

所以,我想知道是否有一个bash命令可以让一个进程休眠几秒钟,然后执行一个命令。Bash脚本如何在新进程中休眠,然后执行命令

下面是一个例子:

sleep 30 'echo executing...' & 

^这并不实际工作(因为睡眠命令只花费的时间参数),但有东西可以做这样的事情?所以,基本上,一个休眠命令需要一个时间参数,并在间隔完成时执行一些事情?我希望能够将其分成不同的进程,然后继续处理shell脚本。另外,我知道我可以写一个简单的脚本来实现这个功能,但由于对这种情况有一些限制(我实际上是通过ssh调用传递的),所以我宁愿不这样做。

回答

10

您可以调用在后台另一个shell,并使其做你想做的:

bash -c 'sleep 30; do-whatever-else' & 

睡眠的默认时间间隔为秒,因此上面可以睡30秒。您可以指定其他间隔,例如:30m 30分钟,或1h 1小时,或3d连续3天。

+0

谢谢!那就是诀窍。 :) – David 2012-03-29 23:16:52

21

你可以做

(sleep 30 && command ...)& 

使用&&是较安全;,因为它确保如果睡眠计时器到期command ...才会运行。

+0

谢谢!更干净! – cwohlman 2015-01-02 18:09:17