Linux lsof命令使用小结

lsof(list open files)是一个列出当前系统打开文件的工具。在Linux环境下,任何事物都是以文件的形式存在,通过文件不仅可以访问常规数据,还可以访问网络连接和硬件。所以,如传输控制协议(TCP)和用户数据报协议(UDP)套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对系统监测以及排错是很有帮助的。

图1:lsof示例

在终端下输入lsof即可显示系统打开的文件,因为lsof需要访问核心内存和各种文件,所以必须以root用户的身份运行它才能够充分地发挥功能。

如上图1是一个lsof的输出例子,每行显示一个打开的文件,若不指定默认显示所有进程打开的所有文件。

lsof输出各列信息的意义如下:

COMMAND:进程的名称

PID:进程标识符

USER:进程所有者

FD:文件描述符,应用程序通过文件描述符识别该文件,如cwd、txt等。

TYPE:文件类型,如:DIR、REG等。

DEVICE:指定磁盘的名称

SIZE:文件的大小

NODE:索引节点(文件在磁盘上的标识)

NAME:打开文件的确切名称

FD列中的文件描述符cwd值表示应用程序的当前工作目录,这是该应用程序启动的目录,除非它本身对这个目录进行更改,txt类型的文件是程序代码,如应用程序二进制文件本身或共享库。其次数值标识应用程序的文件描述符,这是打开该文件时返回的一个整数。与 FD 列相比,Type 列则比较直观。文件和目录分别称为REG和DIR。而CHR和BLK,分别表示字符和块设备;或者UNIX、FIFO和IPv4,分别表示UNIX域套接字、先进先出(FIFO)队列和网际协议(IP)套接字。

下面是一些实用的命令:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

lsof `which httpd` //那个进程在使用apache的可执行文件

lsof /etc/passwd //那个进程在占用/etc/passwd

lsof /dev/hda6 //那个进程在占用hda6

lsof /dev/cdrom //那个进程在占用光驱

lsof -c sendmail //查看sendmail进程的文件使用情况

lsof -c courier -u ^zahn //显示出那些文件被以courier打头的进程打开,但是并不属于用户zahn

lsof -p 30297 //显示那些文件被pid为30297的进程打开

lsof -D /tmp 显示所有在/tmp文件夹中打开的instance和文件的进程。但是symbol文件并不在列

 

lsof -u1000 //查看uid是100的用户的进程的文件使用情况

lsof -utony //查看用户tony的进程的文件使用情况

lsof -u^tony //查看不是用户tony的进程的文件使用情况(^是取反的意思)

lsof -i //显示所有打开的端口

lsof -i:80 //显示所有打开80端口的进程

lsof -i -U //显示所有打开的端口和UNIX domain文件

lsof -i [email protected][url]www.akadia.com:123 //显示那些进程打开了到www.akadia.com的UDP的123(ntp)端口的链接

lsof -i [email protected]:ftp -r //不断查看目前ftp连接的情况(-r,lsof会永远不断的执行,直到收到中断信号,+r,lsof会一直执行,直到没有档案被显示,缺省是15s刷新)

lsof -i [email protected]:ftp -n //lsof -n 不将IP转换为hostname,缺省是不加上-n参数

可以使用lsof -i:端口号来查看当前有哪些程序占用了某个端口。

时间: 2024-11-07 06:56:49

Linux lsof命令使用小结的相关文章

[转贴]linux lsof命令详解

https://www.cnblogs.com/sparkbj/p/7161669.html 简介 lsof(list open files)是一个列出当前系统打开文件的工具.在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件.所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口.因为应用程序打

Linux lsof 命令以及恢复删除的文件

1.简介 lsof(list open files)是一个列出当前系统打开文件的工具.在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件.所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口.因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列

Linux lsof命令详解

简介 lsof(list open files)是一个列出当前系统打开文件的工具.在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件.所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口.因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对

Linux : lsof 命令

lsof即list open files的缩写,在Linux和其他Unix上都由,Mac XOS上也是 查看打开文件/目录及对应进程 COMMAND 进程命令行字符串 PID 进程ID USER 用户 FD txt(进程的程序文件), cwd(进程所在的当前目前), mem(), FDIDuwr 进程内该文件的打开表示符id, 其后的字母表示操作模式 TYPE REG(一般文件), DIR(目录), CHR(字符设备文件),FIFO(管道),IPv4(IPv4网络套接字) DEVICE SIZE

linux - lsof 命令最佳实践

lsof简介 lsof(list open files)是一个列出当前系统打开文件的工具.在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件.所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口.因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这

linux常用命令实战小结

inux上的文件管理类命令:cd ls mkdir touch pwd tree chown chgrp chmod rm cd 命令切换工作目录至dirnamels 列出当前目录下的文件 mkdir 创建文件夹touch 创建文件pwd 显示当前工作目录tree 显示目录的树形结构chown 更改文件的所有者chgrp 更改所有组 chmod 更改文件权限rm 删除相关实战实例创建/tmp/a1, /tmp/a2, /tmp/a1/a, /tmp/a1/b,在/tmp目录下创建目录:x_y,

牛逼的lsof命令!!!

linux lsof命令详解 简介 lsof(list open files)是一个列出当前系统打开文件的工具.在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件.所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口.因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过

Linux部分命令的总结(五)

1.Linux ps命令:查看正在运行的进程 ps 命令是最常用的监控进程的命令,通过此命令可以查看系统中所有运行进程的详细信息. ps 命令的基本格式如下: [[email protected] ~]# ps aux #查看系统中所有的进程,使用 BS 操作系统格式 [[email protected] ~]# ps -le #查看系统中所有的进程,使用 Linux 标准命令格式 选项: a:显示一个终端的所有进程,除会话引线外: u:显示进程的归属用户及内存的使用情况: x:显示没有控制终端

Linux系统下强大的lsof命令使用宝典

lsof命令简介: lsof(list open files)是一个列出当前系统打开文件的工具.在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件.所以,lsof的功能很强大.一般root用户才能执行lsof命令,普通用户可以看见/usr/sbin/lsof命令,但是普通用户执行会显示“permission denied”.因此通过lsof工具能够查看这个列表对系统监测以及排错将是很有帮助的. usage: [-?abhlnNoOPRstUv