init.rc脚本的特性和dhcpcd的程序特性导致内存耗尽
init进程会周期性检查所有由init启动的service服务进程, 当init通过PID发现由init创建的该服务进程的PID不存在之后(被手工kill掉或者程序fork()之后,关闭了父进程),那么init进程 会再次启动[luther.gliethttp].
原init.rc脚本
...
service dhcpcd /system/bin/dhcpcd eth0
disabled
...
运行一段时间之后,通过ps发现dhcpcd一直在增加,最后耗尽了所有内存,使得系统运行缓慢.
原因:在于dhcpcd程序使用了fork(),然后关闭掉父进程,子进程进入daemon,但是android的init程序周期性检查所有 service发现,被init创建出来的service的PID消失了,于是将再次start service启动dhcpcd,其实这时dhcpcd是以子进程的身份运行在daemon后台,所以导致dhcpcd程序一直持续不断的被init进程 创建.
临时解决方案:
修改后脚本
...
service dhcpcd /system/bin/dhcpcd eth0
disabled
oneshot //表示init进程仅对该service启动一次[luther.gliethttp]
init.rc脚本的特性和dhcpcd的程序特性导致内存耗尽
转载![](https://ucenter.51cto.com/images/noavatar_middle.gif)
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Android init.rc BOOTCLASSPATH
BOOTCLASSPATH 不添加jar包路径,系统启动后将无法找到自
移动开发 java jar android linux