DHCP 产生僵尸进程【原创】

   之前在做项目时,遇到板子运行一段时间后就死掉了,查看是内存不足了,怎么引起的呢,项目代码都经过检验了,后来通过问题排查,发现系统里面有很多DHCP的僵尸进程。

    项目由于使用串口功能,所以在启动脚本把程序放到了前台运行,相当于DHCP还是在一个父进程里面,下面出问题的原因: 当DHCP获取到ip后,会创建一个新进程把自己放到后台,这时候由于还是在一个shell里面,导致父进程僵死。

    解决办法:只让它 切一次进入后台,后面再获取IP后不再创建进程。

   修改代码:

 

static void client_background(void)

{

///modify for jiangshi code by zjf 2017.08.27

    static int time = 1;

    if(time == 1)

    {

        printf("client_background... firstime.. %d times...\n", time);

#if !BB_MMU

bb_error_msg("cannot background in uclinux (yet)");

/* ... mainly because udhcpc calls client_background()

 * in _the _middle _of _udhcpc _run_, not at the start!

 * If that will be properly disabled for NOMMU, client_background()

 * will work on NOMMU too */

#else

bb_daemonize(0);

logmode &= ~LOGMODE_STDIO;

/* rewrite pidfile, as our pid is different now */

write_pidfile(client_config.pidfile);

#endif

/* Do not fork again. */

client_config.foreground = 1;

client_config.background_if_no_lease = 0;

    }

    else

    {

        printf("--------------------------->\n");

        printf("client_background..... %d times...\n", time);

        printf("--------------------------->\n");

    }

    time ++;

    if(time >= 10000)

        time = 10;

 

 

}

如果`nm-dhcp-helper`进程占用高CPU或内的问题,你可以试以下方法来解决1. 重启Manager服务:首先试重启NetworkManager服务这可能会解决时的问题。可以命令来重启: ``` sudo restart NetworkManager ``2. 更新NetworkManager确保你的系统安装的NetworkManager是新版本。使用包管理器更新Manager,具体命令取决于你所使用的Linux发行版。 3. 检查网络配置:检查你的网络配置是否正确,特别是DHCP设置。确保DHCP服务器和配置正确,以便`nm-dhcp-helper`能够正常工作。你可以参考相关文档或联系网络管理员进行检查和调整。 4. 清理缓存和配置文件:有时,缓存和配置文件可能会导致进程占用高的问题。你可以尝试清理NetworkManager的缓存和配置文件,并重新启动服务。以下是一些常见的文件和目录: - 缓存文件夹:`/var/lib/NetworkManager` - 配置文件:`/etc/NetworkManager` 在清理之前,确保你备份了重要的配置文件。 5. 检查其他应用程序冲突:某些其他应用程序可能会与NetworkManager或`nm-dhcp-helper`产生冲突,导致资源占用过高。尝试暂时禁用或卸载其他可能与网络管理相关的应用程序,然后观察是否有改善。 6. 查看日志:查看NetworkManager和`nm-dhcp-helper`的日志文件,以获取更多关于问题的信息。你可以在`/var/log/`目录下找到相关的日志文件,并使用文本编辑器查看。 如果上述方法都没有解决问题,你可能需要进一步调查或寻求更高级的技术支持,如联系网络管理员或参考相关论坛或社区。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值