Использовать буферный диск между каналами
Я хотел бы передать команду в более медленную, с довольно большим (~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