二丫讲梵 二丫讲梵
首页
  • 最佳实践
  • 迎刃而解
  • Nginx
  • Php
  • Zabbix
  • AWS
  • Prometheus
  • Grafana
  • CentOS
  • Systemd
  • Docker
  • Rancher
  • Ansible
  • Ldap
  • Gitlab
  • GitHub
  • Etcd
  • Consul
  • RabbitMQ
  • Kafka
  • MySql
  • MongoDB
  • OpenVPN
  • KVM
  • VMware
  • Other
  • ELK
  • K8S
  • LLM
  • Nexus
  • Jenkins
  • 随写编年
  • 家人物语
  • 追忆青春
  • 父亲的朋友圈
  • 电影音乐
  • 效率工具
  • 博客相关
  • Shell
  • 前端实践
  • Vue学习笔记
  • Golang学习笔记
  • Golang编程技巧
  • 学习周刊
  • Obsidian插件周刊
关于
友链
  • 本站索引

    • 分类
    • 标签
    • 归档
  • 本站页面

    • 导航
    • 打赏
  • 我的工具

    • 备忘录清单 (opens new window)
    • json2go (opens new window)
    • gopher (opens new window)
    • 微信MD编辑 (opens new window)
    • 国内镜像 (opens new window)
    • 出口IP查询 (opens new window)
    • 代码高亮工具 (opens new window)
  • 外站页面

    • 开往 (opens new window)
    • ldapdoc (opens new window)
    • HowToStartOpenSource (opens new window)
    • vdoing-template (opens new window)
GitHub (opens new window)

二丫讲梵

行者常至,为者常成
首页
  • 最佳实践
  • 迎刃而解
  • Nginx
  • Php
  • Zabbix
  • AWS
  • Prometheus
  • Grafana
  • CentOS
  • Systemd
  • Docker
  • Rancher
  • Ansible
  • Ldap
  • Gitlab
  • GitHub
  • Etcd
  • Consul
  • RabbitMQ
  • Kafka
  • MySql
  • MongoDB
  • OpenVPN
  • KVM
  • VMware
  • Other
  • ELK
  • K8S
  • LLM
  • Nexus
  • Jenkins
  • 随写编年
  • 家人物语
  • 追忆青春
  • 父亲的朋友圈
  • 电影音乐
  • 效率工具
  • 博客相关
  • Shell
  • 前端实践
  • Vue学习笔记
  • Golang学习笔记
  • Golang编程技巧
  • 学习周刊
  • Obsidian插件周刊
关于
友链
  • 本站索引

    • 分类
    • 标签
    • 归档
  • 本站页面

    • 导航
    • 打赏
  • 我的工具

    • 备忘录清单 (opens new window)
    • json2go (opens new window)
    • gopher (opens new window)
    • 微信MD编辑 (opens new window)
    • 国内镜像 (opens new window)
    • 出口IP查询 (opens new window)
    • 代码高亮工具 (opens new window)
  • 外站页面

    • 开往 (opens new window)
    • ldapdoc (opens new window)
    • HowToStartOpenSource (opens new window)
    • vdoing-template (opens new window)
GitHub (opens new window)
  • 最佳实践

  • 迎刃而解

  • Nginx

  • Php

  • Zabbix

  • AWS

  • Prometheus

  • Grafana

  • Loki

  • CentOS

    • Linux好用命令之w命令
    • Linux好用命令之top命令
    • Linux好用命令之free命令
    • Linux好用命令之lsof命令
    • Linux好用命令之expect命令
    • Linux好用命令之gzip保留原文件解压缩
    • Linux好用命令之dig命令
    • Linux好用命令之rsync命令
    • Linux好用命令之curl劫持请求的三种方式
    • Linux好用命令之base64命令
    • Linux好用命令之figlet命令
    • Linux好用命令之watch命令
    • 使用trash-cli给Linux服务器加一个回收站的功能
    • CentOS-7中tmp目录的清理规则
    • 用yum的方式快速安装lnmp环境(MySQL5-5&5-7,php5-x&7-x)
    • CentOS系统里TCP状态中TIME_WAIT超过3万的分析与建议
    • CentOS-7如何释放主机根分区的磁盘空间
    • 实践一次抓包看到TCP的三次握手与四次挥手及其他
    • CentOS-arm架构下安装docker
    • Logrotate入门了解及生产实践
    • 为什么不建议Linux用root登陆或启动服务
  • Supervisord

  • Systemd

  • Docker

  • Docker-Compose

  • Rancher

  • Ansible

  • OpenLdap

  • GitLab

  • GitHub

  • Etcd

  • Consul

  • RabbitMQ

  • Kafka

  • Mysql

  • MongoDB

  • OpenVPN

  • Kvm

  • VMware

  • 配置文件详解

  • Other

  • 运维观止
  • CentOS
