我在RHEL 4.6主机上使用VMware 6.0.2。 虚拟机是MontaVista CGE 5.0(2.6.21内核)。 我试图让虚拟机上运行的应用程序将任何核心文件放在HGFS卷上,即在“共享文件夹”中。 根据/ proc / sys / kernel / core_pattern中给出的path和格式创build核心文件,但是它们始终为零。 如果我将path更改为本地path(在VM中的虚拟磁盘上),一切正常。
任何想法,我必须做的核心文件写入共享文件夹?
谢谢你的帮助!
我已经在这里确认了这个问题。 我不知道为什么Linux拒绝将核心内容转储到HGFS共享(Arch Linux kernel 2.6.32,这里是open-vm-tools 2010.01.19),但我确实有一个解决scheme。
Linux 2.6.19及更高版本将允许您通过任意程序pipe理核心转储,因此请创build一个shell脚本,将其stdin复制到HGFS共享中的一个文件中,例如:
#!/bin/sh # Where do you want the core to go? COREFILE=/mnt/hgfs/vmshare/core tee $COREFILE >/dev/null
当然,你可能希望为$COREFILE实现一些逻辑,以便每个后续的核心转储不会覆盖最后一个。
将脚本保存为/usr/local/bin/core.sh ,然后设置文件的可执行位并configurationcore_pattern,如下所示:
# chmod +x /usr/local/bin/core.sh # sysctl -w kernel.core_pattern='|/usr/local/bin/core.sh'
Linux将通过你的shell脚本来pipe理任何核心转储,这对写入HGFS共享本身没有任何问题。
如果你想知道,不能简单地把tee命令直接放在kernel.core_pattern中,因为在2.6.24之前的内核中你不能用这个sysctl指定一个pipe命令的参数。 出于同样的原因,不幸的是,我不能想到一个好方法,如果你绑定到内核2.6.21,使用这种方法将core_pattern模板说明符合并到你的核心转储文件名中。