lsof移植
2015-11-23 11:29
531 查看
之前参与的一个项目遇到过一个问题,我们的产品在拷机时发现:连续开机2天就会死机。这个问题交给了我来解决。
我查了几个小时代码,并没有发现明显的异常。好在我们的产品使用的Linux裁剪版系统,我想到可以用top命令来看内存变化。果然,经过2个小时的观察,发现内存是有规律减小的。因为我们的产品在运行过程中会涉及到一些文件的操作,所以感觉可能和这个有关。
运行lsof命令,提示”command not found”, 显然被裁掉了。于是决定自己移植一个。
最后发现,果然有个文件被多次打开,直到内存耗尽。
解压:$ 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源码路径
配置Makefile
交叉编译工具: CC= mips-linux-gnu-gcc
设置小端: CFGF选项添加: -EL
设置linux版本号:
-DLSOF_VSTR=\”2.6.28.9\”
“2.6.28.9”是在产品上运行$uname –r得到的
编译:make, 生成lsof
所有打开的文件
$ lsof -i23
查看端口23(telnet)
$ lsof bin/sh
查看打开bin/sh的所有进程
$ lsof /dev/malloc
查看查看打开/dev/malloc的所有进程
我查了几个小时代码,并没有发现明显的异常。好在我们的产品使用的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源码路径
配置Makefile
交叉编译工具: CC= mips-linux-gnu-gcc
设置小端: CFGF选项添加: -EL
设置linux版本号:
-DLSOF_VSTR=\”2.6.28.9\”
“2.6.28.9”是在产品上运行$uname –r得到的
编译:make, 生成lsof
lsof用法
运行lsof之后各字段说明
字段 | 含义 |
---|---|
COMMAND | 进程的名称 |
PID | 进程标识符 |
USER | 进程所有者 |
FD | 文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等 |
TYPE | 文件类型,如DIR、REG等 |
DEVICE | 磁盘 |
SIZE | 文件的大小 |
NODE | 索引节点 |
NAME | 打开的文件 |
使用举例
$ lsof所有打开的文件
$ lsof -i23
查看端口23(telnet)
$ lsof bin/sh
查看打开bin/sh的所有进程
$ lsof /dev/malloc
查看查看打开/dev/malloc的所有进程
相关文章推荐
- Linux socket 初步
- linux lsof详解
- linux 文件权限
- Linux 执行数学运算
- 10 篇对初学者和专家都有用的 Linux 命令教程
- Linux 与 Windows 对UNICODE 的处理方式
- Ubuntu12.04下QQ完美走起啊!走起啊!有木有啊!
- 解決Linux下Android开发真机调试设备不被识别问题
- 运维入门
- 运维提升
- Linux 自检和 SystemTap
- Ubuntu Linux使用体验
- c语言实现hashmap(转载)
- Linux 信号signal处理机制
- linux下mysql添加用户
- Scientific Linux 5.5 图形安装教程
- 基于 Linux 集群环境上 GPFS 的问题诊断
- 谁是桌面王者?Win PK Linux三大镇山之宝