Linux实用命令 lsof命令

embedded/2024/9/23 16:38:25/

1.命令简介

lsof(list open files)用于查看进程打开的文件,是十分方便的系统监测工具。因为 lsof 命令需要访问核心内存和各种系统文件,所以需要root权限才可执行。

在 Linux 中,一切皆文件。通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件,所以lsof不仅可以查看进程打开的普通文件、目录,还可以查看进程监听的端口和socket等相关的信息。进程打开的每一个文件,系统在后台都会为之分配一个文件描述符,无论这个文件的本质如何。该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口,因为应用程序打开的文件描述符列表提供了大量关于应用程序本身的信息,通过lsof能够查看这个列表,对系统监测以及排错很有帮助。

lsof 查看的打开文件可以是:

普通文件
目录
字符或块设备文件
共享库
管道、命名管道
符号链接
网络文件(如 NFS file、网络 socket,Unix 域名 socket)
其它类型的文件,等等

2.命令格式

lsof [OPTIONS] [--] [NAMES]

在没有任何选项的情况下,lsof 列出所有属于活动进程的打开文件。

3.选项说明

-?, -h 显示帮助信息
-a
参数被视为逻辑与 AND,会影响全部的参数
-A A在配置了 AFS 分布式网络文件系统的系统上可用,其 AFS 内核代码是通过动态模块实现的。通过 A 指定备用名称列表文件,在该文件中可以找到动态模块的内核地址
-b避免 lsof 因调用可能阻塞的内核函数而产生阻塞,比如 lstat(2)、readlink(2) 和 stat(2) 等内核函数
-c C显示出以字符或字符串 C 开头的命令程序开启的文件,如 lsof -c init。如果 C 以斜杠 / 开头和结尾,则斜杠之间的字符被解释为正则表达式。该选项可多次指定
+c W指定 COMMAND 列的宽度,单位字符。默认为 9
-C禁用从内核的名称缓存中报告任何路径名
-D D指导 lsof 使用设备缓存文件。该选项的使用有时受到限制。-D 必须后面跟着一个函数字母,函数字母后面可以有一个路径名称。lsof 识别以下功能字母:?	报告设备缓存文件路径b	构建设备缓存文件i	忽略设备缓存文件r	读取设备缓存文件u	读取并更新设备缓存文件
+D D递归搜索目录 D。如显示在 /usr/local 及其子目录下被程序开启的文件:lsof +D /usr/local
+d D非递归搜索目录 D。如显示在 /usr/local 下被程序开启的文件:lsof +d /usr/local
-d FD指定文件描述符列表,可以采用逗号分隔,也可以指定范围。比如 1,2,3 或 1-3。如果前面包含尖号,表示排除。如显示 FD 为 4 的进程:lsof -d 4
+|-e S豁免(exempt)路径名称为 S 的文件系统不受可能阻塞的内核函数调用的影响。+e 选项豁免 stat(2)、lstat(2) 和大多数 readlink(2) 内核函数调用。-e 选项只能豁免 stat(2) 和 lstat(2) 内核函数调用
+|-E+E 指定使用端点信息显示 Linux 管道、Linux UNIX 套接字和 Linux 伪终端文件,并显示端点的文件。-E 则不显示端点的文件
-F LIST指定字符列表 LIST,选择输出给另一程序处理的字段,各字段对应的字符见下文
+|-f [cfgGn]f 本身澄清了路径名参数的解释方式。当后面跟着 c、f、g、G 或 n 时,它指定要启用(+)或抑制(-)内核文件结构信息。c 文件结构使用计数(not Linux)f 文件结构地址(not Linux)g 文件标志缩写(Linux 2.6.22 及更高版本)G 十六进制文件标志(Linux 2.6.22 及更高版本)n 文件结构节点地址(not Linux)
-g [PGID

http://www.ppmy.cn/embedded/115683.html

相关文章

php基础语法

PHP 是一种流行的服务器端脚本语言&#xff0c;广泛应用于 Web 开发。以下是 PHP 的基础语法和常用功能介绍&#xff0c;适合初学者入门学习。 1. PHP 基本语法 1.1 PHP 标签 PHP 代码可以嵌入到 HTML 中&#xff0c;使用 <?php ?> 标签来包裹 PHP 代码&#xff1a;…

keil安装HAL库

通义千问给我的控制电机定时器的代码里包含一个头文件stm32f1xx_hal.h 经过搜索&#xff0c;得知这个头文件需要安装HAL库 可以从意法半导体官方网站下载最新版的STM32CubeMX&#xff1a;https://www.st.com/en/development-tools/stm32cubemx.htmlhttps://www.st.com/en/dev…

更新 Git 软件

更新 Git 软件本身是指将你当前安装的 Git 版本升级到最新版本。不同的操作系统有不同的更新方法。以下是针对 Windows、macOS 和 Linux 的 Git 更新步骤&#xff1a; Windows 检查当前版本&#xff1a; git --version访问官网下载最新版本&#xff1a; 访问 Git 官方网站 (ht…

计算机毕业设计 公寓出租系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

Java项目实战II基于Java+Spring Boot+MySQL的网上租贸系统设计与实现(开发文档+源码+数据库)

目录 一、前言 二、技术介绍 三、系统实现 四、论文参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 "随着…

【设计模式】工厂模式、单例模式、观察者模式、发布订阅模式

1.工厂模式 class Factory{createProduct(name){return new Product(name);} } class Product{constructor(name){this.namename;}display(){console.log(product:${this.name});} }//使用 const factorynew Factory(); const p1factory.createProduct(P1); const p2factory.c…

数据结构之——单链表

一、单链表概述 单链表是一种链式存取的数据结构&#xff0c;在计算机科学中有着广泛的应用。它由一系列节点组成&#xff0c;每个节点包含两个主要部分&#xff1a;数据域和指针域。 数据域用于存储节点的数据元素&#xff0c;其类型可以根据具体的应用需求进行定义。例如&a…

Linux相关概念和重要知识点(4)(自举、vim)

1.语言和编译器的发展 &#xff08;1&#xff09;汇编语言的出现 计算机只能看懂二进制&#xff0c;但是用二进制实现一个功能就太难了&#xff0c;人们需要发明一种高效的语言。人们抽象出一套编程逻辑&#xff0c;定义了一系列操作&#xff0c;接下来就需要实现它。最初人们…