Просто интересно, что происходит, когда вы удаляете каждый файл в работающей системе Linux?
# rm -rf /
Просто интересно, что происходит, когда вы удаляете каждый файл в работающей системе Linux?
# rm -rf /
Я бы перевел это как: Как можно удалить файл, который кто-то еще использует?
Ну, в Linux часть вашей файловой системы находится в оперативной памяти, а часть - на диске. Когда процесс A открывает файл и сохраняет его открытым (скажем, в общей библиотеке), тогда процесс A получает копию "inode" файла. Это структура данных, которая сообщает системе, где файл находится на диске.
Теперь у нас есть два inode, один на диске и один в оперативной памяти. Если второй процесс запрашивает тот же файл, у нас есть три inode. Теперь второй процесс удаляет индекс. Это оставляет нам один индекс: тот, что у процесса А.
Это означает, что процесс A все еще может видеть файл (и читать его), хотя никто другой не может (потому что индекс на диске был удален, а второй процесс давно ушел). Как только процесс A завершается, последний оставшийся индекс удаляется, и файл действительно исчезает.
Linux использует эту функцию следующими способами:
Так что же будет? Сначала не очень. В конце концов, в удаленные файлы журнала будут записаны ошибки, которые не могут быть найдены. Если вы попытаетесь запустить новую команду, она потерпит неудачу. Остановка процесса позволит ему зайти в подвешенное состояние. В конце концов вы получите зависшую систему, которую нельзя перезагрузить или отключить, потому что эти команды больше не существуют.
Вот вы: видео о способе Ubuntu и способе умирания CentOS с помощью rm / -rf
.
Вы можете проверить это сами, просто установите Linux на виртуальной машине. Не забывайте, что вам нужно sudo
или su
чтобы это работало.