netstat issue: não é possível enviar saída de 'netstat -c' para uma montagem nfs

2

Versão resumida:

O Netstat funciona bem, exceto quando eu redireciono a saída para um arquivo no NFS.

não funciona: netstat -c > /nfs/mount/file

funciona: netstat > /nfs/mount/file

funciona: netstat -c

funciona: netstat -c > /tmp/file

Sintomas: arquivo vazio, sem mensagens de erro.

Isso está usando o bash no Ubuntu 10.10

Versão mais longa: Estou trabalhando em um projeto que requer que coletemos estatísticas iostat e netstat de todos os nós em um cluster pequeno (~ 32 nós) durante a execução do teste. Escrevemos scripts para criar instâncias de iostat e netstat com os sinalizadores apropriados em cada nó, com cada processo gravando em um arquivo em um diretório armazenado em um compartilhamento NFS (cada nome de arquivo incorpora o nome do host do qual foi gravado).

Os scripts iostat estão funcionando bem, mas estamos vendo um problema com o script netstat.

Por algum motivo, se eu iniciar um processo netstat com o sinalizador -c, indicando saída contínua a cada segundo, e canalizar isso para um arquivo no diretório NFS, um arquivo vazio será criado e nenhuma saída será gravada nele. .

Se eu fizer a mesma coisa no servidor que está fornecendo o armazenamento NFS, escrevendo no mesmo diretório (com a exceção de que é o armazenamento local, nesse caso), tudo funcionará bem. Além disso, se eu gravar em um sistema de arquivos local no host com problemas (como /tmp/foo.txt), então tudo também está bem.

Também vale a pena notar, se eu apenas executar o 'netstat', sem o sinalizador -c, e canalizar isso para um arquivo armazenado no NFS, que funciona também.

Portanto, parece haver algo um pouco estranho com o sinalizador de saída contínua do netstat que interage com o NFS de uma maneira que difere de outras saídas contínuas de ferramentas (como o sinalizador "-t 10" do iostat).

Todos os hosts nesta configuração estão executando o Ubuntu 10.10.

    
por Buck 05.04.2011 / 01:46

3 respostas

0

E sobre isso?

script -f -c "netstat -c" /nfs/mount/file > /dev/null

Eu acho que pode funcionar, embora eu não tenha um servidor NFS à mão para testá-lo.

    
por 05.04.2011 / 18:34
1

strace mostra meu netstat -c gastando uma grande quantidade de tempo resolvendo nomes de hosts antes de gerar seu resultado - talvez tente netstat -nc > /nfs/foo ou espere mais tempo antes de matá-lo. Eu não acho que isso tenha alguma coisa a ver com o NFS - eu recebo o mesmo atraso ao redirecionar para /tmp/foo

    
por 05.04.2011 / 15:27
0

Para configurações específicas do NFS, o atraso na sincronização pode ser muito grande e parece que netstat não está liberando sua saída após SIGKILL .

Eliminar o processo após 15 segundos ou mais resultou em um arquivo vazio, como você descreveu. Eu esperei por um longo período de tempo (eu fui tomar café), e quando voltei, netstat tinha escrito no arquivo.

Você pode verificar esse comportamento?

    
por 05.04.2011 / 18:04