Bash脚本如何在新进程中休眠然后执行命令

Dav*_*der 23 linux bash

所以,我想知道是否有一个bash命令让我分叉一个睡眠几秒钟的进程,然后执行一个命令.

这是一个例子:

sleep 30 'echo executing...' &
Run Code Online (Sandbox Code Playgroud)

^这实际上不起作用(因为sleep命令只接受时间参数),但有什么东西可以做这样的事情吗?那么,基本上,一个睡眠命令需要一个时间参数,并在间隔完成时执行某些操作?我希望能够将它分成不同的进程,然后继续处理shell脚本.

另外,我知道我可以编写一个简单的脚本来执行此操作,但由于对情况的一些限制(我实际上是通过ssh调用传递它),我宁愿不这样做.

Ide*_*lic 38

你可以做

(sleep 30 && command ...)&
Run Code Online (Sandbox Code Playgroud)

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

  • 这不会退出当前行,有没有办法在完成后向它添加 CTRL+C (2认同)

Joh*_*nck 19

您可以在后台调用另一个shell并使其执行您想要的操作:

bash -c 'sleep 30; do-whatever-else' &
Run Code Online (Sandbox Code Playgroud)

睡眠的默认间隔以秒为单位,因此上述情况将睡眠30秒.您可以指定其他间隔,例如:30m30分钟,1h1小时或3d3天.