转储共享内存

时间:2013-08-07 11:26:58

标签: memory shared

是否可以从Linux转储和调查共享内存内容?我在“ipcs -m”输出中发现了一些奇怪的共享内存段,并希望看到其中的内容。 也可以确定该段的创建者。 “nattch”似乎总是为零。

1 个答案:

答案 0 :(得分:2)

看看这个工具

Shmcat

这是一个很好的工具。

你对创作者的意思是什么?你的意思是过程的PID吗?在最后一种情况下,您可以使用

ipcs -mp

你会得到这个输出:

------ Shared Memory Creator/Last-op --------
shmid      owner      cpid       lpid
3211265    root       1857       1866

,其中

CPID 
The process ID of the job that created the shared memory segment.

LPID 
The process ID of the last job to attach or detach from the shared memory segment or change the semaphore value.

修改

我认为不可能使用标准工具记录这些信息。

我认为我们可以这样做。

假设我们执行命令:

ipcs -m

并获得这些结果

------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status
0x00000000 3211265    root      644        80         2

然后,使用命令grep 3211265 / proc / * / maps,我们获得:

/proc/1862/maps:bla bla bla rw-s 00000000 00:09 3211265                    /SYSV00000000 (deleted)
/proc/1863/maps:bla bla bla rw-s 00000000 00:09 3211265                    /SYSV00000000 (deleted)

通过这种方式,我们可以获得附加到细分市场的流程。

扫描/ proc / * / maps中的元素,您可以发现当前附加到给定段的PID。

您可以使用记录这些特定信息的bash脚本。