4

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

# rm -rf /

3 ответа3

18

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

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

Теперь у нас есть два inode, один на диске и один в оперативной памяти. Если второй процесс запрашивает тот же файл, у нас есть три inode. Теперь второй процесс удаляет индекс. Это оставляет нам один индекс: тот, что у процесса А.

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

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

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

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

10

Вот вы: видео о способе Ubuntu и способе умирания CentOS с помощью rm / -rf .

0

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .