【发布时间】:2015-06-07 01:44:19
【问题描述】:
我需要在OpenWRT中执行一个超时的命令,但是似乎默认没有安装命令超时,也不能使用opkg安装。我知道我可以解决这个问题(使用命令 &; sleep $DELAY; kill $!),但我希望更正确地执行此操作,而不会在命令在超时之前完成的情况下尝试杀死进程.
【问题讨论】:
我需要在OpenWRT中执行一个超时的命令,但是似乎默认没有安装命令超时,也不能使用opkg安装。我知道我可以解决这个问题(使用命令 &; sleep $DELAY; kill $!),但我希望更正确地执行此操作,而不会在命令在超时之前完成的情况下尝试杀死进程.
【问题讨论】:
是的,你可以在 openWRT 上安装超时
$ opkg update
$ opkg install coreutils-timeout
$ timeout 2 sleep 10
这个已经用AA测试过了,很确定也可以用BB。
【讨论】:
简而言之:这是不可能的。我必须使用sleep && kill。
【讨论】:
timeout 是一个 shell 命令,所以它在子 shell 中执行
timeout 6 sleep 20 如果在直接 shell 终端中执行,则可以工作,但如果从 shell 脚本启动,相同的命令将无法工作。
所以要在 shell 脚本中运行超时,像这样使用
out="$(timeout 6 sleep 20)"
或者
echo "$(timeout 10 sleep 20)"
这将在一个子shell中运行你的超时和你的命令
【讨论】: