0

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

4

1 回答 1

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 脚本。

于 2013-08-07T11:30:30.420 回答