0

我正在尝试获取有关 linux 中进程空间(伪文件系统)的一些信息。

我发现很少有进程在我的服务器中长时间卡住(没关系)但是当我检查与该进程相对应的 proc 文件夹时,我发现了以下信息并且很有趣地找到(粗体数据) lrwxrwxrwx 1 rmail rmail 0 Aug 1 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.

二进制文件存在并且被其他进程持续使用......任何想法?

提前致谢。

4

2 回答 2

1

这是一个正在运行的进程,其可执行文件在运行时已从存储设备中删除。

于 2012-08-01T12:11:12.867 回答
0

尝试使用 lsof .. pipe to less 以便您可以通过它阅读...但这将列出所有打开的文件/套接字(-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

不能说我知道那是什么...

一旦您也知道 pid,strace 可以帮助您找出它在做什么.. 使用 -f 跟随打开的孩子..

strace -fp PID_NUMBER
于 2017-05-09T16:26:00.400 回答