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
這邊把這個進程所使用的動態庫,以及佔用的目錄,打開的文件都顯示出了。