首页 > 系统相关 >Linux 中的 lsof 命令使用大全

Linux 中的 lsof 命令使用大全

时间:2022-12-22 16:00:13浏览次数:43  
标签:文件 命令 Linux 打开 lsof 列出 大全

Linux 计算机中的每个对象都被视为一个文件。这些文件组织在目录中。当您的计算机运行时,它会打开多个文件和目录,供不同的进程使用。您可以使用 lsof 命令列出这些打开的文件和目录。

在本教程中,我们将通过示例学习如何在 Linux 中使用 lsof 命令。

Linux 中的 lsof 命令使用大全_打开文件

目录

  • 先决条件
  • lsof 命令
  • 句法
  • 如何使用 Linux Lsof 命令
  • Lsof 选项
  • Linux Lsof 命令示例
  • 列出所有打开的文件
  • 列出特定用户打开的文件
  • 列出进程打开的文件
  • 按文件名过滤打开的文件
  • 列出目录打开的所有文件
  • 列出由网络协议打开的文件
  • 列出在特定端口上运行的进程使用的文件
  • 列出由 IPv4 和 IPv6 打开的文件
  • Linux Lsof 命令头
  • 结论

主要分享低代码、微服务、容器化、SAAS‬、系统架构方面的的‬内容‬‬,希望‬大家‬点赞‬,评论,关注‬。

lsof 命令

lsof 命令代表list open files,用于列出所有打开的文件和目录。这个命令可以帮助你找出哪些文件被各个进程打开,用户的进程列表,以及监听特定端口的进程列表。您还可以使用此命令来调试当文件被其他进程使用时导致的磁盘卸载错误。

lsof 命令不仅列出常规文件,还列出共享库、块特殊文件、常规管道、命名管道、字符特殊文件、UNIX 域、Internet 套接字、文件系统挂载点和磁盘文件。使用 lsof 命令及其选项或 grep 命令过滤掉结果。

lsof 命令需要 root 或 sudo 访问权限,因为它列出的大多数进程或设备都属于 root。

默认情况下,所有主要的 Linux 发行版都会自动安装 lsof 命令。但是,如果它在您的发行版中不可用,那么您需要先安装命令来尝试这些示例。

语法规则

这是 lsof 命令的基本语法:

lsof [option] [username]

如何使用 Linux Lsof 命令

lsof 命令可以以不同的方式使用,有或没有附加选项。不带选项使用时,它会列出数百个当前打开的文件。这些选项可帮助您缩小搜索结果的范围。例如,将目录作为选项传递,以列出从目录打开的所有文件以及打开这些文件的进程。

如果您以普通用户而不是 root 用户身份运行 lsof 命令,那么您将看到几个“权限被拒绝”错误,因为许多系统文件和进程仅限于 root 用户。

Lsof 选项

lsof 命令提供了许多选项来过滤掉文件列表。下表描述了一些最常用的 lsof 选项:

选项

描述

^

用于列出除指定的用户、PID 和 UID 之外的所有由用户、PID 和 UID 打开的文件的否定选项。

-u

列出指定用户打开的文件。

-c

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

-p

列出由指定进程 ID 打开的文件。

+D

列出特定目录打开的文件。

-i

列出由网络连接、协议和端口打开的文件。

Linux Lsof 命令示例

lsof 命令提供了各种选项来在列出打开的文件时缩小搜索结果的范围。以下 Linux lsof 命令示例将向您展示该命令的一些最常见用例。

列出所有打开的文件

使用不带任何选项的 lsof 命令列出 Linux 计算机上所有打开的文件:

lsof

Linux 中的 lsof 命令使用大全_打开文件_02

lsof 输出通常很长,您可以使用 lsof | more 一次显示一个屏幕输出,使其更具可读性。

列出特定用户打开的文件

多个用户可以在给定时间访问一台 Linux 计算机。每个用户都有不同的文件和设备要求。要列出特定用户打开的文件,请键入:

lsof -u tom

Linux 中的 lsof 命令使用大全_网络协议_03

您还可以使用 lsof 在单个命令中显示多个用户的输出,例如:

lsof -u username1, username2

或者,您可以列出除指定用户之外的所有用户打开的所有文件。例如,要显示所有未由 root 用户打开的文件,请键入:

lsof -u^root

列出进程打开的文件

Linux 进程可能一次使用多个文件来完成其操作。以下命令可帮助您列出特定进程使用的打开文件:

lsof -c network

Linux 中的 lsof 命令使用大全_网络连接_04

您还可以使用 PID 或进程标识号,而不是进程名称来列出由特定进程 ID 打开的文件:

lsof -p 11

Linux 中的 lsof 命令使用大全_网络协议_05

要在单个命令中列出多个进程 ID 的打开文件,请键入:

lsof -p PID1, PID2, PID3

按文件名过滤打开的文件

使用文件名作为参数列出所有打开指定文件的进程:

lsof /var/log

Linux 中的 lsof 命令使用大全_网络协议_06

列出目录打开的所有文件

要列出由特定目录打开的所有文件,请将目录名称作为 lsof 的参数提供:

sudo lsof +D /var/log

列出由网络协议打开的文件

