Сколько у меня разных видеокарт?

[Источник] (1) показывает, что chmod(1) всегда пытается установить режим а затем снова проверяет с помощью [fstatat(2)] (2).

Файлы обрабатываются через [fts(3)] (3), который должен "статистизировать" все пройденные объекты файловой системы заранее, чтобы построить свое дерево данных.

В Unixlore есть [хорошая статья] (4), где chmod(1) указано время против подхода find / xargs: последний выигрывает по величине.

Здесь командная строка адаптирована к первоначальному вопросу:

find . -print0 | xargs -0 chmod 775

Две причины:

  1. Обход файловой системы отделен от операций с файлами через канал между двумя процессами, который может даже работать на разные ядра.

    1. fts(3) операция сведена к минимуму, потому что xargs(1) "сглаживает" дерево каталогов.

Итак, да: вам определенно следует использовать find / xargs. для простого решение.

Другие варианты:

  • Играть с [umask] (5) и исходным кодом процесса(ов) записи новые файлы.

  • Если вы используете Linux, скорее всего, в вашей системе inotify подсистема ядра. В этом случае вы можете написать сценарий эффективное решение через [inotifywait(1)] (6).


Примечание: если вам не нужны разрешения на выполнение ваших файлов, я бы предлагаю изменить вызов следующим образом:

find . -type f -print0 | xargs -0 chmod 664
find . -type d -print0 | xargs -0 chmod 775

Примечание для редакторов: мне не разрешено добавлять более двух ссылок в пост, а также комментировать другие посты. Я оставляю URL-адреса здесь и надеюсь, что какой-нибудь добросердечный пользователь с достаточной репутацией вернет их в текст и удалит этот абзац.


Прокомментируйте заполнение кэша диска с помощью find . -printf "":

Это может ускорить выполнение следующих операций chmod, однако зависит от доступной памяти и загрузки ввода-вывода. Так что может получится, а может и нет. Операция обхода развязки (find) и chmod уже обеспечивает кэширование, поэтому заполнение кэша может быть излишним.

  1. https+lingrok.org/xref/coreutils/src/chmod.c#process_file
  2. https+linux.die.net/man/2/fstatat
  3. https+linux.die.net/man/3 /fts
  4. http+www.unixlore.net/articles/speeding-up-bulk-file-operations.html
  5. https+en.wikipedia.org/wiki/Umask
  6. https+linux.die.net /man/1/inotifywait

1
26.08.2015, 23:39
0 ответов

Теги

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