Linux 命令行工具:lsof 入门指南

简介: `lsof` 命令详解:用于列出系统中打开的文件,包括进程、网络连接、管道等。通过 `-p` 查看指定进程文件,`-u` 查看用户文件,`-i` 查看网络连接。还能定位占用端口的进程,显示已删除但仍在使用的文件,以及分析程序如何操作文件。是Linux用户问题定位和性能优化的得力助手。学习并熟练运用 `lsof` 可提升工作效率。

在我们深入 Linux 的奥妙时,总会遇到需要查看文件或者进程相关信息的场景。

这时候,一个强大的帮手—— lsof 命令就显得非常重要。

本文将深入浅出地介绍 lsof 命令,让你无论是初学者还是有一定编程经验的开发者,都能轻松掌握它。

什么是 lsof?

lsof 是 “List Open Files” 的缩写,顾名思义,它的作用就是列出系统中当前被打开的文件。但这里所说的 “文件”,不仅仅是我们日常理解的文档那么简单,它还包括了目录、库文件、网络套接字 (socket)、管道 (pipes) 等。

为什么要查看打开的文件呢?

因为在 UNIX 或 Linux 系统中,“一切皆文件”,很多问题定位和性能优化的工作都会涉及到文件的操作。通过 lsof,我们可以轻松查看哪个进程打开了哪些文件,进而对系统的行为有更深入的理解。

基本用法

查看特定进程打开的文件

如果我们要查看特定进程打开了哪些文件,可以使用 -p 选项后跟进程 ID。举个例子,查看进程 ID 为 1234 的进程打开的文件:

lsof -p 1234

查看特定用户打开的文件

如果想要查看特定用户(例如 tom)打开的文件,可以使用 -u 选项:

lsof -u tom

查看特定类型的文件

lsof 也可以用来查看打开的特定类型的文件,比如查看所有网络连接:

lsof -i

实用技巧

查找哪个进程占用了端口

在 Linux 开发中,我们经常会遇到需要查找哪个进程占用了某个端口的情况。通过 lsof 配合 -i 选项,这个任务就变得易如反掌。

假如我们需要查看哪个进程占用了 8080 端口:

lsof -i:8080

查看被删除但仍被进程使用的文件

lsof 还有一个非常实用的功能,就是查看那些已经被删除,但是仍被某些进程占用的文件,这类文件在磁盘空间不释放的问题定位上非常有用。使用方法如下:

lsof +L1

这里的 +L1 参数会列出所有被删除但至少还有一个进程在使用的文件。

查看程序打开文件的情况

有时候,我们可能对整个系统范围内的文件打开情况不感兴趣,而只想要着重查看某个程序如何操作文件。

比如,我们想要看看 nginx 是如何打开文件的:

lsof -c nginx

总结

lsof 是每个 Linux 用户都应该掌握的必备工具。它不仅能帮助我们理解系统的运行状态,还能在多种场景下快速定位问题。

希望通过本文的介绍,你能对 lsof 命令有一个全面的了解并加以实践,提升工作效率。

上手 lsof 其实并不难,关键在于理解其提供的信息并结合实际情况加以应用。

希望各位在阅读完本文后,能将其融会贯通,成为自己解决问题的利器。

相关文章
|
安全 Linux
Linux系统之lsof命令的基本使用
【10月更文挑战第14天】Linux系统之lsof命令的基本使用
835 2
Linux系统之lsof命令的基本使用
|
运维 监控 Linux
深入理解Linux系统运维:命令行工具的力量
【9月更文挑战第14天】在Linux的世界里,命令行工具是系统管理员的瑞士军刀。本文将带你领略命令行的魅力,从基础操作到高级技巧,让你的运维工作更加高效和精准。准备好了吗?让我们一起开启这段探索之旅!
|
存储 安全 Java
Linux 命令行工具
`pk12util`是Linux下的命令行工具,用于处理PKCS#12文件,适用于证书和私钥管理。它跨平台,基于Java,支持创建、列出、导入和导出操作,便于脚本自动化。例如,用`pk12util encode`命令可创建受密码保护的PKCS#12文件,而`list`命令则用于查看文件内容。使用时务必注意安全,使用强密码,并备份重要文件。在实际操作前,应在安全环境中测试命令。
|
Linux 网络安全 Perl
Linux命令:探索强大的命令行工具
探索Linux命令行工具,了解CLI基本结构:命令名、选项和参数。本文概述常用命令,如文件和目录操作(ls, cd, mkdir)、文本处理(cat, grep, sed)和系统管理(top, df, free)。学习技巧,如Tab补全、通配符和使用管道符、重定向。掌握命令,提升Linux使用效率。
|
Linux 数据库 开发者
【专栏】在Linux系统管理中,熟练使用命令行工具查找文件至关重要:如何按名称和 Grep 内容查找文件?
【4月更文挑战第28天】在Linux系统管理中,熟练使用命令行工具查找文件至关重要。本文介绍了如何使用`find`和`locate`按名称查找文件,以及结合`grep`按内容搜索。`find`能基于多种属性搜索,包括文件系统层次,而`locate`依赖索引数据库,速度更快。`grep`则用于在文件中搜索特定文本,支持正则表达式和多种选项。通过组合`find`/`locate`和`grep`,可实现更复杂的搜索任务,提升工作效率。
587 0
|
监控 网络协议 Unix
深入探索Linux的lsof命令
在Linux系统中,了解哪些文件被哪些进程打开对于系统管理和问题诊断是极其重要的。这正是`lsof`命令,即List Open Files,发挥其强大功能的场景。本文旨在详细介绍`lsof`的起源、底层原理、参数意义,常见用法,并详解其返回结果的每个字段含义。此外,我们将讨论在使用`lsof`命令时需要注意的事项。
|
网络协议 Linux 网络安全
curl(http命令行工具):Linux下最强大的网络数据传输工具
curl(http命令行工具):Linux下最强大的网络数据传输工具
944 0
|
Linux 开发工具
949.【linux】常用的命令行工具
949.【linux】常用的命令行工具
340 2
|
网络协议 Unix Linux
《Linux中lsof的神奇探秘:打开文件的魔法与更多相似利器》
《Linux中lsof的神奇探秘:打开文件的魔法与更多相似利器》
291 1
|
网络协议 Unix Linux
Linux命令(34)之lsof
Linux命令(34)之lsof
630 2