linux proc文件夹
问题描述:
我试图在linux中获得关于进程空间(伪文件系统)的一些信息。linux proc文件夹
上午找到几个过程被stucked弥补长时间在我的服务器(其确定) ,但是当我检查对应于该进程的PROC文件夹中,我发现以下信息,是相当有趣的发现(粗体数据) lrwxrwxrwx 1的rmail的rmail 0 08月01日16时11分的exe - >的/ usr/local/bin中/ geneliaTesting(删除)
dr-xr-xr-x 2 rmail rmail 0 Aug 1 16:19 attr
-r-------- 1 rmail rmail 0 Aug 1 16:19 auxv
-r--r--r-- 1 rmail rmail 0 Aug 1 16:24 cmdline
-rw-r--r-- 1 rmail rmail 0 Aug 1 16:19 coredump_filter
-r--r--r-- 1 rmail rmail 0 Aug 1 16:19 cpuset
lrwxrwxrwx 1 rmail rmail 0 Aug 1 16:11 cwd -> /home8
-r-------- 1 rmail rmail 0 Aug 1 16:19 environ
lrwxrwxrwx 1 rmail rmail 0 Aug 1 16:11 exe -> /usr/local/bin/geneliaTesting (deleted)
dr-x------ 2 rmail rmail 0 Aug 1 16:11 fd
-r--r--r-- 1 rmail rmail 0 Aug 1 16:19 io
-r-------- 1 rmail rmail 0 Aug 1 16:19 limits
..... and some other info.
二进制存在和正在由其他进程连续使用,以及... 任何任何想法??
在此先感谢。
答
这是一个正在运行的进程,其可执行文件在运行时已从存储设备中删除。
答
尝试使用lsof .. pipe来减少所以你可以读通过它...但是这将列出所有打开的文件/套接字(-n删除名称解析使得这个命令需要很长时间才能在网络套接字上完成反向DNS等)
lsof -n | less
然后你可以或许搜索你的过程
如果你看到被删除的部分..这大概可能是真实的,但仍然在运行,因为有些事情inode的开放
如果你会发现你可以看到的进程ID(pid)里面
ls /proc/PID_NUMBER/fd/
如果你看到它在那里,你可以很好地拉复制出来的
cp /proc/PID_NUMBER/fd/FD_NUMBER /tmp/copy_of_that_in_memory_file
那么你可以分析它..也许尝试它等字符串?它确定文件类型等
文件/ tmp/copy_of_that_in_memory_file
使用字符串
strings /tmp/copy_of_that_in_memory_file | less
不能说我知道那是什么...
使用strace可以帮你找一旦你知道了pid,它就会做什么..使用-f跟随开放的孩子..
strace -fp PID_NUMBER
二进制文件很好存在....并且正在被其他程序使用... – 2012-08-03 04:46:18
不,* a *二进制文件存在,与用于运行此程序的二进制文件名称相同。但是,原始可执行文件已被删除 - 并替换为具有相同名称的新副本,该文件可能与文件内容明显相同或不同。 – gby 2012-08-05 05:38:04