Вот пример использования, когда именованные каналы могут сэкономить вам много времени, удалив 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-диска, тогда как «именованный трюк» не имеет ограничений.