查看文件占用的利器lsof

lsof(List Open Files)是一个用于显示系统当前打开文件的工具,可以查看系统中哪些文件被打开,哪些进程打开了这些文件,以及这些文件被使用的情况等。lsof可以帮助系统管理员和程序员及时发现问题,比如查看系统中占用磁盘空间较多的文件,找出哪些文件正在被某个进程占用等。

lsof的基本用法格式为:lsof [选项] [文件路径]

下面给出一些lsof的常用选项及例子:

1. 显示所有进程打开的文件,加more或者grep来过滤

lsof|more 

# lsof |more
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
      Output information may be incomplete.
COMMAND      PID    TID TASKCMD              USER   FD      TYPE             DEVICE SIZE/OFF       NODE NAME
systemd        1                             root  cwd       DIR              252,1     4096          2 /
systemd        1                             root  rtd       DIR              252,1     4096          2 /
systemd        1                             root  txt       REG              252,1  1620224    1051400 /usr/lib/systemd/systemd
systemd        1                             root  mem       REG              252,1  1369384    1064234 /usr/lib/x86_64-linux-gnu/libm-2.31.so
systemd        1                             root  mem       REG              252,1   178528    1048921 /usr/lib/x86_64-linux-gnu/libudev.so.1.6.17
systemd        1                             root  mem       REG              252,1  1575112    1051694 /usr/lib/x86_64-linux-gnu/libunistring.so.2.1.0
systemd        1                             root  mem       REG              252,1   137584    1051558 /usr/lib/x86_64-linux-gnu/libgpg-error.so.0.28.0
systemd        1                             root  mem       REG              252,1    67912    1051584 /usr/lib/x86_64-linux-gnu/libjson-c.so.4.0.0

字段说明
  • COMMAND:命令

  • PID:进程ID

  • PPID:父进程ID

  • USER:进程所有者

  • PGID:进程所属组

  • FD:文件描述符,文件描述符,cwd(应用程序的当前工作目录)、txt(程序代码)、mem(内存映射文件)等

  • TYPE:文件类型,如 DIR(目录)、CHR(字符类型)、REG(常规)

  • 等,

  • DEVICE:设备编号

  • SIZE:文件的大小

  • NODE:索引节点(文件在磁盘上的标识)

  • NAME:打开文件的确切名称

2. 显示指定目录下的打开文件

lsof /var/log/messages

3. 查看指定进程所打开的文件

lsof -p 10  (根据进程号)

lsof -c sshd  (根据进程名)

4. 查找指定用户打开的文件

lsof -u username

5. 查找某个端口被哪个进程占用

lsof -i :port

lsof -i :53

COMMAND   PID            USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
systemd-r 507 systemd-resolve   12u  IPv4  18449      0t0  UDP localhost:domain 
systemd-r 507 systemd-resolve   13u  IPv4  18450      0t0  TCP localhost:domain (LISTEN)

6. 列出所有使用TCP和UDP协议的网络连接

lsof -i tcp

lsof -i udp

7. 显示指定文件的相关进程

lsof /file

8. 查找已被删除但仍被进程占用的文件,这个可以用来恢复删除文件

lsof | grep deleted

9. 列出所有的网络连接

lsof -i

10. 递归列出某目录下所有打开的文件

lsof +D /path/to/directory |more

需要注意的是,lsof需要以root权限运行才能查看所有系统进程和文件,否则只能查看当前用户的进程和文件。

总的来说,lsof是一个功能强大的工具,能够帮助系统管理员及时发现问题,定位文件打开问题,优化系统性能等。通过掌握lsof的用法,可以更好地管理系统资源,提高系统的稳定性和安全性

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值