[CLI]lsof

来源:互联网 发布:自动拨号软件 编辑:程序博客网 时间:2024/05/25 08:14

FROM: www.magedu.com

Lsof是遵从Unix哲学的典范,它只完成一个功能,并且做的相当完美——它可以列出某个进程打开的所有文件信息。打开的文件可能是普通的文件、目录、NFS文件、块文件、字符文件、共享库、常规管道、命名管道、符号链接、Socket流、网络Socket、UNIX域Socket,以及其它更多类型。 因为“一切皆文件”乃为Unix系统的重要哲学思想之一,因此可以想象lsof命令的重要地位。

Format:

lsof [options] filename

  1. lsof /path/to/somefile : 显示打开指定文件的所有进程之列表
  2. lsof -c string : 显示其COMMAND列中包含指定字符(string)的进程所有打开的文件;此选项可以重复使用,以指定多个模式
  3. lsof -p PID : 查看该进程打开了哪些文件;进程号前可以使用脱字符^取反
  4. lsof -u USERNAME : 显示指定用户的进程打开的文件;用户名前可以使用脱字符^取反,如lsof -u ^root则用于显示非root用户打开的所有文件
  5. lsof -g GID : 显示归属gid的进程情况
  6. lsof +d /DIR/ : 显示指定目录下被进程打开的文件
  7. lsof +D /DIR/ : 基本功能同上,但lsof会对指定目录进行递归查找,注意这个参数要比grep版本慢
  8. lsof -a : 按“与”组合多个条件,如lsof -a -c apache -u apache
  9. lsof -N : 列出所有NFS(网络文件系统)文件
  10. lsof -d FD : 显示指定文件描述符的相关进程;也可以为描述符指定一个范围,如0-2表示0,1,2三个文件描述符; 另外,-d还支持其它很多特殊值:
    • mem: 列出所有内存映射文件;
    • mmap:显示所有内存映射设备;
    • txt:列出所有加载在内存中并正在执行的进程,包含code和data;
    • cwd:正在访问当前目录的进程列表;
  11. lsof -n : 不反解IP至HOSTNAME
  12. lsof -i : 用以显示符合条件的进程情况
  13. lsof -i[46] [protocol][@hostname|hostaddr][:service|port]
    • 46:IPv4或IPv6
    • protocol:TCP or UDP
    • hostname:Internet host name
    • hostaddr:IPv4地址
    • service:/etc/service中的服务名称(可以不只一个)
    • port:端口号 (可以不只一个)
#查看22端口现在运行的情况[root@www ~]# lsof -i :22COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAMEsshd     1390 root    3u  IPv4  13050      0t0  TCP *:ssh (LISTEN)sshd     1390 root    4u  IPv6  13056      0t0  TCP *:ssh (LISTEN)sshd    36454 root    3r  IPv4  94352      0t0  TCP www.magedu.com:ssh->172.16.0.1:50018 (ESTABLISHED)

上述命令中,每行显示一个打开的文件,若不指定条件默认将显示所有进程打开的所有文件。

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

  • COMMAND:进程的名称
  • PID:进程标识符
  • USER:进程所有者
  • FD:文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等
  • TYPE:文件类型,如DIR、REG等
  • DEVICE:指定磁盘的名称
  • SIZE:文件的大小
  • NODE:索引节点(文件在磁盘上的标识)
  • NAME:打开文件的确切名称
原创粉丝点击