我正在尝试调试 ubuntu 服务器上发生的事情。我尝试使用我的老朋友 smem,但它没有显示任何内容,即使以 root 身份运行。strace 显示了罪魁祸首:
open("/proc/32376/smaps", O_RDONLY) = -1 ENOENT (No such file or directory)
我开始尖叫和踢打。希望服务器不在我的办公室,否则它会遭受严重损坏。
也许有人知道为什么 smaps 文件不存在于这个盒子上?(我在 64 位盒子上运行 2.6.38 内核,所以它应该在这里,真的)
马蒂厄
答案1
我无法发表评论,因为我刚刚注册了我的帐户,但是答案@用户1979289是正确的;不确定为什么人们会否决它。
根据 Linux 内核文档:
CONFIG_PROC_PAGE_MONITOR:
Various /proc files exist to monitor process memory utilization:
/proc/pid/smaps, /proc/pid/clear_refs, /proc/pid/pagemap,
/proc/kpagecount, and /proc/kpageflags. Disabling these interfaces
will reduce the size of the kernel by approximately 4kb.
答案2
来自proc(5) 手册页:
仅当启用 CONFIG_MMU 内核配置选项时,此文件才会存在。
config-
检查内核配置以查看此选项是否启用(在/boot/
或 中查找文件/proc/config.gz
):
% grep CONFIG_MMU /boot/config-$(uname -r)\
CONFIG_MMU=y
CONFIG_MMU_NOTIFIER=y
答案3
应启用内核配置:
配置_PROC_PAGE_MONITOR