是否可以从 Linux 转储和调查共享内存内容?我在“ipcs -m”输出中发现了一些奇怪的共享内存段,并想看看里面有什么。也可以确定该段的创建者。“nattch”似乎总是为零。
问问题
5590 次
1 回答
2
看看这个工具
这是一个很好的工具,可以满足您的目的。
创作者是什么意思?你的意思是进程的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 回答