lsof - list open files
lsof命令用于查看你进程打开的文件,进程打开的端口(TCP、UDP),找回/恢复删除的文件,打开文件的进程。
语法:
lsof [选项] [文件]
常用选项:
-c <进程名> 列出指定进程所打开的文件
+D <目录> 递归列出目录下被打开的文件
-i <条件> 列出符号条件的进程(4、6、协议、:端口、@ip)
-n <目录> 列出使用NFS的文件
-p <进程号> 列出指定进程号所打开的文件
-u s 列出login name或UID为s的程序
实例
1. 在没有任何参数时,显示当前系统已经打开的正在使用的所有文件
[root@oldboy ~]# lsof|more -10 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME init 1 root cwd DIR 8,3 4096 2 / init 1 root rtd DIR 8,3 4096 2 / init 1 root txt REG 8,3 150352 139708 /sbin/init init 1 root mem REG 8,3 65928 132072 /lib64/libnss_fil es-2.12.so init 1 root mem REG 8,3 1926480 155325 /lib64/libc-2.12. so init 1 root mem REG 8,3 93320 155348 /lib64/libgcc_s-4 .4.7-20120601.so.1 --More--
显示的内容分析:
1. 名称详解
- COMMAND:进程名称
- PID:进程标识符
- TID:线程ID
- USER:所有者
- FD:文件描述符
- TYPE:文件类型
- DEVICE:磁盘名称
- SIZE/OFF:文件大小
- NODE:索引节点
- NAME:文件名称
2. FD(文件描述符)详解
- cwd:应用程序的当前工作目录,这是该应用程序启动的目录,除非它本身对这个目录进行修改
- txt:该类型的文件是程序代码,如应用程序二进制文件本身或共享库
- rtd:根目录
- 0:表示标准输出
- 1:表示标准输入
- 2:表示标准错误
3.文件类型详解
- DIR:目录
- CHR:字符类型
- BLK:块设备类型
- UNIX:UNIX域套接字
- FIFO:先进先出(FIFO)队列
- IPv4:国际协议(IP)套接字
2. 查看指定文件相关的进程信息,即找出此文件的进程
[root@oldboy ~]# lsof /bin/bash COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME mysqld_sa 1298 root txt REG 8,3 941720 134686 /bin/bash bash 5979 root txt REG 8,3 941720 134686 /bin/bash bash 5990 root txt REG 8,3 941720 134686 /bin/bash
3. 递归查询某个目录的文件信息
[root@oldboy share]# lsof +D /usr/local/share COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME bash 5990 root cwd DIR 8,3 4096 129846 /usr/local/share lsof 6695 root cwd DIR 8,3 4096 129846 /usr/local/share lsof 6696 root cwd DIR 8,3 4096 129846 /usr/local/share
4. 不使用+D选项得到与某个文件有关的进程信息的方法
[root@oldboy share]# lsof |grep '/usr/local/share' bash 5990 root cwd DIR 8,3 4096 129846 /usr/local/share lsof 6704 root cwd DIR 8,3 4096 129846 /usr/local/share grep 6705 root cwd DIR 8,3 4096 129846 /usr/local/share lsof 6706 root cwd DIR 8,3 4096 129846 /usr/local/share [root@oldboy share]#
5. 列出某个用户打开的所有文件相关的进程信息
[root@oldboy share]# lsof -u root|wc -l 508 [root@oldboy share]# lsof -u root|more -10 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME init 1 root cwd DIR 8,3 4096 2 / init 1 root rtd DIR 8,3 4096 2 / init 1 root txt REG 8,3 150352 139708 /sbin/init init 1 root mem REG 8,3 65928 132072 /lib64/libnss_file s-2.12.so init 1 root mem REG 8,3 1926480 155325 /lib64/libc-2.12.s o init 1 root mem REG 8,3 93320 155348 /lib64/libgcc_s-4. 4.7-20120601.so.1
6. 使用不同方法列出与程序有关的文件
方法一:使用-c选项
[root@oldboy share]# lsof -c bash COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME bash 5979 root cwd DIR 8,3 4096 129797 /root bash 5979 root rtd DIR 8,3 4096 2 / bash 5979 root txt REG 8,3 941720 134686 /bin/bash bash 5979 root mem REG 8,3 157072 155324 /lib64/ld-2.12.so bash 5979 root mem REG 8,3 22536 141851 /lib64/libdl-2.12.so bash 5979 root mem REG 8,3 1926480 155325 /lib64/libc-2.12.so bash 5979 root mem REG 8,3 134792 151195 /lib64/libtinfo.so.5.7 bash 5979 root mem REG 8,3 65928 132072 /lib64/libnss_files-2.12.so bash 5979 root 0u CHR 4,1 0t0 5614 /dev/tty1 bash 5979 root 1u CHR 4,1 0t0 5614 /dev/tty1 bash 5979 root 2u CHR 4,1 0t0 5614 /dev/tty1 bash 5979 root 255u CHR 4,1 0t0 5614 /dev/tty1 bash 5990 root cwd DIR 8,3 4096 129846 /usr/local/share bash 5990 root rtd DIR 8,3 4096 2 / bash 5990 root txt REG 8,3 941720 134686 /bin/bash bash 5990 root mem REG 8,3 157072 155324 /lib64/ld-2.12.so bash 5990 root mem REG 8,3 22536 141851 /lib64/libdl-2.12.so bash 5990 root mem REG 8,3 1926480 155325 /lib64/libc-2.12.so bash 5990 root mem REG 8,3 134792 151195 /lib64/libtinfo.so.5.7 bash 5990 root mem REG 8,3 65928 132072 /lib64/libnss_files-2.12.so bash 5990 root 0u CHR 136,0 0t0 3 /dev/pts/0 bash 5990 root 1u CHR 136,0 0t0 3 /dev/pts/0 bash 5990 root 2u CHR 136,0 0t0 3 /dev/pts/0 bash 5990 root 255u CHR 136,0 0t0 3 /dev/pts/0
方法二:使用grep重定向
lsof | grep bash
方法三:使用-p选项
[root@oldboy share]# ps aux|grep bash
root 5979 0.0 0.1 11472 1540 tty1 Ss+ 14:34 0:00 -bash
root 5990 0.0 0.1 11476 1580 pts/0 Ss 14:35 0:00 -bash
root 6744 0.0 0.0 6444 688 pts/0 S+ 15:46 0:00 grep --color=auto bash
[root@oldboy share]# lsof -p 5990
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 5990 root cwd DIR 8,3 4096 129846 /usr/local/share
bash 5990 root rtd DIR 8,3 4096 2 /
bash 5990 root txt REG 8,3 941720 134686 /bin/bash
bash 5990 root mem REG 8,3 157072 155324 /lib64/ld-2.12.so
bash 5990 root mem REG 8,3 22536 141851 /lib64/libdl-2.12.so
bash 5990 root mem REG 8,3 1926480 155325 /lib64/libc-2.12.so
bash 5990 root mem REG 8,3 134792 151195 /lib64/libtinfo.so.5.7
bash 5990 root mem REG 8,3 65928 132072 /lib64/libnss_files-2.12.so
bash 5990 root 0u CHR 136,0 0t0 3 /dev/pts/0
bash 5990 root 1u CHR 136,0 0t0 3 /dev/pts/0
bash 5990 root 2u CHR 136,0 0t0 3 /dev/pts/0
bash 5990 root 255u CHR 136,0 0t0 3 /dev/pts/0
7. 列出所有网络连接,或指定条件的进程
[root@oldboy share]# lsof -i COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME sshd 1261 root 3u IPv4 9347 0t0 TCP *:ssh (LISTEN) sshd 1261 root 4u IPv6 9349 0t0 TCP *:ssh (LISTEN) mysqld 1400 mysql 10u IPv4 9807 0t0 TCP *:mysql (LISTEN) dhclient 5614 root 6u IPv4 31819 0t0 UDP *:bootpc sshd 5986 root 3r IPv4 32808 0t0 TCP 192.168.0.109:ssh->192.168.0.102:53902 (ESTABLISHED)
列出使用指定网络条件的进程:
[root@oldboy share]# lsof -i 4 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME sshd 1261 root 3u IPv4 9347 0t0 TCP *:ssh (LISTEN) mysqld 1400 mysql 10u IPv4 9807 0t0 TCP *:mysql (LISTEN) dhclient 5614 root 6u IPv4 31819 0t0 UDP *:bootpc sshd 5986 root 3r IPv4 32808 0t0 TCP 192.168.0.109:ssh->192.168.0.102:53902 (ESTABLISHED)
8. 列出指定目录下使用NFS文件系统的所有文件
lsof -n /home/zoe