二丫讲梵
2020-10-24

Linux好用命令之lsof命令

文章发布较早,内容可能过时,阅读注意甄别。

在 CentOS/Fedora/RHEL 版本的 Linux 中则使用下面的命令进行安装。

yum install lsof
1

lsof也是有着最多选项的 Linux/Unix 命令之一。lsof可以查看打开的文件是:

  • 普通文件
  • 目录
  • 网络文件系统的文件
  • 字符或设备文件
  • (函数) 共享库
  • 管道、命名管道
  • 符号链接
  • 网络文件(例如:NFS file、网络 socket,unix 域名 socket)
  • 还有其它类型的文件,等等

虽然lsof命令有着 N 多的选项,但是常用的只有以下几个:

  • -a:使用 AND 逻辑,合并选项输出内容
  • -c:列出名称以指定名称开头的进程打开的文件
  • -d:列出打开指定文件描述的进程
  • +d:列出目录下被打开的文件
  • +D:递归列出目录下被打开的文件
  • -n:列出使用 NFS 的文件
  • -u:列出指定用户打开的文件
  • -p:列出指定进程号所打开的文件
  • -i:列出打开的套接字

img

总的说来,lsof命令还是一个比较复杂的命令,那么多选项,用起来还是蛮累的,但是这不能否定它是一个出色的工具,一个我们不得不学习的命令。下面就来说一些lsof的惯用用法。 – 命令:

lsof

输出:

COMMAND     PID   TID    USER   FD      TYPE             DEVICE   SIZE/OFF       NODE NAME
systemd       1          root  cwd       DIR              253,1       4096          2 /
systemd       1          root  rtd       DIR              253,1       4096          2 /
systemd       1          root  txt       REG              253,1    1523568    1053845 /usr/lib/systemd/systemd
systemd       1          root  mem       REG              253,1      20040    1050452 /usr/lib64/libuuid.so.1.3.0
systemd       1          root  mem       REG              253,1     261336    1051899 /usr/lib64/libblkid.so.1.1.0
systemd       1          root  mem       REG              253,1      90664    1050435 /usr/lib64/libz.so.1.2.7
systemd       1          root  mem       REG              253,1     157424    1050447 /usr/lib64/liblzma.so.5.2.2
systemd       1          root  mem       REG              253,1      23968    1050682 /usr/lib64/libcap-ng.so.0.0.0
systemd       1          root  mem       REG              253,1      19888    1050666 /usr/lib64/libattr.so.1.1.0
1
2
3
4
5
6
7
8
9
10

