Linux Lsof命令教程及示例

Lsof是用于输出文件和处理相关信息的linux命令。 lsof 支持普通文件、目录、块特殊文件等不同类型的文件格式。 lsof 提供给定的命令输出可解析格式 cut 可用于过滤输出。在本教程中,我们将查看 lsof 命令。

12个装A4文件夹打孔活页夹穿孔2孔透明file简易装订夹资料收纳夹
| 月销量639件
优惠价12.8元
原价¥13.8

淘口令:

¥NKA2XKDayCL¥
 

为了跑 lsof 毫无问题的指挥和我们应该提供的成熟模式 root 特权。

列出进程和文件

最基本的用法 lsof 正在执行而不提供任何选项。我们要跑了 lsof .

$ lsof
List Process and Files
列出进程和文件
  • COMMAND 列显示命令或进程名称
  • PID 列显示进程id
  • USER 列显示进程的所有者
  • FD 列显示文件描述符,如内存、txt等。
  • TYPE 显示目录、内存区域等类型
  • DEVICE 列显示设备主id和次id
  • SIZE/OFF 列显示
  • NODE 列显示节点是
  • NAME 列显示打开的文件的名称

这里是 FD 或文件描述符类型。

  • CWD 当前工作目录
  • TXT 文本文件
  • MEM 内存映射文件
  • MMAP 内存映射设备
  • NUMBER 文件描述符

这里是 TYPE

  • REG 常规文件
  • DIR 目录
  • FIFO 先进先出
  • CHR 字符特殊文件

列出打开特定文件的进程

我们可以列出在给定文件中打开的进程。我们只需要指定文件的完整路径。

$ lsof /home/ismail
List Process Which Opened Specific File
列出打开特定文件的进程

列出给定目录中打开的文件

如果我们想递归地列出给定目录和子目录中当前打开的文件,我们可以使用 +D 选项和目录名。如果我们不想递归地列出子目录,我们可以使用 +d 选项如下。在本例中,我们将列出所有打开的文件 在下面 /usr/bin/

$ lsof +D /usr/bin
List Opened File In The Given Directory
列出给定目录中打开的文件

按流程名称列出并过滤

另一个有用的选项是根据给定的进程名列出和过滤文件。我们将使用 -c 选项和进程名称。在本例中,我们将列出 ssh 过程。

$ lsof -c ssh
List and Filter According To Process Name
按流程名称列出并过滤

按装入点列出进程

我们还可以根据文件装入点列出进程。实际上这和directory选项是一样的 +D . 在这个例子中,我们假设 /dev/sdb0 安装在 /mnt/ 我们只想列出这个分区进程。

$ lsof +D /mnt

按用户列出文件

现在另一个有用的选项是根据进程所有者列出文件。我们可以用 -u 具有进程所有者名称的选项。在本例中,我们将列出由拥有的进程打开的文件 ismail .

$ lsof -u ismail
List Files According To User
按用户列出文件

列出除给定用户外打开的文件

在前面的示例中,我们列出了给定用户打开的所有文件。还有一种情况,我们希望列出除给定用户之外的已打开文件。我们应该补充 ^ 在用户名之前。在本例中,我们将列出除用户以外的所有打开的文件 root .

$ lsof -u ^root

按特定进程列出所有打开的文件

我们可以通过提供进程id列出特定进程打开的文件。我们将使用 -p 命令和进程id。在本例中,我们将列出按进程id打开的文件 1107 .

$ sudo lsof -p 1107
List All Open Files By Specific Process
按特定进程列出所有打开的文件

重复运行Lsof

我们可能需要重复刷新lsof输出。这可以通过helper命令完成,但是lsof也提供了这个选项 -r 以秒为单位。在本例中,我们将在3秒内重复lsof输出。

$ sudo lsof -p 1107 -r 3
Run Lsof Repeatedly
重复运行Lsof

为了退出重复模式,我们可以使用 CTRL+C

还有多种选择

lsof命令可以接受多个选项进行筛选。默认行为是 or 所有给定选项的逻辑将创建一个长列表。如果我们需要的话 and 给定我们可以使用的选项 -a 在本例中,我们将只列出进程id中打开的文件 1107 和所有者 ismail .

$ lsof -p 1107 -u ismail -a
And Multiple Options
还有多种选择

列出所有网络连接

lsof命令非常适合网络连接。我们可以列出当前打开的网络连接 -i 选项如下。

$ lsof -i
List All Network Connections
列出所有网络连接

列出所有IPv4网络连接

我们只能列出IPv4打开的网络连接 -i4 选项如下。

$ lsof -i4
List All IPv4 Network Connections
列出所有IPv4网络连接

列出所有IPv6网络连接

我们只能列出IPv4打开的网络连接 -i6 选项如下。

$ lsof -i6
List All IPv6 Network Connections
列出所有IPv6网络连接

按端口列出进程

我们可以根据进程打开的端口列出进程。我们将使用 -i : 选项和端口号。在本例中,我们将列出打开端口的进程 22 .

$ lsof -i :22
List Processes According Port
按端口列出进程

列出TCP连接

我们只能列出具有 -i tcp 选项。

$lsof-i tcp协议

相关文章: 如何在Python中创建目录?

List TCP Connections
列出TCP连接

列出UDP连接

我们只能列出具有 -i udp 选项。

$ lsof -i udp
List UDP Connections
列出UDP连接

列出NFS文件

我们可以使用 -N 选项。我们还可以提供进程的用户名 -u 还有一个选择。在本例中,我们将列出NFS进程已打开的进程所拥有的进程 ismail

$ lsof -N -u ismail -a

© 版权声明
THE END
喜欢就支持一下吧,技术咨询可以联系QQ407933975
点赞0
分享