lsof [options] [name]
例如:源码test.c
int main(void) { FILE* fp = fopen("file", "w"); if(fp == NULL) { return 1; } while(1) sleep((unsigned int)1); return 0; }
gcc test.c ./a.out
查看哪些进程打开了file文件
where@ubuntu:~/workspace$ lsof file lsof: WARNING: can't stat() tracefs file system /sys/kernel/debug/tracing Output information may be incomplete. COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME a.out 6065 where 3w REG 8,1 0 429381 file a.out 6070 where 3w REG 8,1 0 429381 file
查看进程pid为6065的进程所开发的文件
where@ubuntu:~/workspace$ lsof -p 6065 lsof: WARNING: can't stat() tracefs file system /sys/kernel/debug/tracing Output information may be incomplete. COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME a.out 6065 where cwd DIR 8,1 4096 395339 /home/where/workspace a.out 6065 where rtd DIR 8,1 4096 2 / a.out 6065 where txt REG 8,1 8656 429363 /home/where/workspace/a.out a.out 6065 where mem REG 8,1 1864888 1053934 /lib/x86_64-Linux-gnu/libc-2.23.so a.out 6065 where mem REG 8,1 162632 1053906 /lib/x86_64-Linux-gnu/ld-2.23.so a.out 6065 where 0u CHR 136,4 0t0 7 /dev/pts/4 a.out 6065 where 1u CHR 136,4 0t0 7 /dev/pts/4 a.out 6065 where 2u CHR 136,4 0t0 7 /dev/pts/4 a.out 6065 where 3w REG 8,1 0 429381 /home/where/workspace/file
这边把这个进程所使用的动态库,以及占用的目录,打开的文件都显示出了。