我有一个 bash 脚本,它启动一个子进程,该进程时不时地崩溃(实际上是挂起),而且没有明显的原因(闭源,所以我对此无能为力)。因此,我希望能够在给定的时间内启动此进程,如果在给定的时间内没有成功返回,则将其终止。
有没有simple and robust使用 bash 来实现这一点的方法?
(如以下所示:BASH 常见问题解答条目 #68:“如何运行命令,并让它在 N 秒后中止(超时)?” http://mywiki.wooledge.org/BashFAQ/068)
您可以使用timeout
*:
timeout 10 ping www.goooooogle.com
不然怎么办timeout
内部执行:
( cmdpid=$BASHPID; (sleep 10; kill $cmdpid) & exec ping www.goooooogle.com )
如果您想为较长的 bash 代码设置超时,请使用第二个选项:
( cmdpid=$BASHPID;
(sleep 10; kill $cmdpid) \
& while ! ping -w 1 www.goooooogle.com
do
echo crap;
done )
* 它包含在 GNU Coreutils 8+ 中,因此大多数当前的 Linux 系统已经安装了它,否则您也可以安装它,例如sudo apt-get install timeout
or sudo apt-get install coreutils
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)