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.
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.
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
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?