Linux 查看占用文件的进程

点击访问 Linux 命令大全 >>

在使用 Linux 过程中,有时我们需要知道某个文件正在被哪些进程在使用。得知文件被哪些进程正在使用,就可以通过 kill 命令强制“杀死”进程,然后就可以对文件进行编辑、删除等操作了,Linux 提供了 lsof 命令来查看指定文件正在被哪些进程使用。

lsof 命令用于查看进程开打的文件,打开文件的进程,进程打开的端口(TCP、UDP),找回/恢复删除的文件,是十分方便的系统监视工具。因为 lsof 命令需要访问核心内存和各种文件,所以需要 root 用户执行。

lsof 语法

lsof [参数] [文件]

参数说明:

  • -a:列出打开文件存在的进程    

  • -c <进程名>:列出指定进程所打开的文件    

  • -g:列出GID号进程详情    

  • -d <文件号>:列出占用该文件号的进程    

  • +d <目录>:列出目录下被打开的文件    

  • +D <目录>:递归列出目录下被打开的文件    

  • -n <目录>:列出使用NFS的文件    

  • -i <条件>:列出符合条件的进程    

  • -p <进程号>:列出指定进程号所打开的文件    

  • -u:列出UID号进程详情    

  • -h:显示帮助信息    

  • -v:显示版本信息    

示例

(1)查看系统中所有打开文件的进程信息,例如:

[hxstrive@localhost ~]$ lsof
COMMAND     PID  TID           USER   FD      TYPE             DEVICE  SIZE/OFF     NODE NAME
systemd       1                root  cwd   unknown                                       /proc/1/cwd (readlink: Permission denied)
systemd       1                root  rtd   unknown                                       /proc/1/root (readlink: Permission denied)
systemd       1                root  txt   unknown                                       /proc/1/exe (readlink: Permission denied)
systemd       1                root NOFD                                                 /proc/1/fd (opendir: Permission denied)
kthreadd      2                root  cwd   unknown                                       /proc/2/cwd (readlink: Permission denied
...

(2)查看指定文件正在被哪个进程打开,例如:

[hxstrive@localhost ~]$ lsof test.ods 
COMMAND     PID     USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
soffice.b 13507 hxstrive    3uW  REG  253,0     7260 3653596 test.ods

注意:在执行“lsof test.ods”命令之前,先使用 LibreOffice 工具创建一个 Excel 表格文件,且命名为“test”(创建完成后不要关闭 LibreOffice)。

(3)列出进程号为 13597 的进程打开的所有文件,例如:

[hxstrive@localhost ~]$ lsof -p 13507
COMMAND     PID     USER   FD      TYPE             DEVICE  SIZE/OFF     NODE NAME
soffice.b 13507 hxstrive  cwd       DIR              253,0      4096  3653566 /home/hxstrive
soffice.b 13507 hxstrive  rtd       DIR              253,0       224       64 /
soffice.b 13507 hxstrive  txt       REG              253,0      7168 52222165 /usr/lib64/libreoffice/program/soffice.bin
soffice.b 13507 hxstrive  mem       REG              253,0   8337872 52123259 /usr/lib64/libreoffice/program/libcuilo.so
soffice.b 13507 hxstrive  DEL       REG                0,4              98309 /SYSV00000000
soffice.b 13507 hxstrive  mem       REG              253,0    341752 52144539 /usr/lib64/libreoffice/program/libsvgiolo.so
...
说说我的看法
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号