Btrfs calculates a crc32c checksum for each file.
Это неверно. Обе системы с открытым -исходным файлом контрольной суммы -(ZFS и BTRFS )вычисляют контрольную сумму для каждого логического блока (неназванный исходный код Awe используется правильно ). Это контрольная сумма данных на диске -.
Если в файловой -системе включено сжатие (, что становится все более распространенным параметром ), эта контрольная сумма представляет собой данные после сжатия. Это означает, что даже если файл помещается в один логический блок, возможно (и все более вероятно )что данные контрольной суммы файловой -системы будут для вас бесполезны.
Если вам нужна контрольная сумма файла, лучший способ получить ее — вычислить ее.
Важно различать процессы и то, что в них выполняется (, и ваш вопрос предполагает, что вы знаете об этом различии ). Всякий раз, когда данная программа, работающая в процессе, хочет запустить другую программу, у нее есть два варианта :она может попросить операционную систему заменить ее в текущем процессе новой программой(семейство функций exec
), или он может попросить операционную систему создать новый процесс(fork
функцию , а затем в этом процессе попросить операционную систему заменить его в новом процессе новой программой.
Когда вы запускаете grep
из оболочки, оболочка обычно хочет восстановить управление после этого, поэтому она разветвляется, запускает grep
в ответвлении и ожидает завершения разветвленного процесса. Так что да, оболочка в форке недолго -жила, но «создание» «активов» оболочки в форке совсем не стоило больших затрат на большинстве современных операционных систем (благодаря копированию -на -механизмы записи ).
То же самое относится и к ls -l
из интерактивной оболочки. Однако в некоторых случаях оболочка заменяет себя вместо разветвления; см. Почему bash не создает подоболочку для простых команд? для получения подробной информации.
Запуск сценария оболочки создаст один процесс для оболочки, выполняющей сценарий, и по одному процессу для каждой внешней команды в оболочке и, возможно, под-оболочки для определенных конструкций оболочки.
Создание процессов дешево, но exec
создание еще меньше; это одна из причин, по которой люди часто заботятся об ограничении количества используемых процессов. Две другие причины, которые, возможно, более важны, заключаются в том, что запуск программы включает в себя затраты на запуск этой программы и часто включает повторяющиеся части общего процесса (, сравните find... -exec grep
и grep -r
в системах, в которых есть последний, или несколько вызовов grep
, sed
и т. д. по сравнению с одним sed
илиawk
).Как только вы начинаете сталкиваться с проблемами скорости в сценариях оболочки из-за того, что слишком полагаетесь на внешние команды, это часто является признаком того, что пришло время использовать более мощную среду программирования, которая позволит обрабатывать больше данных без участия других программ.