Linux 支持多个网络连接以连接到不同的应用程序和设备。我们可以使用该-i选项列出特定网络协议使用的所有文件。

例如,使用以下命令列出 UDP 协议文件:

lsof -i UDP

Linux 中的 lsof 命令使用大全_网络连接_07

同样,我们可以使用lsof -i TCP列出所有 TCP 协议文件。

列出在特定端口上运行的进程使用的文件

一些 Linux 应用程序和进程需要特定的端口来建立连接。要列出在端口 631 上运行的进程使用的所有打开文件,请键入:

sudo lsof -i :631

Linux 中的 lsof 命令使用大全_网络连接_08

我们还可以列出多个端口号,例如,lsof –i :22,443或者指定一个 TCP 端口范围以及网络协议,例如lsof -i TCP:1-44653.

列出由 IPv4 和 IPv6 打开的文件

以下示例向您展示了打开的 IPv4 网络连接文件:

sudo lsof -i 4

Linux 中的 lsof 命令使用大全_网络连接_09

要列出打开的 IPv6 文件,请键入:

sudo lsof -i 6

Linux Lsof 命令头

lsof 命令的输出以表格形式组织,以帮助您更好地了解正在使用它们的文件和进程。下表列出并描述了 lsof 命令头:

标题

描述

COMMAND

打开文件或目录的命令。

PID

进程的进程标识符。

TID

用于标识线程的线程或任务标识符。

TASKCMD

任务命令的名称。仅当指定条目是任务时才显示此字段。

USER

拥有文件和进程的用户帐户的名称。

FD

用于指示文件描述符类型的文件描述符文本字符串或数字。最常见的文件描述符类型是 cwd(当前工作目录)、rtd(根目录)、mem(内存映射文件)、txt(程序文本)和 mmap(内存映射设备)。

TYPE

文件类型,包括DIR(目录)、REG(常规文件)、CHR(字符特殊文件)、Netlink(网络连接文件)和FIFO(先进先出)。

DEVICE

设备标识号。

SIZE/OFF

以字节表示的文件大小和偏移量。

NODE

文件的节点号。

NAME

文件的挂载点和文件系统名称。

总结

在本教程中,我们学习了如何使用 lsof ,此命令带有多个选项,需要在平时的工作中多加练习。

主要分享低代码、微服务、容器化、SAAS‬、系统架构方面的的‬内容‬‬,希望‬大家‬点赞‬,评论,关注‬。

标签:文件,命令,Linux,打开,lsof,列出,大全
From: https://blog.51cto.com/sharepointchina/5962992

相关文章

  • 理解 Linux 文件权限
    理解Linux文件权限缺乏安全性的系统不是完整的系统。系统中必须有一套能够保护文件免遭非授权用户浏览或修改的机制。Linux沿用了Unix文件权限的办法,即允许用户和组......
  • Linux 环境变量
    Linux环境变量Linux环境变量能帮你提升Linuxshell体验。很多程序和脚本都通过环境变量来获取系统信息、存储临时数据和配置信息。在Linux系统上有很多地方可以设置......
  • 初识 Linux Shell
    初识LinuxShell本书学习的第一步,就是要找到Linux终端的所在位置。目前较常见的图形化终端有Konsole、Gnometerminal、xterm等几种。一般安装后在各个发行版的菜单......
  • 在Linux上如何得到一个段错误的核心转储
    转载:https://zhuanlan.zhihu.com/p/39736407#运行你的程序之前,执行一下脚本,将补助到的段错误保持到path/dump目录下,然后通过gdb去复盘查看mount-oremount,rw/ulimit......
  • linux下制作ext4文件系统
    1.生成一个空的2MiB文件ddif=/dev/zeroof=rootfs.ext4bs=1024count=2048(指定每一块大小为1024字节,一共又2048块,那么就是2048*1024B=2MiB)2.对生成的文件......
  • Linux部署docker镜像之PHP项目的Dockerfile步骤
    二、Docker部署步骤1、项目编译成镜像请cd到和Dockerfile同目录;例如:cd/home/docker dockerbuild-twebsite:latest.2、查看镜像并创建容器 dockerimages ......
  • Linux配置时间同步
    一、Master节点1、关闭ntp服务和自启动(必须root用户)yuminstall-yntpsudosystemctlstopntpdsudosystemctldisablentpd2、修改ntp配置文件vi/etc/ntp.con......
  • Linux 利用wkhtmltopdf动态生成pdf
    yumlocalinstallwkhtmltox-0.12.6-1.centos8.x86_64.rpmwkhtmltopdf--version;yuminstalllibpng15*yumlistlibpng15*wkhtmltopdf--disable-smart-shrinki......
  • Linux挂载磁盘
    1、查看磁盘信息fdisk-l2、格式化磁盘mkfs.xfs/dev/sda3、创建挂载目录mkdir-p/data/1/4、挂载并将挂载信息写入/etc/fstab,开启自动挂载mount/dev/sda......
  • Linux配置免密
    1、进入ssh目录cd~/.ssh2、若不存在则创建该目录mkdir-p~/.ssh3、查看是否有公钥cd~/.sshll|grepid_rsa.pub4、若没有,则公钥和私钥(然后敲(三个回车),就会......