之前参与的一个项目遇到过一个问题,我们的产品在拷机时发现:连续开机2天就会死机。这个问题交给了我来解决。
我查了几个小时代码,并没有发现明显的异常。好在我们的产品使用的Linux裁剪版系统,我想到可以用top命令来看内存变化。果然,经过2个小时的观察,发现内存是有规律减小的。因为我们的产品在运行过程中会涉及到一些文件的操作,所以感觉可能和这个有关。
运行lsof命令,提示”command not found”, 显然被裁掉了。于是决定自己移植一个。
最后发现,果然有个文件被多次打开,直到内存耗尽。
lsof是什么
* lsof -- list open files
移植过程
- 在这里下载源码lsof_4.76.tar.gz
- 解压:$ tar zxvf lsof_4.76.tar.gz
- 进入目录lsof_4.76
- 配置kernel,运行configure
- LINUX_KERNEL=/home/Smith/Kernel/2.6.28.9 LSOF_VERS=2142 ./Configure linux
* 上面的/home/Smith/Kernel/2.6.28.9是产品的linux kernel源码路径
- LINUX_KERNEL=/home/Smith/Kernel/2.6.28.9 LSOF_VERS=2142 ./Configure linux
- 配置Makefile
- 交叉编译工具: CC&#