lsof 快速起步

本文介绍了lsof命令的各种应用场景,包括查看文件使用情况、网络连接状态等,并提供了丰富的示例帮助理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

lsof 快速起步

C.F.AN etony@tom.com

nov 16, 2005

Abstract:

通过大量的示例介绍使用lsof的方法.

文档出处:http://io.expert.com.br/~salvatti/tutoriais/seguranca/site/www.aei.ca/pmatilus/pub/lsof-quickstart.txt


Contents

查看对某个文件的使用情况

查看哪些进程对某个文件进行了调用:

$ lsof /etc/passwd 1

查看对文件系统的使用

/tmp目录被垃圾文件塞满了, 但是, 用ls 又看不到太大文件, 谁干的?

$ lsof /tmp

查找打开,但是不能连接的文件

一个进程打开一个文件, 然后将其设为 unlinked 状态, 则此文件资源仍能被进程使用, 但是其访问路径已经被删除了. 因此, 使用ls不能将其列出. 只有当进程结束时, 才能释放文件占用的资源

查找unlinked 文件, 选项 +L, 作用: 列出打开文件的连接数

$lsof +L

指定连接数的上限 $lsof +L1

同时指定文件系统, 则需要使用 -a(AND) 选项

$ lsof -a +L1 /home

无法卸载

查看谁令mount的分区无法卸载

$ lsof <file_system_name>

查看监听socket

查看网络服务

$ lsof -i

查看某个网络连接

$ lsof -i@aaa.bbb.ccc

$ lsof -iTCP@aaa.bbb.ccc:ftp-data *指定协议*

$ lsof -i4 *指定IP版本*

$ lsof -i6

识别 Netstat 连接

例如: netstat -p -t -n 的输出为:

Proto Recv-Q Send-Q Local Address Foreign Address State

tcp 0 0 218.56.203.246:52634 202.109.72.72:7000 ESTABLISHED

则可以: tony@tony:~$ lsof -iTCP@202.109.72.72:7000

COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME

xchat 4505 tony 12u IPv4 5775 TCP 218.56.203.246:52634->202.109.72.72:afs3-fileserver (ESTABLISHED)

查找针对某个命令打开的文件

使用命令的PID

$ lsof -p <PID>

使用命令名称

$ lsof -c <first_characters_of_command_name_that_interest_you>

$ lsof -c sendmail

查看谁在使用设备文件

$ lsof /dev/hda6

查看某个用户的操作

$ id -u tony

1000

$ lsof -u1000 or $ lsof -utony

$ lsof -u^tony * 则是取反的意思*

更多信息

更多信息参阅 lsof 的联机手册losf(1).

Bibliography

1
http://io.expert.com.br/~salvatti/tutoriais/seguranca/site/www.aei.ca/pmatilus/pub/lsof-quickstart.txt;

About this document ...

lsof 快速起步

This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.71)

Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

The command line arguments were:
latex2html lsof.tex -split 1 -local_icons

The translation was initiated by tony on 2005-12-18

 
08-03
`lsof` (LiSt Open Files) 是一个在 Linux 和 Unix 类操作系统中广泛使用的命令行工具,它能够列出系统上当前打开的文件和网络连接信息。由于在类 Unix 系统中几乎所有资源都被视为文件(包括网络连接、设备等),`lsof` 提供了强大的诊断和调试功能。 ### 常见用途和示例 #### 1. 列出所有打开的文件 最简单的使用方式是直接运行 `lsof`,它将显示系统中所有打开的文件信息。 ```bash lsof ``` 该命令输出通常包括 COMMAND、PID、USER、FD(文件描述符)、TYPE、DEVICE 和 NAME 等字段。 #### 2. 查看特定用户打开的文件 通过 `-u` 选项可以查看特定用户打开的文件。 ```bash lsof -u username ``` 这在多用户系统中非常有用,可以快速定位某个用户正在使用哪些文件或资源。 #### 3. 查看特定进程打开的文件 使用 `-p` 选项可以查看特定进程 ID (PID) 所打开的文件。 ```bash lsof -p 1234 ``` 其中 `1234` 是进程的 ID。此功能对于调试或分析某个具体进程的行为非常有帮助。 #### 4. 查看特定端口的网络连接 `lsof` 可以用于查找使用特定端口的网络连接。例如,查看使用 80 端口(HTTP)的连接。 ```bash lsof -i :80 ``` 这在诊断网络服务问题时非常有用,可以快速找到哪些进程正在使用特定端口。 #### 5. 查看某个目录下打开的文件 通过 `+D` 选项可以查看某个目录下所有打开的文件。 ```bash lsof +D /path/to/directory ``` 这对于了解某个特定目录中的文件是否被系统中某些进程占用非常有用。 #### 6. 查看所有 TCP 或 UDP 连接 使用 `-i` 选项可以指定协议类型,例如查看所有 TCP 连接。 ```bash lsof -i TCP ``` 同样,也可以查看 UDP 连接: ```bash lsof -i UDP ``` #### 7. 查找被删除但仍被进程占用的文件 有时候,文件可能已经被删除,但由于被某个进程占用而仍然占用磁盘空间。可以使用以下命令查找此类文件。 ```bash lsof | grep deleted ``` 这对于释放磁盘空间非常有用。 #### 8. 查看某个命令打开的文件 通过 `-c` 选项可以查看某个命令所打开的文件。 ```bash lsof -c sshd ``` 这将列出所有由 `sshd` 命令启动的进程所打开的文件。 #### 9. 显示文件描述符类型 `lsof` 输出中的 FD 列表示文件描述符类型,常见的值包括 `txt`(文本文件)、`mem`(内存映射文件)、`cwd`(当前工作目录)和 `IPv4`(IPv4 网络连接)等。了解这些信息有助于深入分析系统行为。 #### 10. 使用 `lsof` 杀死占用文件的进程 如果发现某个文件被某个进程占用,并且需要释放该文件,可以结合 `kill` 命令终止该进程。 ```bash kill -9 $(lsof -t /path/to/file) ``` 其中 `-t` 选项用于仅输出 PID,方便传递给 `kill` 命令。 #### 11. 查看 NFS 文件系统中的打开文件 `lsof` 也支持查看网络文件系统 (NFS) 中打开的文件。 ```bash lsof /mnt/nfs ``` 这对于管理跨网络的文件访问非常有用。 #### 12. 查看打开文件的进程树 使用 `-R` 选项可以显示进程的父进程 ID (PPID),从而查看进程树。 ```bash lsof -R ``` 这对于理解进程之间的关系非常有帮助。 ### 总结 `lsof` 是一个功能强大的工具,能够帮助系统管理员和开发人员快速诊断和解决与文件和网络连接相关的问题。熟练掌握其用法可以显著提高系统调试和性能优化的效率。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值