[io相关] lsof用法实验测试

本文介绍如何通过挂载ISO文件并使用lsof工具来查找正在使用文件系统的进程,进而安全卸载。此外,还详细展示了如何恢复已删除的小文件,包括利用文件描述符进行内容恢复的方法。
    1>查找谁在使用文件系统
       sudo mount -o loop CentOS-6.2-x86_64-bin-DVD1.iso  /mnt/dir/
       tail -f /mnt/dir/TRANS.TBL
       sudo umount  /mnt/dir
       lsof /mnt/dir
       kill -9  pid  
       sudo umount /mnt/dir




    2> 恢复删除的小文件
       touch test

       echo my test file > test

       md5sum test  或( sha1sum  test )

       tail -f test
       rm -f test
       lsof | grep test
       cat /proc/5433/fd/3

       cat /proc/5433/fd/3 > test

       md5sum  test  或 ( sha1sum test )  证明文件内容相同

### lsof 命令简介 `lsof` 是 Linux 系统中一个非常强大的命令,用于列出当前系统中打开的文件和相关进程的信息。Linux 系统的设计理念是“一切皆文件”,因此 `lsof` 可以用来查看包括常规文件、目录、网络套接字、管道、共享库等多种类型的资源。它对于系统管理和故障排查非常有用,能够帮助用户快速了解哪些进程正在使用特定的文件或资源[^3]。 ### 基本用法 #### 查看所有打开的文件 要查看系统中所有打开的文件,可以直接运行 `lsof` 命令而不带任何参数: ```bash lsof ``` 此命令将输出一个列表,包含所有打开的文件及其相关信息,如进程ID(PID)、用户、文件描述符等[^2]。 #### 根据文件名查找 如果需要查找特定文件的使用情况,可以使用文件名作为参数。例如,要查看哪些进程正在使用名为 `example.txt` 的文件: ```bash lsof example.txt ``` 这将显示所有与 `example.txt` 相关的打开文件信息[^4]。 #### 根据端口查找 `lsof` 也可以用来查找使用特定网络端口的进程。例如,要查看哪些进程正在使用端口 80(通常用于 HTTP 服务): ```bash lsof -i :80 ``` 该命令将列出所有与端口 80 相关的网络连接及其对应的进程信息[^4]。 #### 查看指定用户的文件 如果只想查看某个用户的打开文件,可以使用 `-u` 参数。例如,查看用户 `john` 所有打开的文件: ```bash lsof -u john ``` 这将显示用户 `john` 的所有打开文件及其相关信息[^4]。 #### 定时刷新 `lsof` 支持定时刷新功能,这对于监控文件或端口的变化非常有用。使用 `-r` 参数可以指定刷新间隔(以秒为单位)。例如,每秒刷新一次并查看端口 3306 的使用情况: ```bash lsof -r 1 -i :3306 ``` 此命令将每秒更新一次,显示端口 3306 的当前使用情况[^4]。 ### 高级用法 #### 查看特定进程的文件 如果知道进程的 PID,可以使用 `-p` 参数来查看该进程的所有打开文件。例如,查看 PID 为 1234 的进程的文件: ```bash lsof -p 1234 ``` 这将列出该进程的所有打开文件及其相关信息。 #### 查看网络连接 除了文件,`lsof` 还可以用来查看网络连接。例如,查看所有 TCP 连接: ```bash lsof -i TCP ``` 此命令将列出所有 TCP 连接及其对应的进程信息[^3]。 #### 查看特定类型的文件 `lsof` 支持多种文件类型,可以通过不同的选项来查看。例如,查看所有目录类型的文件: ```bash lsof -d DIR ``` 这将列出所有目录类型的打开文件及其相关信息。 ### 示例 #### 示例 1:查找某个文件的打开进程 假设我们想查找哪些进程正在使用 `/var/log/syslog` 文件: ```bash lsof /var/log/syslog ``` 此命令将显示所有与 `/var/log/syslog` 相关的打开文件信息,包括进程的 PID、用户、文件描述符等[^2]。 #### 示例 2:查找某个端口的使用情况 如果我们想查找哪些进程正在使用端口 22(SSH 服务): ```bash lsof -i :22 ``` 此命令将列出所有与端口 22 相关的网络连接及其对应的进程信息。 #### 示例 3:定时刷新并查看某个文件的使用情况 如果我们想每秒刷新一次并查看 `example.txt` 文件的使用情况: ```bash lsof -r 1 example.txt ``` 此命令将每秒更新一次,显示 `example.txt` 文件的当前使用情况。 ### 总结 `lsof` 是一个功能丰富的命令,适用于多种场景下的文件和进程管理。通过上述示例和用法,用户可以根据具体需求灵活使用 `lsof` 来监控和管理系统的资源使用情况。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值