gpt4 book ai didi

linux - 操作系统能否重新启动陷入死循环的进程?

转载 作者:IT王子 更新时间:2023-10-29 01:23:34 27 4
gpt4 key购买 nike

前几天,在Linux服务器上做测试时,我们观察到在某些情况下,一个进程可能会死掉,然后又重新启动。检查代码后发现是死循环导致的。

这引起了我的好奇,这个进程是怎么挂了然后又启动的?是OS检测判断异常进程并重启?如果是,它是如何工作的?

最佳答案

假设您无法修复您的代码...让我们忽略所有疯狂的选项,例如附加 gdb通过脚本左右。

您可以检查 CPU 使用率(大多数 意外 无限循环我已经使用了 100% 的 CPU 数小时:)),或者(更有可能的选项)使用 strace 检查软件现在正在做什么并实现您自己的签名跟踪(如果这 20 个 API 重复 20 次让我们假设无限循环左右)。

例如:

#!/bin/bash
strace -p`cat your_app.pid` | ./your_signature_evaluator
# Or
strace -p12345 | ./your_signature_evaluator

至于自动系统识别...程序在不受控制地循环调用后崩溃似乎很正常(例如 malloc() 直到您耗尽内存,打开文件...),但我已经(并纠正我如果我错了请评论)从未见过系统(内核)重新启动应用程序。我想你有:

  • 在程序中有条件(信号处理等)有助于恢复
  • 您正在运行看门狗(每 20 秒检查一次 <pid> 是否正在运行,如果没有启动新实例)
  • 您正在运行提供服务/程序配置的发行版,如果停止则重新启动

但我真的怀疑 Linux 是否会对您的应用程序本身如此友好。

关于linux - 操作系统能否重新启动陷入死循环的进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16249785/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com