Soy curioso.
Puede utilizarlo less
para leer un archivo de 100 GB sin problemas. Pero si cat
ingresa un archivo de 100 GB less
, creo que less
debe almacenar en búfer todo el archivo porque hay una tubería (¿era 64K?) entre el archivo y menos.
Entonces, ¿alguien conoce la política de almacenamiento en búfer less
? ¿Comenzará a almacenar en búfer desde el principio hasta que se agote la memoria?
Respuesta1
La página de manual de less
cubre el tema:
-bn or --buffers=n
Specifies the amount of buffer space less will use for each file,
in units of kilobytes (1024 bytes). By default 64K 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 buf‐
fer 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 64K (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.
La página de manual implica que el búfer eventualmente crecerá hasta alcanzar el tamaño de toda la entrada, si no lo restringe con las opciones -B y -b.