lsof可以列出某个进程打开的所有文件信息,例如:普通的文件、目录、NFS文件、块文件、字符文件、共享库、常规管道、命名管道、符号链接、Socket流、网络Socket、UNIX域Socket,以及其它更多类型。含Unix系统“一切皆文件”的重要哲学思想。


lsof [options] filename

lsof  /path/to/somefile    :显示打开指定文件的所有进程之列表


lsof -c string                    :显示其COMMAND列中包含指定字符(string)的进程所有打开的文件;                                                此选项可以重复使用,以指定多个模式;

lsof -p PID                        :查看该进程打开了哪些文件;进程号前可以使用脱字符“^”取反;


lsof -u USERNAME           :显示指定用户的进程打开的文件;用户名前可以使用脱字符“^”取反,如“lsof -u ^root”则用于显示非root用户打开的所有文件;


lsof -g GID                        :显示归属gid的进程情况


lsof +d /DIR/                    :显示指定目录下被进程打开的文件


lsof +D /DIR/                    :基本功能同上,但lsof会对指定目录进行递归查找,注意这个参数要比                                                grep版本慢


lsof -a                                :按“与”组合多个条件,如lsof -a -c apache -u apache


lsof -N                               :列出所有NFS(网络文件系统)文件


lsof -d FD                          :显示指定文件描述符的相关进程;也可以为描述符指定一个范围,如

                                            0-2   表示0,1,2三个文件描述符


lsof -d mem                        : 列出所有内存映射文件;


lsof -d mmap                    :显示所有内存映射设备;


lsof -d  txt                         :列出所有加载在内存中并正在执行的进程,包含code和data;


lsof -d  cwd                       :正在访问当前目录的进程列表;
    
lsof -n                                :不反解IP至HOSTNAME


lsof -i                                 :用以显示符合条件的进程情况

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端口现在运行的情况
lsof -i :22