porque é o comando 'less' usando muito 'muito' ram

0

Eu estava usando menos para examinar um arquivo bastante grande (8GB em uma máquina com 4GB de RAM). Eu disse a ele para "rolar até o final" ( shift + G ) e ele funcionou por um bom tempo e foi morto por usar RAM. Eu pensei que less não usaria mais do que uma quantidade limitada de RAM, estou faltando alguma coisa?

    
por rogerdpack 23.03.2018 / 19:02

1 resposta

1

A quantidade padrão de memória usada por less depende se ele está lendo um arquivo ou de um canal; não está claro o que acontece ao ler a entrada redirecionada de um arquivo ( less < FilePath em vez de less FilePath ).

O seguinte trecho da página de manual (no Ununtu 16.04) mostra como controlar a memória que less aloca: -

-bn or --buffers=n

Specifies the amount of buffer space less will use for each file, in units of kilobytes (1024 bytes). By default 64 K of buffer space is used for each file (unless the file is a pipe; see the -B option). The -b option specifies instead that n kilobytes of buffer space should be used for each file. If n is -1, buffer space is unlimited; that is, the entire file can be read into memory.

-B or --auto-buffers

By default, when data is read from a pipe, buffers are allocated automatically as needed. If a large amount of data is read from the pipe, this can cause a large amount of memory to be allocated. The -B option disables this automatic allocation of buffers for pipes, so that only 64 K (or the amount of space specified by the -b option) is used for the pipe. Warning: use of -B can result in erroneous display, since only the most recently viewed part of the piped data is kept in memory; any earlier data is lost.

Eu li isso como significando que, ao ler de um pipe, -b não é usado, a menos que -B também seja uma opção. Se você quiser que isso seja especificado em todas as execuções, adicione export LESS='-B' ao seu ambiente (em bash , isso seria uma linha em ~/.bashrc ).

Observe que isso limitará a memória less tenta alocar, se a memória é restrita pelo espaço de troca inadequado ou pelo espaço máximo do programa de 4 GB em um sistema operacional de 32 bits.

    
por 23.03.2018 / 21:50

Tags