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/OFF

NODE

NAME           文件路径

样例输出:

COMMAND     PID   TID       USER   FD      TYPE             DEVICE SIZE/OFF       NODE NAME
init          1             root  cwd       DIR                8,1     4096          2 /
init          1             root  rtd       DIR                8,1     4096          2 /
init          1             root  txt       REG                8,1   265848    2621507 /sbin/init
init          1             root  mem       REG                8,1    47712    3149879 /lib/x86_64-linux-gnu/libnss
_files-2.19.so

查看某个文件/目录的使用进程,直接在命令后跟文件/目录名即可:

# lsof server_time
COMMAND     PID USER  FD   TYPE DEVICE SIZE/OFF    NODE NAME
server_ti 20999  hgf txt    REG    8,1     9190 1442691 ./server_time
# lsof /home/hgf/net
COMMAND     PID USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
bash      10075  hgf  cwd    DIR    8,1     4096 1442896 /home/hgf/net
bash      15706  hgf  cwd    DIR    8,1     4096 1442896 /home/hgf/net
bash      18324  hgf  cwd    DIR    8,1     4096 1442896 /home/hgf/net
bash      18573  hgf  cwd    DIR    8,1     4096 1442896 /home/hgf/net
sudo      20730 root  cwd    DIR    8,1     4096 1442896 /home/hgf/net
su        20740 root  cwd    DIR    8,1     4096 1442896 /home/hgf/net
bash      20741 root  cwd    DIR    8,1     4096 1442896 /home/hgf/net
server_ti 20999  hgf  cwd    DIR    8,1     4096 1442896 /home/hgf/net
lsof      21814 root  cwd    DIR    8,1     4096 1442896 /home/hgf/net
lsof      21815 root  cwd    DIR    8,1     4096 1442896 /home/hgf/net

查看已删除文件

这里的已删除文件指的是文件被某些进程打开,但磁盘上该文件已经被删除了(目录列出的结果上来看)。这些文件实际还是存在于磁盘上,可以通过使用lsof来找出这些文件

# lsof|grep deleted
init          1             root   10w      REG                8,1      969    2360289 /var/log/upstart/systemd-logind.log.1 (deleted)
init          1             root   27w      REG                8,1     1406    2360292 /var/log/upstart/modemmanager.log.1 (deleted).........
server_ti 20999              hgf  txt       REG                8,1     9190    1442691 /home/hgf/net/server_time (deleted)

此时我们可以从/proc文件系统中在对应的PID目录下复制出程序的文件,

[email protected]:/proc/20999# ll
total 0
dr-xr-xr-x   9 hgf  hgf  0 May  7 10:56 ./
dr-xr-xr-x 262 root root 0 Feb  5 00:26 ../
dr-xr-xr-x   2 hgf  hgf  0 May  7 11:09 attr/
-rw-r--r--   1 hgf  hgf  0 May  7 11:09 autogroup
-r--------   1 hgf  hgf  0 May  7 11:09 auxv
-r--r--r--   1 hgf  hgf  0 May  7 11:09 cgroup
--w-------   1 hgf  hgf  0 May  7 11:09 clear_refs
-r--r--r--   1 hgf  hgf  0 May  7 11:09 cmdline
-rw-r--r--   1 hgf  hgf  0 May  7 11:09 comm
-rw-r--r--   1 hgf  hgf  0 May  7 11:09 coredump_filter
-r--r--r--   1 hgf  hgf  0 May  7 11:09 cpuset
lrwxrwxrwx   1 hgf  hgf  0 May  7 10:56 cwd -> /home/hgf/net/
-r--------   1 hgf  hgf  0 May  7 11:09 environ
lrwxrwxrwx   1 hgf  hgf  0 May  7 10:56 exe -> /home/hgf/net/server_time (deleted)
dr-x------   2 hgf  hgf  0 May  7 10:56 fd/
...

[email protected]:/proc/20999# cp exe ~/

如果是程序打开的一个文件而不是程序本身,则可以在fd目录中找到对应的描述符编号

时间: 2024-11-24 13:28:15

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

linux - lsof 命令最佳实践

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

牛逼的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

Linux命令学习积累:lsof命令

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