在Bash中给定超时后如何杀死子进程?

格雷格:

我有一个bash脚本,该脚本启动一个子进程,该子进程有时会崩溃(实际上是挂起),并且没有明显的原因(封闭源代码,因此我无能为力)。结果,我希望能够在给定的时间内启动此过程,如果在给定的时间之后未成功返回,则将其终止。

有没有简单强大的方法可以使用bash来实现这一目标?

PS:请告诉我这个问题是否更适合serverfault或超级用户。

伊格纳西奥·巴斯克斯(Ignacio Vazquez-Abrams):

(如下所示:BASH常见问题解答条目68:“如何运行命令,并在N秒后将其中止(超时)?”

如果您不介意下载内容,请使用timeoutsudo 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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Linux

如何在Bash中杀死子进程?

来自分类Dev

Bash 如何在给定的超时后终止 wget 进程?

来自分类Dev

超时后杀死多个子进程的子进程?

来自分类Dev

超时而不会杀死bash中的进程

来自分类Dev

Python子进程杀死超时

来自分类Dev

父进程终止后如何杀死所有子进程?

来自分类Dev

如何杀死子进程

来自分类Dev

如何正确杀死bash中的进程

来自分类Dev

仅杀死父进程,不杀死bash中的子进程和父进程

来自分类Dev

杀死bash和子进程

来自分类Dev

如何杀死由Java中的进程启动的子进程?

来自分类Dev

杀死子进程后终端中的不可见文本

来自分类Dev

了解subprocess.TimeoutExpired,想要在发生超时后杀死子进程

来自分类Dev

在Bash中创建新进程后杀死错误

来自分类Dev

如何杀死npm子进程

来自分类Dev

如何杀死 devops 上的进程(最好是超时)

来自分类Dev

如何同时杀死进程和子进程?

来自分类Dev

杀死进程后,如何在Python中清理文件对象?

来自分类Linux

如何干净地杀死python中的子进程

来自分类Dev

如何防止 SIGINT 信号杀死 Java 中的子进程

来自分类Dev

在给定的实际运行时间后,如何在Bash中终止进程?

来自分类Dev

如何避免杀死bash脚本中的错误进程?

来自分类Dev

使用bash脚本杀死子进程

来自分类Dev

如何使vala子进程超时?

来自分类Dev

Python中的子进程超时

来自分类Dev

杀死bash脚本不会杀死子进程

来自分类Dev

超时后如何杀死Elixir过程

来自分类Dev

创建子进程并在调用该进程后将其杀死

来自分类Dev

在给定时间后杀死nohup进程