Ao redirecionar para um arquivo no linux tcsh, como posso alterar o tamanho do buffer de gravação para ser maior?

0

No linux tcsh, se eu estou criando um arquivo de log como:

CMD > cmd.log

Como posso fazer com que o buffer de gravação, que armazena os dados em cache antes de enviá-los para o disco, seja maior que o padrão? Como posso armazenar mais dados de gravação indo para cmd.log e diminuir a frequência de gravações para esse identificador de arquivo?

EDITAR: Ainda não descobri como fazer isso, mas encontramos o problema em nosso sistema. Alguém estava debatendo um arquivador de discos NFS com vários registros dos mesmos dados. Eles não estavam nem usando os discos locais para gerar incrementalmente o arquivo e copiando os resultados para o NFS.

Além disso, você pode usar

CMD_BLAH | gzip --stdout > log.gz

Que fará algum armazenamento em cache na memória principal, além de reduzir o tamanho final do arquivo de saída (geralmente).

    
por Ross Rogers 30.10.2009 / 17:41

2 respostas

3

você pode usar o pv 'para' acelerar 'o que está sendo canalizado.

-B BYTES, --buffer-size BYTES
   Use a transfer buffer size of BYTES bytes. A suffix of 
   "k", "m", "g", or "t" can be added to denote kilobytes (*1024),
   megabytes, and so on. The default buffer size is the block
   size of the input file's filesystem multiplied by 32 (512kb max),
   or 400kb if the block size cannot be determined.

aplicado ao seu exemplo, seria parecido com:

% CMD | pv -B 1m > cmd.log
    
por 07.12.2009 / 16:30
0

Você pode tentar configurar um canal nomeado ( man mkfifo ). Escreva a saída do seu comando para o pipe nomeado. Configure outro processo para ler periodicamente. Isso não alterará os buffers de leitura / gravação, mas controlará o fluxo de dados liberados para o disco com base em um intervalo de tempo especificado por você. Se você quiser controlar seu tamanho de buffer de gravação, você pode escrever um programa C simples que usa setvbuf .

    
por 07.12.2009 / 16:31