linux-lsof命令入门教程


lsof手册页:http://www.netadmintools.com/html/lsof.man.html

语法

默认 : 没有选项,lsof列出活跃进程的所有打开文件
组合 : 可以将选项组合到一起,如-abc,但要当心哪些选项需要参数
-l : 在输出显示用户ID而不是用户名
-h : 获得帮助
-t : 仅获取进程ID
-U : 获取UNIX套接口地址
-F : 格式化输出结果,用于其它命令。可以通过多种方式格式化,如-F pcfn(用于进程id、命令名、文件描述符、文件名,并以空终止)
-a:列出打开文件存在的进程;
-c<进程名>:列出指定进程所打开的文件;
-g:列出GID号进程详情;
-d<文件号>:列出占用该文件号的进程;
+d<目录>:列出目录下被打开的文件;
+D<目录>:递归列出目录下被打开的文件;
-n<目录>:列出使用NFS的文件;
-i<条件>:列出符合条件的进程。(4、6、协议、:端口、 @ip )
-p<进程号>:列出指定进程号所打开的文件;
-u:列出UID号进程详情;
-h:显示帮助信息;
-v:显示版本信息。

实例

lsof -i:8080#查看8080端口占用
lsof abc.txt#显示开启文件abc.txt的进程
lsof -c abc#显示abc进程现在打开的文件
lsof -c -p 1234#列出进程号为1234的进程所打开的文件
lsof -g gid #显示归属gid的进程情况
lsof +d /usr/local/#显示目录下被进程开启的文件
lsof +D /usr/local/#同上,但是会搜索目录下的目录,时间较长
lsof -d 4#显示使用fd为4的进程
lsof -i -U#显示所有打开的端口和UNIX domain文件

#获取网络信息
lsof  -i 6#使用-i 6仅获取IPv6流量
lsof  -iTCP#仅显示TCP连接(同理可获得UDP连接)
lsof  -i :22#使用-i:port来显示与指定端口相关的网络信息
lsof  [email protected]#使用@host来显示指定到指定主机的连接
lsof  [email protected]:22#使用@host:port显示基于主机与端口的连接
lsof  -i |  grep  -i LISTEN#找出监听端口
lsof  -i |  grep  -i ESTABLISHED#找出已建立的连接

#用户信息
lsof  -u daniel#使用-u显示指定用户打开了什么
lsof  -u ^daniel#显示除指定用户以外的其它所有用户所做的事情
kill  -9  `lsof -t -u daniel`#杀死指定用户所做的一切事情

#命令和进程
lsof  -c syslog-ng#使用-c查看指定的命令正在使用的文件和网络连接
lsof  -p 10075#使用-p查看指定进程ID已打开的内容
lsof  -t -c Mail-t选项只返回PID

#文件和目录
lsof  /var/log/messages/#显示与指定目录交互的所有一切
lsof  /home/daniel/firewall_whitelist.txt#显示与指定文件交互的所有一切

#高级用法
lsof  -u daniel -i @1.1.1.1#显示daniel连接到1.1.1.1所做的一切
kill  -HUP `lsof -t -c sshd`#同时使用-t和-c选项以给进程发送 HUP 信号
lsof +L1#显示所有打开的链接数小于1的文件
lsof  -i @fw.google.com:2150=2180#显示某个端口范围的打开的连接

lsof输出信息

lsof
command     PID USER   FD      type             DEVICE     SIZE       NODE NAME
init          1 root  cwd       DIR                8,2     4096          2 /
init          1 root  rtd       DIR                8,2     4096          2 /
init          1 root  txt       REG                8,2    43496    6121706 /sbin/init
init          1 root  mem       REG                8,2   143600    7823908 /lib64/ld-2.5.so
init          1 root  mem       REG                8,2  1722304    7823915 /lib64/libc-2.5.so
init          1 root  mem       REG                8,2    23360    7823919 /lib64/libdl-2.5.so
init          1 root  mem       REG                8,2    95464    7824116 /lib64/libselinux.so.1
init          1 root  mem       REG                8,2   247496    7823947 /lib64/libsepol.so.1
#lsof输出各列信息的意义如下
COMMAND:进程的名称
PID:进程标识符
PPID:父进程标识符(需要指定-R参数)
USER:进程所有者
PGID:进程所属组
FD:文件描述符,应用程序通过文件描述符识别该文件。
DEVICE:指定磁盘的名称
SIZE:文件的大小
NODE:索引节点(文件在磁盘上的标识)
NAME:打开文件的确切名称


#文件描述符列表:
cwd:表示current work dirctory,即:应用程序的当前工作目录,这是该应用程序启动的目录,除非它本身对这个目录进行更改
txt:该类型的文件是程序代码,如应用程序二进制文件本身或共享库,如上列表中显示的 /sbin/init 程序
lnn:library references (AIX);
er:FD information error (see NAME column);
jld:jail directory (FreeBSD);
ltx:shared library text (code and data);
mxx :hex memory-mapped type number xx.
m86:DOS Merge mapped file;
mem:memory-mapped file;
mmap:memory-mapped device;
pd:parent directory;
rtd:root directory;
tr:kernel trace file (OpenBSD);
v86  VP/ix mapped file;
0:表示标准输出
1:表示标准输入
2:表示标准错误

#一般在标准输出、标准错误、标准输入后还跟着文件状态模式
u:表示该文件被打开并处于读取/写入模式。
r:表示该文件被打开并处于只读模式。
w:表示该文件被打开并处于。
空格:表示该文件的状态模式为unknow,且没有锁定。
-:表示该文件的状态模式为unknow,且被锁定。

#同时在文件状态模式后面,还跟着相关的锁
N:for a Solaris NFS lock of unknown type;
r:for read lock on part of the file;
R:for a read lock on the entire file;
w:for a write lock on part of the file;(文件的部分写锁)
W:for a write lock on the entire file;(整个文件的写锁)
u:for a read and write lock of any length;
U:for a lock of unknown type;
x:for an SCO OpenServer Xenix lock on part      of the file;
X:for an SCO OpenServer Xenix lock on the      entire file;
space:if there is no lock.

#文件类型
DIR:表示目录。
CHR:表示字符类型。
BLK:块设备类型。
UNIX: UNIX 域套接字。
FIFO:先进先出 (FIFO) 队列。
IPv4:网际协议 (IP) 套接字。
DEVICE:指定磁盘的名称
SIZE:文件的大小
NODE:索引节点(文件在磁盘上的标识)
NAME:打开文件的确切名称
发布了44 篇原创文章 · 获赞 5 · 访问量 2323

猜你喜欢

转载自blog.csdn.net/qq_45206551/article/details/105054099
今日推荐