Я не могу подключить свой USB-накопитель

Вот пример использования, когда именованные каналы могут сэкономить вам много времени, удалив I / O.

Предположим, что у вас есть BigFile, например, 10G.

You также есть расколы этого BigFile в кусках 1G, BigFileSplit_01 до BigFile_Split_10.

Теперь у вас есть сомнения в правильности BigFileSplit_05

Наивно, без именованных каналов, вы создали бы новый разорвать с BigFile и сравнить:

dd if=BigFile of=BigFileSplitOrig_05 bs=1G skip=4 count=1
diff -s BigFileSplitOrig_05 BigFileSplit_05
rm BigFileSplitOrig_05

С именованными каналами вы бы сделали

mkfifo BigFileSplitOrig_05
dd if=BigFile of=BigFileSplitOrig_05 bs=1G skip=4 count=1 &
diff -s BigFileSplitOrig_05 BigFileSplit_05
rm BigFileSplitOrig_05

Это может показаться на первый взгляд большой разницей ... но со временем разница

экономит ваше время, удаляя ввод / вывод.

dd: читать 1G / write 1G (1) diff: читать 2G rm: свободные выделенные кластеры / удалить запись в каталоге

Вариант 2:

dd: читать 1G / write 1G (1) diff: читать 2G diff: read 2G

Итак, в основном именованный канал сохраняет здесь чтение и запись 1G плюс некоторую очистку файловой системы (поскольку мы ничего не писали файловой системе, но пустой фито-кивок e).

Не делать ввода-вывода, особенно пишет, также хорошо, чтобы избежать износа ваших дисков. Это еще более интересно, когда вы работаете с SSD, так как у них ограниченное количество записей до того, как клетки умирают.

(1) Очевидно, что другой вариант заключается в создании этого временного файла в ОЗУ, например, если / tmp устанавливается в ОЗУ (tmpfs). Тем не менее, вы будете ограничены размером RAM-диска, тогда как «именованный трюк» не имеет ограничений.

1
задан 6 March 2017 в 23:45

0 ответов

Другие вопросы по тегам:

Похожие вопросы: