Linux命令学习之lsof

欢迎访问我的个人博客

https://vincillau.github.io/

简介

lsof是一个用于列出进程打开的文件的命令。由于在Linux系统上“一切皆文件”,lsof不仅可以获取进程打开的普通文件的列表,还可以获取进程打开的目录、块特殊文件、字符特殊文件、套接字等各种信息。

lsof的安装

# 在ArchLinux上通过pacman安装。
sudo pacman -S lsof

lsof输出的信息

我们打开nano文本编辑器,然后执行lsof -c nano,输出如下:

\COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nano 19027 lsh cwd DIR 259,9 60 134261379 /home/lsh/learn/c
nano 19027 lsh rtd DIR 259,8 224 128 /
nano 19027 lsh txt REG 259,8 352840 34708268 /usr/bin/nano
nano 19027 lsh mem REG 259,8 6198768 102247963 /usr/lib/locale/locale-archive
nano 19027 lsh mem REG 259,8 154040 100664178 /usr/lib/libpthread-2.33.so
nano 19027 lsh mem REG 259,8 100096 100665882 /usr/lib/libz.so.1.2.11
nano 19027 lsh mem REG 259,8 74448 100665990 /usr/lib/libbz2.so.1.0.8
nano 19027 lsh mem REG 259,8 157456 100665887 /usr/lib/liblzma.so.5.2.5
nano 19027 lsh mem REG 259,8 2150424 100664130 /usr/lib/libc-2.33.so
nano 19027 lsh mem REG 259,8 453688 100664712 /usr/lib/libncursesw.so.6.2
nano 19027 lsh mem REG 259,8 170080 100665234 /usr/lib/libmagic.so.1.0.0
nano 19027 lsh mem REG 259,8 54380 34753993 /usr/share/locale/zh_CN/LC_MESSAGES/nano.mo
nano 19027 lsh mem REG 259,8 221480 100664118 /usr/lib/ld-2.33.so
nano 19027 lsh 0u CHR 136,2 0t0 5 /dev/pts/2
nano 19027 lsh 1u CHR 136,2 0t0 5 /dev/pts/2
nano 19027 lsh 2u CHR 136,2 0t0 5 /dev/pts/2
nano 19146 lsh cwd DIR 259,8 8192 100663426 /etc
nano 19146 lsh rtd DIR 259,8 224 128 /
nano 19146 lsh txt REG 259,8 352840 34708268 /usr/bin/nano
nano 19146 lsh mem REG 259,8 6198768 102247963 /usr/lib/locale/locale-archive
nano 19146 lsh mem REG 259,8 154040 100664178 /usr/lib/libpthread-2.33.so
nano 19146 lsh mem REG 259,8 100096 100665882 /usr/lib/libz.so.1.2.11
nano 19146 lsh mem REG 259,8 74448 100665990 /usr/lib/libbz2.so.1.0.8
nano 19146 lsh mem REG 259,8 157456 100665887 /usr/lib/liblzma.so.5.2.5
nano 19146 lsh mem REG 259,8 2150424 100664130 /usr/lib/libc-2.33.so
nano 19146 lsh mem REG 259,8 453688 100664712 /usr/lib/libncursesw.so.6.2
nano 19146 lsh mem REG 259,8 170080 100665234 /usr/lib/libmagic.so.1.0.0
nano 19146 lsh mem REG 259,8 54380 34753993 /usr/share/locale/zh_CN/LC_MESSAGES/nano.mo
nano 19146 lsh mem REG 259,8 221480 100664118 /usr/lib/ld-2.33.so
nano 19146 lsh 0u CHR 136,2 0t0 5 /dev/pts/2
nano 19146 lsh 1u CHR 136,2 0t0 5 /dev/pts/2
nano 19146 lsh 2u CHR 136,2 0t0 5 /dev/pts/2

可以看到lsof输出许多列的信息,各列信息的含义如下:

COMMAND: 执行该进程的可执行文件的名称
PID: 进程的进程号
USER: 进程的所有者
FD: 文件的文件描述符,可能有以下取值:

txt: 该文件是程序代码
mem: 内存映射文件
rtd: 根目录
cwd: 当前工作目录
打开文件的文件描述符,r表示读取访问,w表示写访问,u表示读写访问。
TYPE: 文件的类型
DEVICE: 设备号
SIZE/OFF: 文件的大小或偏移量
NODE: 文件的i-node号
NAME: 文件的绝对路径

常用选项

选项说明
没有选项如果lsof不加任何选项,将列出所有进程的打开文件
-h列出帮助信息
-c COMMAND显示进程名称以COMMAND开头的进程信息
-g GID列出组ID为GID的进程
-p PID列出进程号为PID的进程
-d FD列出文件描述符为FD的文件
+d DIR列出目录被打开的进程
+D DIR递归列出目录下被打开的文件
-u UID列出所有者ID为UID的进程

参考

  1. lsof(8) — Linux manual page
  2. 每天一个linux命令(51):lsof命令
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值