如果命令没有在X时间内完成,会发生冲击吗?


13

我正在尝试运行类似的东西:

sudo dhclient $wifi || otherFunction

问题是当dhclient失败时,它只是挂起而不是抛出错误。

我该如何重写上面的dhclient内容,otherFunction如果dhclient在60秒内未完成操作会被杀死并被调用?

Answers:


13

您的标记可以解决所有问题:

sudo timeout 60 dhclient $wifi || otherFunction

一个例子:

sudo timeout 3 sleep 5 || echo finished early

它使用Linux上GNU coreutils软件包提供的超时实用程序


2
不幸的是,无法在MacOS上运行
Alexander Mills


如果要专门检查是否timeout杀死命令(而不是由于其他原因导致命令失败),请检查退出状态
124。– muru


2

使用timeout打包gtimeoutcoreutils端口brew

brew install coreutils
gtimeout --help

这将与/usr/local/bin您一起使用PATH。如果要使用timeout原始名称,请添加/usr/local/opt/coreutils/libexec/gnubin到中PATH

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.