Linux : lsof 命令
lsof即list open files的缩写,在Linux和其他Unix上都由,Mac XOS上也是
查看打开文件/目录及对应进程
COMMAND 进程命令行字符串 PID 进程ID USER 用户 FD txt(进程的程序文件), cwd(进程所在的当前目前), mem(), FDIDuwr 进程内该文件的打开表示符id, 其后的字母表示操作模式 TYPE REG(一般文件), DIR(目录), CHR(字符设备文件),FIFO(管道),IPv4(IPv4网络套接字) DEVICE SIZE/OFF NODE NAME 文件路径
样例输出:
COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAME init 1 root cwd DIR 8,1 4096 2 / init 1 root rtd DIR 8,1 4096 2 / init 1 root txt REG 8,1 265848 2621507 /sbin/init init 1 root mem REG 8,1 47712 3149879 /lib/x86_64-linux-gnu/libnss _files-2.19.so
查看某个文件/目录的使用进程,直接在命令后跟文件/目录名即可:
# lsof server_time COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME server_ti 20999 hgf txt REG 8,1 9190 1442691 ./server_time
# lsof /home/hgf/net COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME bash 10075 hgf cwd DIR 8,1 4096 1442896 /home/hgf/net bash 15706 hgf cwd DIR 8,1 4096 1442896 /home/hgf/net bash 18324 hgf cwd DIR 8,1 4096 1442896 /home/hgf/net bash 18573 hgf cwd DIR 8,1 4096 1442896 /home/hgf/net sudo 20730 root cwd DIR 8,1 4096 1442896 /home/hgf/net su 20740 root cwd DIR 8,1 4096 1442896 /home/hgf/net bash 20741 root cwd DIR 8,1 4096 1442896 /home/hgf/net server_ti 20999 hgf cwd DIR 8,1 4096 1442896 /home/hgf/net lsof 21814 root cwd DIR 8,1 4096 1442896 /home/hgf/net lsof 21815 root cwd DIR 8,1 4096 1442896 /home/hgf/net
查看已删除文件
这里的已删除文件指的是文件被某些进程打开,但磁盘上该文件已经被删除了(目录列出的结果上来看)。这些文件实际还是存在于磁盘上,可以通过使用lsof来找出这些文件
# lsof|grep deleted init 1 root 10w REG 8,1 969 2360289 /var/log/upstart/systemd-logind.log.1 (deleted) init 1 root 27w REG 8,1 1406 2360292 /var/log/upstart/modemmanager.log.1 (deleted)
...
...... server_ti 20999 hgf txt REG 8,1 9190 1442691 /home/hgf/net/server_time (deleted)
此时我们可以从/proc文件系统中在对应的PID目录下复制出程序的文件,
root@ubuntu:/proc/20999# ll total 0 dr-xr-xr-x 9 hgf hgf 0 May 7 10:56 ./ dr-xr-xr-x 262 root root 0 Feb 5 00:26 ../ dr-xr-xr-x 2 hgf hgf 0 May 7 11:09 attr/ -rw-r--r-- 1 hgf hgf 0 May 7 11:09 autogroup -r-------- 1 hgf hgf 0 May 7 11:09 auxv -r--r--r-- 1 hgf hgf 0 May 7 11:09 cgroup --w------- 1 hgf hgf 0 May 7 11:09 clear_refs -r--r--r-- 1 hgf hgf 0 May 7 11:09 cmdline -rw-r--r-- 1 hgf hgf 0 May 7 11:09 comm -rw-r--r-- 1 hgf hgf 0 May 7 11:09 coredump_filter -r--r--r-- 1 hgf hgf 0 May 7 11:09 cpuset lrwxrwxrwx 1 hgf hgf 0 May 7 10:56 cwd -> /home/hgf/net/ -r-------- 1 hgf hgf 0 May 7 11:09 environ lrwxrwxrwx 1 hgf hgf 0 May 7 10:56 exe -> /home/hgf/net/server_time (deleted) dr-x------ 2 hgf hgf 0 May 7 10:56 fd/ ... root@ubuntu:/proc/20999# cp exe ~/
如果是程序打开的一个文件而不是程序本身,则可以在fd目录中找到对应的描述符编号
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。