Использовать буферный диск между каналами

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

command1 | buffer -f file.buffer | command2

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

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

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

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

1 ответ

Решение

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

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

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

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

command1 | mbuffer -T file.buffer -m 200G | command2
Другие вопросы по тегам