1

Я хотел бы направить команду в более медленную, с довольно большим (~ 200 ГБ) буфером между ними. Вот пример использования:

command1 | buffer -f file.buffer | command2

Есть команда, чтобы сделать это? Те, которые я видел, только буферизировались на память.

Теперь, когда я думаю об этом, достигнет ли это желаемого результата?

#!/bin/bash
# buffer.sh
FILE="$1"
tail -F "$FILE" 2> /dev/null &
cat > "$FILE"

Хотя я не уверен, как остановить хвост, когда все прочитает ...

1 ответ1

2

Я только что нашел mbuffer.

Видимо, опция -t использует временный файл для огромного буфера, что я и искал. В качестве альтернативы с помощью -T /path/to/file я могу выбрать, какая из моих смонтированных файловых систем будет хранить файл.

Я также отмечаю, что файл удаляется сразу после его открытия, поэтому ls не показывает его. Тем не менее, ls -l /proc/<PID of mbuffer>/fd подтверждает, что он есть.

Итак, мой пример становится:

command1 | mbuffer -T file.buffer -m 200G | command2

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .