Bash脚本如何在新进程中延迟执行一个命令

35

所以,我想知道是否有一个bash命令可以让我fork一个进程,在几秒钟后执行一个命令。

下面是一个例子:

sleep 30 'echo executing...' &

这实际上不起作用(因为睡眠命令只接受时间参数),但有没有类似的东西可以做到这一点?因此,基本上是一个睡眠命令,它接受时间参数和在完成间隔时执行的内容?我希望能将其分支到另一个进程中,然后继续处理shell脚本。

此外,我知道我可以编写一个简单的脚本来实现这一点,但由于某些限制情况(我实际上是通过ssh调用它),我不想这样做。

2个回答

64

你可以这样做

(sleep 30 && command ...)&

使用&&比使用;更安全,因为它确保只有在睡眠计时器到期后才会运行command ...


4
当前行不能退出,是否有办法在完成时添加CTRL+C? - ZeExplorer

31
你可以在后台调用另一个shell并让它执行你想要的操作:
bash -c 'sleep 30; do-whatever-else' &

默认的睡眠时间间隔是以秒为单位的,因此上述代码将会使程序睡眠30秒。你可以使用其他时间间隔,例如:30m表示30分钟,1h表示1小时,3d表示3天。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接