Mar*_*tin 20 sleep shell command-line
如何在 X 秒后没有睡眠的情况下运行命令。或者有睡眠但没有外壳只是等待该命令的响应?
我用过这个,但没有用
sleep 5 ; ls > a.txt
Run Code Online (Sandbox Code Playgroud)
我需要在后台运行它。我尽量不必在脚本中运行它我尝试ls
在 5 秒后运行,并且 shell 不只是等待睡眠结束
ter*_*don 39
Hennes 建议的一种更简洁的书写方式是
(sleep 5; echo foo) &
Run Code Online (Sandbox Code Playgroud)
或者,如果您需要超过几秒钟的时间,则可以使用at
. 可以通过三种方式向 发出命令at
:
管它:
$ echo "ls > a.txt" | at now + 1 min
warning: commands will be executed using /bin/sh
job 3 at Thu Apr 4 20:16:00 2013
Run Code Online (Sandbox Code Playgroud)将要运行的命令保存在文本文件中,然后将该文件传递给at
:
$ echo "ls > a.txt" > cmd.txt
$ at now + 1 min < cmd.txt
warning: commands will be executed using /bin/sh
job 3 at Thu Apr 4 20:16:00 2013
Run Code Online (Sandbox Code Playgroud)您还可以at
从 STDIN传递命令:
$ at now + 1 min
warning: commands will be executed using /bin/sh
at> ls
Run Code Online (Sandbox Code Playgroud)
然后,按CtrlD退出at
外壳。该ls
命令将在一分钟内运行。
您可以以 的格式给出非常精确的时间[[CC]YY]MMDDhhmm[.ss]
,如
$ at -t 201412182134.12 < script.sh
Run Code Online (Sandbox Code Playgroud)
这将script.sh
在 2014 年 12 月 18 日的 21:34 和 12 秒运行脚本。因此,理论上,您可以at
在未来运行 5 秒。不过,这有点像用坦克打苍蝇,Hennes的建议更好。
您可以通过在后台启动 shell 或脚本来解决它。
例子:
/bin/sh -c "sleep 5 ; echo foo" & [1] 63791 > 此处为活动 shell 提示 foo 5 秒后输出出现。
归档时间: |
|
查看次数: |
41620 次 |
最近记录: |