当前位置: 技术问答>linux和unix
linux 的lsof命令是不是有问题
来源: 互联网 发布时间:2016-11-03
本文导语: 本帖最后由 laoshizhuce 于 2011-01-05 19:27:29 编辑 新接触了一个命令,甚为不理解 总结了网上关于lsof命令的主要用法: 1. lsof abc.txt 显示开启文件abc.txt的进程 2. lsof -i :22 知道22端口现在运行什么程序 3. lsof -c abc ...
总结了网上关于lsof命令的主要用法:
1. lsof abc.txt 显示开启文件abc.txt的进程
2. lsof -i :22 知道22端口现在运行什么程序
3. lsof -c abc 显示abc进程现在打开的文件
4. lsof -g gid 显示归属gid的进程情况
5. lsof +d /usr/local/ 显示目录下被进程开启的文件
6. lsof -p 1000 (查看进程ID为1000的进程打开的文件)
我试了好几次,发现1,5和6的结果均不准确,其他的准确程度不知
譬如说我用gedit打开abc.txt,
但lsof abc.txt没有任何信息输出(当然abc.txt要带绝对路径),
lsof abc.txt所在的目录也没有任何信息
lsof -p 同样找不到关于abc.txt的信息
请高手们分析下原因
|
文件也一样啊, open()程序不close(),不退出。lsof就可以看到了
|
实践出真知
|
也许是因为gedit 的处理方式,它可能是直接创建了一个副本。
lz试试直接用vi 打开abc.txt ..
lz试试直接用vi 打开abc.txt ..
|
它查看的是当前打开该文件的进程,gedit 打开文件后,读出数据后,立刻就又关闭了这个文件,他这个过程很快。当然你可以找个几十M的文本文件,用gedit打开 时,再用lsof查看。
你要想看目录的使用情况,实际上
lsof +d /usr/bin/
这样使能看出来的。
|
实际上,lsof主要是查询那个进程正占用那些资源,或则那个资源正被那些进程占用,而不是追查那个进程占用过那些资源,或则那个资源被那些进程占用过。
|
你又那个程序再执行着,你就看那个文件就可以了,执行程序,也是要打开那个文件,读取数据后再执行数据得。