我有一个bash脚本启动一个子进程,它不时崩溃(实际上,挂起)并没有明显的原因(闭源,所以我无能为力).因此,我希望能够在给定的时间内启动此过程,如果在给定的时间后没有成功返回,则将其终止.
有没有一种简单而强大的方法来实现使用bash?
P.S.:告诉我这个问题是否更适合服务器故障或超级用户.
解决方法:
(如下所示:
BASH FAQ entry #68: “How do I run a command, and have it abort (timeout) after N seconds?”)
如果您不介意下载某些内容,请使用timeout(sudo apt-get install timeout)并使用它:(大多数系统已安装它,否则使用sudo apt-get install coreutils)
timeout 10 ping www.goooooogle.com
如果您不想下载某些内容,请执行内部超时操作:
( 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 )
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。