VMware Workstation no Linux: Descartando arquivos principais em uma pasta compartilhada

4

Estou usando o VMware 6.0.2 em um host do RHEL 4.6. As VMs são o MontaVista CGE 5.0 (kernel 2.6.21). Eu estou tentando obter aplicativos em execução nas VMs para soltar todos os arquivos principais em um volume HGFS, ou seja, em uma "pasta compartilhada". Os arquivos principais são criados de acordo com o caminho e o formato fornecidos em / proc / sys / kernel / core_pattern, mas eles são sempre de comprimento zero. Se eu mudar o caminho para um caminho local (em um disco virtual na VM), tudo está bem.

Alguma idéia do que eu preciso fazer para obter os arquivos principais gravados em uma pasta compartilhada?

Obrigado pela sua ajuda!

    
por user12357 08.04.2010 / 21:24

1 resposta

1

Eu confirmei o problema aqui. Eu não sei porque o Linux se recusa a despejar o conteúdo do núcleo para um compartilhamento HGFS (Arch Linux kernel 2.6.32 com open-vm-tools 2010.01.19 aqui), mas eu tenho uma solução.

O Linux 2.6.19 e superior permitirá que você canalize os core dumps por meio de um programa arbitrário, portanto, crie um script de shell que copie seu stdin para um arquivo no seu compartilhamento HGFS, por exemplo:

#!/bin/sh

# Where do you want the core to go?
COREFILE=/mnt/hgfs/vmshare/core

tee $COREFILE >/dev/null

É claro que você pode querer implementar alguma lógica para $COREFILE , de modo que cada core dump subseqüente não apenas sobrescreva o último.

Salve seu script como /usr/local/bin/core.sh , defina o bit executável do arquivo e configure o core_pattern da seguinte forma:

# chmod +x /usr/local/bin/core.sh
# sysctl -w kernel.core_pattern='|/usr/local/bin/core.sh'

O Linux enviará todos os core dumps através do seu shell script, que não terá problemas para gravar no próprio compartilhamento HGFS.

Se você está se perguntando, você não pode simplesmente colocar o comando tee diretamente em kernel.core_pattern, porque em kernels anteriores a 2.6.24 você não pode especificar argumentos para um comando pipe com este sysctl. Pelo mesmo motivo, infelizmente não consigo pensar em uma boa maneira de incorporar os especificadores de modelo core_pattern nos nomes dos arquivos de despejo principal usando este método, se você estiver ligado ao kernel 2.6.21.

    
por 11.04.2010 / 05:23