如何查看Linux中正在使用的文件

时间:2015-04-08 07:42:14

标签: linux kernel

我有一个问题,我如何才能看到linux中正在使用哪个文件。说实话,这个操作系统不是Linux的正常版本,它非常瘫痪,例如没有像“lsof”这样的命令。我找到了命令“strace”,但这不是我想要的。我听说我可以用黑客内核列出这个文件?

我想看看哪个文件正在使用中,因为在这台机器上有一点空闲空间,我想删除程序运行时没有使用的文件。

我很抱歉我的英语不好。

3 个答案:

答案 0 :(得分:1)

您可以通过走/proc virtual filesystem

来按流程检查打开的文件

每个正在运行的进程都在/ proc / PID中有一个条目。每个进程目录中都有一个名为“fd”的目录,它代表当前打开的进程file descriptors。它们显示为实际资源的链接。

e.g。在我运行的VM上

root@wvm:/proc/1213/fd# pidof dhclient
1213
root@wvm:/proc/1213/fd# cd /proc/1213/fd
root@wvm:/proc/1213/fd# ls -l
total 0
lrwx------ 1 root root 64 Apr  8 09:11 0 -> /dev/null
lrwx------ 1 root root 64 Apr  8 09:11 1 -> /dev/null
lrwx------ 1 root root 64 Apr  8 09:11 2 -> /dev/null
lrwx------ 1 root root 64 Apr  8 09:11 20 -> socket:[4687]
lrwx------ 1 root root 64 Apr  8 09:11 21 -> socket:[4688]
l-wx------ 1 root root 64 Apr  8 09:11 3 -> /var/lib/dhcp/dhclient.eth0.leases
lrwx------ 1 root root 64 Apr  8 09:11 4 -> socket:[4694]
lrwx------ 1 root root 64 Apr  8 09:11 5 -> socket:[4698]
root@wvm:/proc/1213/fd#

查看'dhclient'的内核进程信息 - 我找到它的pid,然后查看fd子目录中的进程id。它有一小组开放描述符 - stdin,stdout和stderr(0,1,2)都已连接到/ dev / null,有四个套接字打开,但文件描述符3附加到数据文件{{1} }

所以你可以使用shell工具复制lsof的功能来walk / proc并从这些链接中过滤出文件名。

答案 1 :(得分:0)

你能使用“顶级”命令吗?如果是这样,那么这应该显示在linux上运行的所有顶级OS利用操作的列表。你可以做到

ps -ef|grep <process_no>  

这将给出细节。要么可以停止该过程,要么使用

将其终止
kill -9 <process no>

答案 2 :(得分:0)

使用lsof command按流程列出所有打开的文件。