程序员开发实例大全宝库

网站首页 > 编程文章 正文

常用linux命令:lsof(常用linux命令20个)

zazugpt 2024-09-01 07:55:57 编程文章 23 ℃ 0 评论

1、简介

lsof(list open files)是一个列出当前系统打开文件的工具

# 示例
$ lsof -i:80
COMMAND     PID USER   FD   TYPE     DEVICE SIZE/OFF NODE NAME
nginx     25679  www    6u  IPv4 1218607198      0t0  TCP *:http (LISTEN)
nginx     25680  www    6u  IPv4 1218607198      0t0  TCP *:http (LISTEN)
nginx     25681  www    6u  IPv4 1218607198      0t0  TCP *:http (LISTEN)
nginx     25682  www    6u  IPv4 1218607198      0t0  TCP *:http (LISTEN)
nginx     47247 root    6u  IPv4 1218607198      0t0  TCP *:http (LISTEN)

# 说明
COMMAND:进程名称
PID:进程标识符
USER:进程运行的用户名
FD:文件描述符,应用程序通过文件描述符识别文件,如:cwd当前工作目录,mem内存映射文件,txt应用文本
TYPE:表示文件的类型,如,REG普通文件,DIR目录,CHR字符文件,BLK设备文件,UNIX为Unix套接字,FIFO先进先出队列,IPv4/IPv6网际协议IP套接字
DEVICE:文件所在的设备
SIZE:文件的大小
NODE:索引节点,文件在磁盘的标识符
NAME:打开文件的名称

2、查看文件和进程

#某个进程打开的文件
$ lsof -p 25679  // 25679是PID
COMMAND   PID USER   FD      TYPE             DEVICE   SIZE/OFF       NODE NAME
nginx   25679  www  cwd       DIR              253,1       4096          2 /
nginx   25679  www  rtd       DIR              253,1       4096          2 /
nginx   25679  www  mem       REG              253,1     105824     265472 /usr/lib64/libresolv-2.17.so
nginx   25679  www  mem       REG              253,1      31408     265460 /usr/lib64/libnss_dns-2.17.so
nginx   25679  www  mem       REG              253,1      61624     265462 /usr/lib64/libnss_files-2.17.so
nginx   25679  www  mem       REG              253,1      15512     277609 /usr/lib64/libXau.so.6.0.0
nginx   25679  www  mem       REG              253,1      68192     266453 /usr/lib64/libbz2.so.1.0.6
nginx   25679  www  mem       REG              253,1      20112     266450 /usr/lib64/libuuid.so.1.3.0
nginx   25679  www  mem       REG              253,1     173320     266666 /usr/lib64/libexpat.so.1.6.0
nginx   25679  www  mem       REG              253,1     165976     277661 /usr/lib64/libxcb.so.1.1.0
nginx   25679  www  mem       REG              253,1      88776     278267 /usr/lib64/libgcc_s-4.8.5-20150702.so.1
nginx   25679  www  mem       REG              253,1     991616     267698 /usr/lib64/libstdc++.so.6.0.19
nginx   25679  www  mem       REG              253,1    1137024     265452 /usr/lib64/libm-2.17.so

#某个用户打开的文件
$ lsof -u root

#不是某个用户打开的文件(取反,在用户名前添加^符号)
$ lsof -u ^root

#某个文件被哪些进程打开使用
$ lsof /dev/null
COMMAND     PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
systemd       1    root    0u   CHR    1,3      0t0 1028 /dev/null
systemd       1    root    1u   CHR    1,3      0t0 1028 /dev/null
systemd       1    root    2u   CHR    1,3      0t0 1028 /dev/null
systemd-u   513    root    0r   CHR    1,3      0t0 1028 /dev/null
auditd      727    root    0u   CHR    1,3      0t0 1028 /dev/null
auditd      727    root    1u   CHR    1,3      0t0 1028 /dev/null
auditd      727    root    2u   CHR    1,3      0t0 1028 /dev/null

#某个进程名使用的文件信息
$ lsof -c nginx

