Linux初级入门百篇--lsof工具

lsof工具                                                

 

内容提要

 

  1.      熟悉 lsof 的功能

       2.      掌握 lsof 命令的使用

 

lsof的功能和命令格式                                    

  

在系统管理中常常用到 lsof 工具,是系统监测工具之一。lsof(list open files)可以用来查看正在运行中的进程打开了哪些文件、目录和套接字。

  lsof的命令格式如下:

lsof [OPTIONS] [names]

  

lsof 的选项丰富,下面仅列出一些基本的,更多的选项请查阅其手册。

选项

说明

-h

显示使用帮助信息

-a

表示所列出的选项是“与”逻辑,都必须满足时才显示结果

-R

显示进程的 PPID 列

-l

不将 UID 转化为用户登录名

-n

不将 IP 转换为主机名

-P

不将服务端口号转化为服务名称

-u Username/UID

显示由属于指定用户的进程打开的文件

-g gid

显示属于指定组的进程打开的文件

-d FD

显示指定文件描述符(file descriptors)的进程

-c string

显示命令列中包含指定字符串 string 的进程打开的文件

-c /string/

与上面的功能相同,/ / 中可以使用正则表达式

+d Dirname

显示指定目录下被进程打开的文件

+D Dirname

与上面的功能相同,但是会搜索目录下的所有子目录

-i

显示所有网络进程打开的文件

 

  下面着重谈一下 -i 选项,它可跟如下参数进行输出限制:

-i [46][protocol][@hostname|hostaddr][:service|port]

  

其中:

n  4 –– IPv4

n  6 –– IPv6

n  protocol –– TCP 或 UDP

n  hostname –– 网络主机名

n  hostaddr –– IP 地址

n  service –– /etc/service 中的服务名

n  port –– 服务端口号

  

下面给出几个使用 -i 选项的例子

n  -i 6 –– 仅限于 IPv6

n  -i TCP:25 –– TCP 且端口号为 25

n  -i @1.2.3.4 –– IPv4 地址为 1.2.3.4

n  -i @[3ffe:1ebc::1]:1234 –– IPv6 地址为 3ffe:1ebc::1,端口号为 1234

n  -i UDP:who - UDP 协议的 who 服务端口

n  -i TCP@lsof.itap:513 –– TCP 协议的 513 端口,主机名为 lsof.itap

n  -i tcp@foo:1-10,smtp,99 –– TCP 协议的端口 1到10、smtp 服务端口和端口 99,主机名为 foo  

n  -i tcp@bar:smtp-nameserver –– TCP 协议的端口 smtp 到 nameserver, 主机名为 bar

n  -i :time –– TCP 或 UDP 协议的 time 服务端口

  

lsof命令举例                                            

 

下面给出几个使用举例:

  #       查看谁在使用指定的文件系统

[root@thinkmo ~]#        lsof/media/cdrom/

COMMAND      PID   USER         FD    TYPEDEVICE SIZE    NODE       NAME

bash 8011         root cwd  DIR  253,0        4096         390146     /media/cdrom/

bash 8536         osmond    cwd  DIR  253,0        4096         390146     /media/cdrom/

  

#       显示打开指定文件的所有进程

[root@thinkmo ~]#        lsof/var/log/messages

COMMAND PIDUSER      FD    TYPE DEVICE SIZE    NODENAME

syslogd2048 root    2w    REG 253,0 108 847031 /var/log/messages

 

#       显示由指定用户 osmond 打开的所有文件

[root@thinkmo ~]# lsof -u osmond

COMMAND      PID   USER         FD    TYPE DEVICE     SIZE NODE       NAME

sshd 7103         osmond    cwd  DIR  253,0        4096         2       /

sshd 7103         osmond    rtd    DIR  253,0        4096         2       /

bash 7104         osmond    rtd    DIR  253,0        4096         2       /

bash 7104         osmond    cwd  DIR  253,1        4096         63489       /home/osmond

sshd 7103         osmond    txt    REG 253,0        387308     824664     /usr/sbin/sshd

sshd 7103         osmond    mem         REG 253,0        125728     554968     /lib/ld-2.5.so

sshd 7103         osmond    mem         REG 253,0        11460       826459     /usr/lib/libplds4.so

sshd 7103         osmond    DEL  REG 0,8             32290       /dev/zero

sshd 7103         osmond    0u     CHR 1,3             1402         /dev/null

sshd 7103         osmond    3u     IPv6 32264                TCP  192.168.0.101:ssh->192.168.0.77:lontalk-urgnt(ESTABLISHED)

sshd 7103         osmond    4u     unix0xdc29c200               32295       socket

sshd 7103         osmond    6r     FIFO 0,6             32305       pipe

