удаление всего: комната #-rf /

Просто удивление, что происходит, когда Вы удаляете каждый файл в рабочей системе Linux?

# rm -rf /

5
задан 23.08.2010, 16:45

3 ответа

Пожалуйста: видео Ubuntu путь и CentOS способ умереть rm / -rf.

10
ответ дан 07.12.2019, 16:45

Я перевел бы это как: Как возможно удалить файл, который кто-то все еще использует?

Ну, на Linux часть Вашей файловой системы находится в RAM, и часть находится на диске. То, когда процесс A открывает файл и сохраняет его открытым (скажите, что общая библиотека), затем обработайте A, получает копию "inode" файла. Это - структура данных, которая говорит систему, где файл находится на диске.

Теперь у нас есть два inodes, один на диске и один в RAM. Если второй процесс просит тот же файл, у нас есть три inodes. Теперь второй процесс удаляет inode. Это оставляет нас с 1 inode: это процесса A.

Это означает, что процесс A может все еще видеть файл (и считать его) даже при том, что никто больше не может (потому что inode на диске был удален, и второй процесс давно в прошлом). Как только процесс A завершается, последний остающийся inode удален, и файла действительно не стало.

Linux использует эту функцию следующими способами:

  1. Можно скопировать любой файл, даже те, которые используются в настоящее время.
  2. Можно установить обновления в рабочей системе, ничего не повреждая (хорошо... почти; существуют некоторые угловые случаи, но обычно, это работает).
  3. Можно создать файл, удалить его и затем использовать его. Никакой другой процесс (и никакой вирус, и т.д.) не видит, считайте или измените тот файл. Это Ваше. Вдобавок ко всему, файл удален автоматически, когда Ваш процесс заканчивается. Насколько прохладный это?

Таким образом, что произойдет? Сначала, не очень. В конечном счете ошибки будут зарегистрированы к удаленным файлам журнала, которыми не могут быть найдены некоторые файлы. При попытке выполнить новую команду, то она перестанет работать. Остановка процесса позволит ему заскочить в неопределенность. В конечном счете Вы будете с зависающей системой, которая не может быть перезагружена или закрыта, потому что те команды больше не существуют.

18
ответ дан 07.12.2019, 16:45

Можно протестировать его на себя, просто установить Linux в виртуальной машине. Не забывайте, что Вы должны будете sudo или su чтобы это работало.

0
ответ дан 07.12.2019, 16:45

Теги

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