3、查看网络信息

#某个端口的网络连接状态
$ lsof -i:80

#正等等连接的端口
$ lsof -i -sTCP:LISTEN(或者 lsof -i | grep -i LISTEN)

#所有的网络连接信息
$ lsof -i
COMMAND     PID    USER   FD   TYPE     DEVICE SIZE/OFF NODE NAME
chronyd     791  chrony    1u  IPv4      15420      0t0  UDP localhost:323
chronyd     791  chrony    2u  IPv6      15421      0t0  UDP localhost:323
dhclient   1009    root    6u  IPv4      14892      0t0  UDP *:bootpc
master     1405    root   13u  IPv4      19531      0t0  TCP localhost:smtp (LISTEN)
master     1405    root   14u  IPv6      19532      0t0  TCP localhost:smtp (LISTEN)
sshd       1514    root    3u  IPv4      16880      0t0  TCP *:ssh (LISTEN)
sshd       1514    root    4u  IPv6      16882      0t0  TCP *:ssh (LISTEN)

#某个协议类型的网络连接信息
$ lsof -i TCP
COMMAND     PID    USER   FD   TYPE     DEVICE SIZE/OFF NODE NAME
master     1405    root   13u  IPv4      19531      0t0  TCP localhost:smtp (LISTEN)
master     1405    root   14u  IPv6      19532      0t0  TCP localhost:smtp (LISTEN)
sshd       1514    root    3u  IPv4      16880      0t0  TCP *:ssh (LISTEN)
sshd       1514    root    4u  IPv6      16882      0t0  TCP *:ssh (LISTEN)

#连接到某个主机的网络状态(对检查是否开放连接到网络中或互联网上某个指定主机的连接时十分有用)
$ lsof -i @192.168.7.46

#连接到某个主机的特定端口的网络状态
$ lsof -i @192.168.7.46:80

#当前主机监听的端口
$ lsof -i -s TCP:LISTEN
COMMAND     PID USER   FD   TYPE     DEVICE SIZE/OFF NODE NAME
master     1405 root   13u  IPv4      19531      0t0  TCP localhost:smtp (LISTEN)
master     1405 root   14u  IPv6      19532      0t0  TCP localhost:smtp (LISTEN)
sshd       1514 root    3u  IPv4      16880      0t0  TCP *:ssh (LISTEN)
sshd       1514 root    4u  IPv6      16882      0t0  TCP *:ssh (LISTEN)
php       25435 root    5u  IPv4 1320530009      0t0  TCP localhost:scanstat-1 (LISTEN)
nginx     25679  www    6u  IPv4 1218607198      0t0  TCP *:http (LISTEN)
nginx     25679  www    7u  IPv4 1218607199      0t0  TCP *:https (LISTEN)
nginx     25679  www    8u  IPv4 1218607200      0t0  TCP *:8090 (LISTEN)
nginx     25680  www    6u  IPv4 1218607198      0t0  TCP *:http (LISTEN)
nginx     25680  www    7u  IPv4 1218607199      0t0  TCP *:https (LISTEN)

#仅获取IPv6流量
$ lsof -i 6
COMMAND     PID   USER   FD   TYPE     DEVICE SIZE/OFF NODE NAME
chronyd     791 chrony    2u  IPv6      15421      0t0  UDP localhost:323
master     1405   root   14u  IPv6      19532      0t0  TCP localhost:smtp (LISTEN)
sshd       1514   root    4u  IPv6      16882      0t0  TCP *:ssh (LISTEN)
java      49925   root  248u  IPv6 1193366018      0t0  TCP *:epicon (LISTEN)
java      49925   root  266u  IPv6 1193367575      0t0  TCP *:11800 (LISTEN)
java      49925   root  267u  IPv6 1193367576      0t0  TCP *:12800 (LISTEN)
java      49925   root  274u  IPv6 1193370842      0t0  TCP localhost:11800->localhost:35382 (ESTABLISHED)
java      49949   root   19u  IPv6 1193365187      0t0  TCP *:jamlink (LISTEN)

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表