sshd 7103         osmond    8u     CHR 5,2             693  /dev/ptmx

bash 7104         osmond    txt    REG 253,0        722684     97572       /bin/bash

bash 7104         osmond    0u     CHR 136,0                  2       /dev/pts/0

……………………

  

#       显示指定目录下被进程打开的文件

[root@thinkmo ~]# lsof +d /var

COMMAND PIDUSER      FD    TYPE DEVICE SIZE    NODENAME

crond        2455 root cwd DIR 253,0 4096 845353 /var/spool

  

#       显示指定文件描述符的进程(多个FD用逗号间隔)

[root@thinkmo ~]# lsof -d txt,1

COMMAND      PID   USER         FD    TYPE DEVICE     SIZE NODE       NAME

init   1       root txt    REG 253,0        38620       422671     /sbin/init

migration 2       root txt    unknown                              /proc/2/exe

udevd       441  root txt    REG 253,0        71928       422820     /sbin/udevd

udevd       441  root 1u     CHR 1,3             1402         /dev/null

acpid         2360         root 1w    REG 253,0        1722         846999     /var/log/acpid

xinetd       2403         root 1r     CHR 1,3             1402         /dev/null

……………………

  

#       查看属于 root 用户进程所打开的文件描述符为 txt 的文件

[root@thinkmo ~]# lsof -a -u root -d txt

COMMAND      PID   USERFD   TYPE DEVICE    SIZE NODE       NAME

init   1       roottxt    REG 253,0        38620       422671     /sbin/init

migration 2       roottxt    unknown                              /proc/2/exe

………………

lsof   8527         roottxt    REG 253,0        121396     823819     /usr/sbin/lsof

lsof   8528         roottxt    REG 253,0        121396     823819     /usr/sbin/lsof

  

#       查看端口号 22 的进程的当前运行情况

[root@thinkmo ~]# lsof -i :22

COMMAND      PID   USER         FD    TYPEDEVICE SIZE NODE NAME

sshd 2386         root 3u     IPv6 6717         TCP  *:ssh (LISTEN)

sshd 7101         root 3u     IPv6 32264       TCP  192.168.0.101:ssh->192.168.0.77:lontalk-urgnt(ESTABLISHED)

sshd 7103         osmond    3u     IPv6 32264       TCP  192.168.0.101:ssh->192.168.0.77:lontalk-urgnt(ESTABLISHED)

sshd 8533         root 3u     IPv6 35679       TCP  192.168.0.101:ssh->192.168.0.77:3998(ESTABLISHED)

sshd 8535         osmond    3u     IPv6 35679       TCP  192.168.0.101:ssh->192.168.0.77:3998(ESTABLISHED)

 

#       查看包含指定 IP 的进程的当前运行情况

[root@thinkmo ~]#lsof -i @192.168.0.77

COMMAND PID       USER         FD    TYPE DEVICE SIZE NODE NAME

sshd 7101         root 3u IPv6 32264 TCP192.168.0.101:ssh->192.168.0.77:lontalk-urgnt (ESTABLISHED)

sshd 7103         osmond    3u     IPv6 32264       TCP192.168.0.101:ssh->192.168.0.77:lontalk-urgnt (ESTABLISHED)

sshd 8533         root 3u     IPv6 35679       TCP  192.168.0.101:ssh->192.168.0.77:3998(ESTABLISHED)

sshd 8535         osmond    3u     IPv6 35679       TCP  192.168.0.101:ssh->192.168.0.77:3998(ESTABLISHED)

  

lsof的输出项说明                                        

 

常见的输出项说明:

COMMAND

进程的名称

PID

进程标识符

USER

进程所有者

FD

文件描述符,应用程序通过文件描述符识别该文件

TYPE

文件类型

DEVICE

磁盘的名称

SIZE

文件的大小

NODE

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

NAME

打开文件的确切名称

 

常见的文件描述符(file descriptors):

cwd

程序的当前工作目录

rtd

根目录

txt

程序文本(包括代码和数据)

mem

内存映像文件

n

n为数值,应用程序的文件描述符,这是打开该文件时返回的一个整数。(0到2,分别表示标准输入、标准输出和标准错误输出)n后的r表示打开的文件只读;w表示打开的文件只写;u表示打开的文件可读写。

 

常见的文件类型(TYPE):

REG

普通文件

LINK

符号链接文件

DIR

目录

CHR

字符设备

BLK

块设备

FIFO

先进先出队列

unix

UNIX 域套接字

sock

不可知域套接字

inet

Internet域套接字

IPv4

IPv4 套接字

IPv6

IPv6 网络文件

 

          

          

          

          

          

          

          

          

          

          

          

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值