免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: 懂得太少
打印 上一主题 下一主题

如何获取所有当前打开文件的信息,如句柄、打开进程、用户? [复制链接]

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
11 [报告]
发表于 2003-07-03 09:22 |只看该作者

如何获取所有当前打开文件的信息,如句柄、打开进程、用户?

有个lsof的软件包。支持
           AIX 4.3.[23], 5L, and 5.1
            Apple Darwin 1.[23] and 1.4 for Power Macintosh systems
            BSDI BSD/OS 4.1 for Intel-based systems
            DEC OSF/1, Digital UNIX, Tru64 UNIX 4.0, and 5.[01]
            FreeBSD 4.[2345] and 5.0 for Intel-based systems
            HP-UX 11.00 and 11.11
            Linux 2.1.72 and above for Intel-based systems
            NetBSD 1.5 for Alpha, Intel, and SPARC-based systems
            NEXTSTEP 3.[13] for NEXTSTEP architectures
            OpenBSD 2.[89] and 3.0 for Intel-based systems
            OPENSTEP 4.x
            Caldera OpenUNIX 8
            SCO OpenServer Release 5.0.[46] for Intel-based systems
            SCO UnixWare 7.1.1 for Intel-based systems
            Solaris 2.6, 7, 8, and 9 BETA-Refresh

saloris: sunfreeware.com
aix: http://www-1.ibm.com/servers/aix/products/aixos/linux/download.html

hpux: http://hpux.cs.utah.edu/hppd/hpux/Sysadmin/lsof-4.67/

可以直接用二进制包下载。

至于其它的os,你可以用源码方式安装

论坛徽章:
0
12 [报告]
发表于 2003-07-04 09:54 |只看该作者

如何获取所有当前打开文件的信息,如句柄、打开进程、用户?

看过了LSOF的源码:
大致是通过访问/dev/kmem 和 /dev/mem内存镜像来访问当天的所有进程信息,通过getproc 和 getuser分别取到 进程和用户的结构再从中找到对应的句柄及NODE节点,不过还差一步没有再根据节点来找到并显示文件名。 看来需要改进一下。
不过还是有小小缺陷,因为上述两个文件是有权限管理的,只有ADMIN才能访问的到,一般用户有些难处理。

不过,还是非常谢谢gadfly,帮了大忙了!

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
13 [报告]
发表于 2003-07-04 12:32 |只看该作者

如何获取所有当前打开文件的信息,如句柄、打开进程、用户?

呵呵,还是你自己努力的结果。

看lsof,是显示打开的文件名呀。

在linux,普通用户是可以正常使用这个命令的。但是我看kmem,mem,普通用户没有权限访问,但是lsof也没有setuid,不知道如何做到的?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP