Intereting Posts
Несколько именованных процессов для bind9 в Debian Нет терминала в новом Linux Mint 18.1 Cinnamon (64-bit) Перемещение файлов и переименование с использованием части структуры каталогов и части текущего имени файла Поддерживается ли управление трафиком внутри пространства имен на портах, созданных OpenvSwitch? Как изменить размер содержимого PDF без изменения размера страницы? балансировка нагрузки multipie services linux Geany: потерял некоторые темы после обновления Перемещено / var / log на новый логический том сейчас отсутствуют данные Завершение zsh: получение имен файлов из определенного каталога source my ~ / .bash_aliases из скрипта не в ~ / Что это за папка / run / user / 1000? Слова PGP отпечатка RSA PS1 = '$ (pwd)' почему это работает и почему это отличается от PS1 = $ (pwd) Смущает смысл интерактивной и неинтерактивной оболочки при запуске скрипта Остановка службы синхронная или асинхронная?

Можно ли удалить каталог в постоянное время?

Обычно я rm -rf весь каталог сразу с помощью rm -rf . Я только сейчас заметил, что это занимает больше времени, чем больше каталог (рекурсивно пересчитан).

Как unix-подобные системы предоставляют альтернативный способ удаления каталога, который работает в постоянное время? Кажется, что нужно удалить каталог «напрямую», не касаясь содержимого вообще, которые теперь недоступны.

Есть ли какая-то характеристика файловых систем, которая заставляет вас рекурсивно ходить по содержимому каталога, чтобы удалить сам каталог?

Когда вы удаляете каталог, вы должны удалить его содержимое рекурсивно. Почему это так?

Упрощение можно сказать, что «directory» – это файл, содержащий список пар. Что произойдет, если вы просто «освободите блоки каталога на диске»?

Давайте рассмотрим удаление обычных файлов. Программа (например, rm ) вызывает системный вызов unlink() . Операционная система (а точнее, драйвер файловой системы) проверяет количество жестких ссылок ( filename в каталоге в предыдущем абзаце). Если он равен нулю, и файл не открывается, его можно физически удалить. Таким образом, мы знаем, как удалить файл.

Теперь давайте снова посмотрим на удаление каталога. Когда вы просто освобождаете блоки, вы не unlink файлы в нем, вы не уменьшаете счетчик жестких ссылок для любого файла в каталоге. И для любого файла в подкаталогах, подкаталогах и т. Д. Что такое заключение? Точно, нам нужно unlink все файлы в unlink каталоге, потому что мы не хотим получать неустранимый мусор в Файловой системе.

Таким образом, вы можете использовать решение @ SYN (запуск rm в фоновом режиме), но нет способа удалить каталог в постоянное время.

Если каталог монтируется в собственной файловой системе, вы можете размонтировать его, воссоздать с помощью newfs и перемонтировать его. Это займет столько же времени, независимо от размера каталога.

Как unix-подобные системы предоставляют альтернативный способ удаления каталога, который работает в постоянное время? Кажется, что нужно удалить каталог «напрямую», не касаясь содержимого вообще, которые теперь недоступны.

Речь идет о реализации файловой системы. Теперь большинство людей, работающих в файловых системах, не очень беспокоятся о производительности rm -rf потому что они просто не возникают в файловых серверах и нагрузках базы данных, которые каждый пытается оптимизировать.

Обратите внимание, что btrfs поддерживает выгрузку поддерева в постоянное время, но вы должны заранее использовать его.

Использование:

 rm -fr /path/to/directory & 

Это будет означать вашу команду

Вы можете перечислить заданные задачи с jobs

Будет указан идентификатор задания. Который может быть использован с возвратом к вашему процессу:

 $ sleep 60 & [1] 22316 $ jobs [1]+ Running sleep 60 & $ fg %1 sleep 60 

После того, как вы уже запустили команду rm , вы также можете нажать Ctrl + Z , что приостановит вашу команду, а затем введите bg для отмены паузы в фоновом режиме.

Обратите внимание, что список заданий, которые вы можете контролировать с помощью этих команд, привязан к вашей оболочке и может быть восстановлен только из текущей оболочки.