lsof命令
来源:原创 更新时间:2018-08-25 23:34:17 作者:管理员 浏览:4639
- 命令描述
- 命令语法
- 命令选项
-c<进程名> 列出指定进程所打开的文件
-g 列出GID号进程详情
-d<文件号> 列出占用该文件号的进程
+d<目录> 列出目录下被打开的文件
+D<目录> 递归列出目录下被打开的文件
-n<目录> 列出使用NFS的文件
-i<条件> 列出符合条件的进程。(4、6、协议、:端口、 @ip )
-p<进程号> 列出指定进程号所打开的文件
-u 列出UID号进程详情
-h 显示帮助信息
-v 显示版本信息
- 命令参数
1,普通文件
2,目录
3,网络文件系统的文件
4,字符或设备文件
5,(函数)共享库
6,管道,命名管道
7,符号链接
8,网络文件(例如:NFS_file,网络socket)
9,等其他类型的文件
- 命令实例
实例1:不加任何参数,列出当前系统总所有调用的文件信息
[root@LornBlood ~]# lsof | head -10 |column -t 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 150353 792227 /sbin/init init 1 root mem REG 8,3 66432 915759 /lib64/libnss_files-2.12.so lsof 22211 root mem REG 8,3 159312 921647 /lib64/ld-2.12.so ............................................................................... lsof 22211 root 4r FIFO 0,8 0t0 2410515 pipe lsof 22211 root 7w FIFO 0,8 0t0 2410516 pipe 每一列对应的信息: COMMAND:进程的名称 PID:进程标识符(进程的PID) PPID:进程父进程的PID(需要指定-R选项) USER:进程的所有者 PGID:进程的所属组 FD:文件描述符,应用程序通过文件描述符识别该文件。 1)cwd:表示current work dirctory,即:应用程序当前的工作目录,这是该应用程序启动的目录 2)txt:该类型的文件时程序代码,如应用程序二进制文件本身或共享库,如/sbin/init程序 3)lnn:library references (AIX); 4)er:FD information error (see NAME column); 5)jld:jail directory (FreeBSD); 6)ltx:shared library text (code and data); 7)mxx :hex memory-mapped type number xx. 8)m86:DOS Merge mapped file; 9)mem:memory-mapped file; 10)mmap:memory-mapped device; 11)pd:parent directory; 12)rtd:root directory; 13)tr:kernel trace file (OpenBSD); 14)v86 VP/ix mapped file; 15)0:标准输入 16)1:标准输出 17)2:标准错误 一般在标准输出、标准错误、标准输入后还跟着文件状态模式:r、w、u等 1)u:表示该文件被打开并处于读取/写入模式 2)r:表示该文件被打开并处于只读模式 3)w:表示该文件被打开并处于编辑模式 4)空格:表示该文件的状态为unknow,且没有被锁定 5)-:表示该文件的状态为unknow,且被锁定 TYPE:文件类型 1)DIR:目录 2)CHR:字符设备 3)BLK:块设备 4)UNIX:UNIX域套接字 5)FIFO:先进先出(FIFO)队列 6)IPv4:网络协议(IP)套接字 DEVICE:指定磁盘的名称 SIZE:文件大小 NODE:索引节点(inode号) NAME:打开文件的确切名称
实例2: -a 列出打开文件存在的进程
[root@LornBlood ~]# lsof -a /var/log/messages COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME rsyslogd 22037 root 1w REG 8,3 653 130895 /var/log/messages
实例3: -c 列出指定进程所打开的文件
[root@LornBlood ~]# lsof -c rsyslogd COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME rsyslogd 22037 root cwd DIR 8,3 4096 2 / rsyslogd 22037 root rtd DIR 8,3 4096 2 / rsyslogd 22037 root txt REG 8,3 391360 790250 /sbin/rsyslogd
实例4: -i 列出符合条件的进程(协议,端口,ip)
[root@LornBlood ~]# lsof -i :22 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME sshd 9854 root 3u IPv4 42831 0t0 TCP *:ssh (LISTEN) sshd 9854 root 4u IPv6 42833 0t0 TCP *:ssh (LISTEN)