输出内容详解:

  • COMMAND:进程的名称

  • PID:进程标识符

  • TID:线程标识符

  • USER:进程所有者

  • FD:文件描述符,应用程序通过文件描述符识别该文件,一般有以下取值:

    • cwd:表示 current work dirctory,即:应用程序的当前工作目录,这是该应用程序启动的目录
    • txt:该类型的文件是程序代码,如应用程序二进制文件本身或共享库
    • 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:表示标准错误
  • TYPE:文件类型,常见的文件类型有以下几种:

    • DIR:表示目录
    • CHR:表示字符类型
    • BLK:块设备类型
    • UNIX:UNIX 域套接字
    • FIFO:先进先出 (FIFO) 队列
    • IPv4:网际协议 (IP) 套接字
  • DEVICE:指定磁盘的名称

  • SIZE/OFF:文件的大小

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

  • NAME:打开文件的确切名称

    • 命令:lsof abc.txt 说明:显示开启文件 abc.txt 的进程
    • 命令:lsof -i :80 说明:列出 80 端口目前打开的文件列表

    输出:

    COMMAND     PID  USER   FD   TYPE    DEVICE SIZE/OFF NODE NAME
    nginx      8838  root    8u  IPv4 114512623      0t0  TCP *:http (LISTEN)
    nginx     12886 jelly    8u  IPv4 114512623      0t0  TCP *:http (LISTEN)
    nginx     12887 jelly    8u  IPv4 114512623      0t0  TCP *:http (LISTEN)
    
    1
    2
    3
    4
    • 命令:
    lsof -i
    
    1

    说明:列出所有的网络连接

    输出:

    COMMAND     PID  USER   FD   TYPE    DEVICE SIZE/OFF NODE NAME
    ntpd        856   ntp   16u  IPv4     13105      0t0  UDP *:ntp
    ntpd        856   ntp   17u  IPv6     13106      0t0  UDP *:ntp
    ntpd        856   ntp   18u  IPv4     13210      0t0  UDP localhost:ntp
    ntpd        856   ntp   19u  IPv4     13211      0t0  UDP jellythink:ntp
    vsftpd     1613  root    3u  IPv6     17867      0t0  TCP *:ftp (LISTEN)
    php-fpm    4037 jelly    0u  IPv4  60908335      0t0  TCP localhost:cslistener (LISTEN)
    sshd       8503  root    3u  IPv4    197060      0t0  TCP *:50022 (LISTEN)
    nginx      8838  root    8u  IPv4 114512623      0t0  TCP *:http (LISTEN)
    nginx      8838  root    9u  IPv4 114512624      0t0  TCP *:https (LISTEN)
    php-fpm    9059 jelly    0u  IPv4  60908335      0t0  TCP localhost:cslistener (LISTEN)
    php-fpm    9137 jelly    0u  IPv4  60908335      0t0  TCP localhost:cslistener (LISTEN)
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    • 命令:lsof -i tcp 说明:列出所有的 TCP 网络连接信息
    • 命令:lsof -i udp 说明:列出所有的 UDP 网络连接信息
    • 命令:lsof -i tcp:80 说明:列出 80 端口 TCP 协议的所有连接信息
    • 命令:lsof -i udp:25 说明:列出 25 端口 UDP 协议的所有连接信息
    • 命令:lsof -c ngin 说明:列出以 ngin 开头的进程打开的文件列表
    • 命令:lsof -p 20711 说明:列出指定进程打开的文件列表
    • 命令:lsof -u uasp 说明:列出指定用户打开的文件列表
    • 命令:lsof -u uasp -i tcp 说明:将所有的 TCP 网络连接信息和指定用户打开的文件列表信息一起输出
    • 命令:lsof -a -u uasp -i tcp 说明:将指定用户打开的文件列表信息,同时是 TCP 网络连接信息的一起输出;注意和上一条命令进行对比
    • 命令:lsof +d /usr/local/ 说明:列出目录下被进程打开的文件列表
    • 命令:lsof +D /usr/local/ 说明:递归搜索目录下被进程打开的文件列表
    • 命令:lsof -i @peida.linux:20,21,22,25,53,80 -r 3 说明:列出目前连接到主机 peida.linux 上端口为 20,21,22,25,53,80 相关的所有文件信息,且每隔 3 秒不断的执行lsof指令

原文地址:http://t.cn/AiOgYZox

微信 支付宝
#centos#linux
上次更新: 2024/07/04, 22:40:37
Linux好用命令之free命令
Linux好用命令之expect命令

← Linux好用命令之free命令 Linux好用命令之expect命令→

最近更新
01
睡着的人不关灯
06-12
02
学习周刊-总第215期-2025年第24周
06-12
03
学习周刊-总第214期-2025年第23周
06-05
更多文章>
Theme by Vdoing | Copyright © 2017-2025 | 点击查看十年之约 | 浙ICP备18057030号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式