Linux怎么创建无限循环程序,linux – 操作系统可以重启一个陷入无限循环的进程吗?...

前几天,在Linux服务器上进行测试时,我们观察到在某些情况下,一个进程可能会死亡,然后再次启动.检查代码后,我们发现它是由无限循环引起的.

这引起了我的好奇心,这个过程是如何死亡然后开始的?操作系统是否检测并确定异常进程并重新启动?如果是,那怎么办?

解决方法:

假设您将无法修复代码……让我们忽略所有疯狂的选项,例如通过脚本附加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(),直到你耗尽内存,打开文件……)似乎很正常,但我已经(并且如果我在评论中纠正我) “我错了”从未见过系统(内核)重启应用程序.我想你要么:

>在程序内部有条件(信号处理,无论如何),有助于恢复

>你正在运行一个看门狗(检查< pid>正在运行,如果没有启动新实例,则每20秒检查一次)

>如果已停止,您正在运行提供服务/程序配置并重启的分发

但我真的怀疑Linux对你自己的应用程序是如此的好.

标签:unix,linux

来源: https://codeday.me/bug/20190625/1284629.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值