lsof deleted java_lsof命令简介

lsof 简介

lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境中一切皆文件,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对系统监测以及排错将是很有帮助的。

lsof 命令解析

COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAME

systemd 1 root cwd DIR 253,0 224 64 /

systemd 1 root rtd DIR 253,0 224 64 /

systemd 1 root txt REG 253,0 1482128 67418805 /usr/lib/systemd/systemd

systemd 1 root mem REG 253,0 20040 33619254 /usr/lib64/libuuid.so.1.3.0

...

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

COMMAND: 进程的名称

PID: 进程标识符

USER: 进程所有者

FD: 文件描述符,应用程序通过文件描述符识别该文件。每个进程都有自己的文件描述符表,因此FD可能会重名

TYPE: 文件类型

DEVICE: 指定磁盘的名称

SIZE: 文件的大小

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

NAME: 打开文件的确切名称

查看进程打开文件

列出占用文件的进程

$ sudo lsof /home/mysql/

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

bash 18522 mysql cwd DIR 253,0 4096 655378 /home/mysql

sudo 18544 root cwd DIR 253,0 4096 655378 /home/mysql

lsof 18545 root cwd DIR 253,0 4096 655378 /home/mysql

lsof 18546 root cwd DIR 253,0 4096 655378 /home/mysql

可配合 +d 选项,表示/home/mysql目录及目录下的文件,不包括子目录

$ sudo lsof /home/mysql/ +d

列出pid打开的文件

-p选项,列出指定pid打开的文件,如果要多个,则用逗号隔开

$ sudo lsof -p 16273

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

nano 16273 root cwd DIR 253,0 4096 1179649 /root

列出指定用户打开的文件

-u选项,列出指定用户打开的文件

$ sudo lsof -u test1

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

bash 16335 test1 cwd DIR 253,0 4096 1966556 /home/test1

列出指定进程名打开的文件

-c 选项,列出指定进程名打开的文件

sudo lsof -c java # 显示command列中以java的所有打开的文件

sudo lsof -c java -c sh # 显示command列中以java开头或以sh开头的打开的文件

sudo lsof -c ^java # 显示command列中所有不以java开头的打开的文件

查看网络连接情况

-i 选项,可以列出网络连接情况。语法格式如下:

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

参数解析:

4/6:IPv4或IPv6

protocol:TCP或UDP

hostname:主机名

hostaddr:ip地址

service:/etc/service中服务名,可写多个

port:端口号,可写多个

示例:

1. 查看IPv4网络情况

$ lsof -i 4

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

rpcbind 1599 rpc 6u IPv4 10168 0t0 UDP *:sunrpc

rpcbind 1599 rpc 7u IPv4 10169 0t0 UDP *:926

...

2. 查看指定IP

-n 表示不进行IP域名反查,直接显示ip地址

$ lsof -i @10.0.137.144 -n

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

sshd 16734 root 3u IPv4 14692046 0t0 TCP 10.0.137.144:ssh->10.0.2.136:49614 (ESTABLISHED)

sshd 16736 test 3u IPv4 14692046 0t0 TCP 10.0.137.144:ssh->10.0.2.136:49614 (ESTABLISHED)

3. 查看指定IP及端口

$ sudo lsof -i @10.0.137.144:22 -n

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

sshd 16734 root 3u IPv4 14692046 0t0 TCP 10.0.137.144:ssh->10.0.2.136:49614 (ESTABLISHED)

sshd 16736 test 3u IPv4 14692046 0t0 TCP 10.0.137.144:ssh->10.0.2.136:49614 (ESTABLISHED)

4. 查看指定端口

$ lsof -i :22 -n

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

sshd 1095 root 3u IPv4 14032 0t0 TCP *:ssh (LISTEN)

sshd 1095 root 4u IPv6 14034 0t0 TCP *:ssh (LISTEN)

sshd 16734 root 3u IPv4 14692046 0t0 TCP 10.0.137.144:ssh->10.0.2.136:49614 (ESTABLISHED)

sshd 16736 test 3u IPv4 14692046 0t0 TCP 10.0.137.144:ssh->10.0.2.136:49614 (ESTABLISHED)

5. 查看指定协议

$ sudo lsof -i UDP

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME

rsyslogd 17935 root 3u IPv4 11066422 0t0 UDP *:40296

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值