Linux内核调试之lsof命令和fuser命令 |
您所在的位置:网站首页 › inputfilesystemstat › Linux内核调试之lsof命令和fuser命令 |
lsof命令简介: lsof(list open files)是一个列出当前系统打开文件的工具。在Linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以,lsof的功能很强大。一般root用户才能执行lsof命令,普通用户可以看见/usr/sbin/lsof命令,但是普通用户执行会显示“permission denied”。因此通过lsof工具能够查看这个列表对系统监测以及排错将是很有帮助的。 在终端下输入lsof即可显示系统打开的文件,因为 lsof 需要访问核心内存和各种文件,所以必须以 root 用户的身份运行它才能够充分地发挥其功能。 每行显示一个打开的文件,若不指定条件默认将显示所有进程打开的所有文件。lsof输出各列信息的意义如下: COMMAND:进程的名称 PID:进程标识符 USER:进程所有者 FD:文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等 TYPE:文件类型,如DIR、REG等 DEVICE:指定磁盘的名称 SIZE:文件的大小 NODE:索引节点(文件在磁盘上的标识) NAME:打开文件的确切名称
关于使用lsof指令配合Linux内核调试的用法如下: 1.sudo su [切换到root] 2.打开一个终端,输入:hexdump /dev/input/event2 【这里event2 是鼠标事件】 3.打开另一个终端,输入:lsof /dev/input/event2 lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs Output information may be incomplete. COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME Xorg 1226 root 20u CHR 13,66 0t0 208 /dev/input/event2 hexdump 4526 root 0r CHR 13,66 0t0 208 /dev/input/event2 这里,可以看到打开文件/dev/input/event2对应的进程有Xorg 、 hexdump, 以及对应的PID号。这样,就可以很方便地找到一个被打开的设备文件对应的应用程序。如下:
另外: lsof cc.txt 显示开启文件cc.txt的进程 lsof 目录名 查找谁在使用文件目录系统 lsof -i :22 知道22端口被哪个进程占用 lsof -c a.out 显示a.out进程现在打开的文件 lsof -g gid 显示归属gid的进程情况 lsof -n 不将IP转换为hostname,缺省是不加上-n参数 lsof -p 12 看进程号为12的进程打开了哪些文件 lsof -u username 查看用户打开哪些文件 lsof -i @192.168.1.111 查看远程已打开的网络连接(连接到192.168.1.111) -------------------------------------- lsof -i 用以显示符合条件的进程情况 语法: lsof -i[46] [protocol][@hostname|hostaddr][:service|port] 46 -> IPv4 or IPv6 protocol -> TCP or UDP hostname -> Internet host name hostaddr -> IPv4位置 service -> /etc/service中的 service name (可以不只一个) port -> 端口号 (可以不只一个) -------------------------------------- lsof +|-r [t] 控制lsof不断重复执行,缺省是15s刷新 -r,lsof会永远不断的执行,直到收到中断信号 +r,lsof会一直执行,直到没有档案被显示 例子:不断查看目前ftp连接的情况:lsof -i [email protected]:ftp -r
fuser命令简介: fuser 是Linux上的一个命令,用以由文件或设备去找出使用文件、或设备的进程。该命令列出本地进程的进程号,那些本地进程使用File 参数指定的本地或远程文件。对于阻塞特别设备,此命令列出了使用该设备上任何文件的进程。 用途 使用文件或文件结构识别进程。[1] 语法 fuser [ -c | -d | -f ] [ -k ] [ -u ] [ -x ] [ -V ]文件 … 选项 -c 包含 File的文件系统中关于任何打开的文件的报告。 -d 暗示使用了 -c 和 -x 标志。关于任何与文件系统(自父目录删除的)无链接的打开文件的报告。当与 -V 标志一起使用时,它也会报告被删除文件的节点号和大小。 -f 仅对文件的打开实例报告。 -k 将 SIGKILL 信号发送到每个本地进程。仅有 root 用户能终止另一用户的进程。 -u 为进程号后圆括号中的本地进程提供登录名。 -V 提供详细输出。 -x 与 -c 或 -f 连用,报告除标准 fuser 输出以外的可执行的和可载入的对象。 示例 要列出使用 /etc/passwd 文件的本地进程的进程号,请输入: fuser /etc/passwd 要列出使用 /etc/filesystems 文件的进程的进程号和用户登录名,请输入: fuser -u /etc/filesystems 要终止使用给定文件系统的所有进程,请输入: fuser -k -x -u -c /dev/hd1 或者 fuser -kxuc /home
参考: http://blog.csdn.net/xifeijian/article/details/9088137 http://blog.csdn.net/dc3120/article/details/39056393
|
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |