Nie próbowałem tego polecenia na Ubuntu (z oczywistych powodów), więc nie jestem pewien, czy Ubuntu pozwoli na jego wykonanie.
Zrobiłem. rm -rf / --no-preserve-root
działał w sesji root otwartej bezpośrednio na maszynie, podczas gdy ja również byłem połączony ssh
z innego komputera, używając również konta root.
Dzieje się tak, że zaczynasz otrzymywać wiele wiadomości, takich jak:
rm: nie można usunąć „/ ...”: Operacja niedozwolona
lub:
rm: nie można usunąć „/ ...”: Urządzenie lub zasób zajęty
Co zaskakujące, ssh
połączenie pozostało otwarte do końca operacji. Dopiero gdy zamknąłem połączenie i próbowałem ponownie je otworzyć, pojawił się błąd:
Odczyt z gniazda nie powiódł się: resetowanie połączenia przez partnera
Na komputerze pozostają cztery katalogi:
/dev
. Tutaj przechowywane są pliki urządzeń.
/proc
—System plików w pamięci utworzony przez jądro.
/run
, ustandaryzowana lokalizacja systemu plików dla demonów.
/sys
. Pozwala to uzyskać informacje o systemie i jego komponentach.
Oznacza to, że niewiele zostało i nie ma wiele do zrobienia. Nie możesz ls
(chociaż podczas używania Tabnazwy katalogów i plików są nadal wyświetlane). Możesz cd
w różnych katalogach, a także w różnych echo
rzeczach, ale takie polecenia cat
nie są już dostępne.
Nie ma sudo
też żadnego .
shutdown -h now
i reboot
zniknął, więc twoją jedyną opcją wydaje się ręczne wyłączenie urządzenia. Logout ( exit
) nie działa, nawet jeśli wyświetla ładny tekst „logout”.
Gdy spróbujesz zrestartować komputer, pojawi się niezły błąd GRUB 15, a potem nic się nie dzieje, w tym momencie możesz zacząć myśleć, że mogłeś rm
zrobić coś złego w twoim systemie.
Ty też możesz to zrobić
Nie, czekaj, nie rób tego na swoim komputerze!
Zamiast tego możesz uruchomić maszynę wirtualną . Maszyny wirtualne mają tę zaletę, że ułatwiają eksperymentowanie. Ponieważ używasz Ubuntu, vmbuilder może Cię zainteresować . Jest to narzędzie, które pozwala wdrożyć maszyny wirtualne w ciągu kilku minut (oficjalna dokumentacja twierdzi, że można to zrobić „za około minutę”, ale faktyczny czas, nawet na szybkim sprzęcie, wynosi około dwóch-trzech minut .
Po zakończeniu wdrożenia masz środowisko, w którym możesz grać. Jeśli ostatecznie go zniszczysz, nie ma to znaczenia: ponownie uruchom maszynę, a dwie minuty później możesz kontynuować.
Jeśli korzystasz z oprogramowania takiego jak VMWare, możesz być również zainteresowany migawkami (zwróć uwagę, że darmowy VMWare Player nie ma tej funkcji; musisz kupić VMware Workstation). Pamiętaj, że Hyper-V jest bezpłatny i obsługuje migawki (ale musisz uruchomić system Windows).
Zaletą migawek jest to, że możesz zrobić jedną w ciągu kilku milisekund. Przywracanie do migawki trwa dłużej, ale często zajmuje kilka sekund. To sprawia, że eksperymentowanie jest jeszcze łatwiejsze i szybsze.
To eksperymentowanie nie ogranicza się do samego systemu operacyjnego. Możesz robić różne rzeczy związane z oprogramowaniem. Masz podejrzaną aplikację? Przetestuj na maszynie wirtualnej - jeśli jest to wirus, nie wyrządzi żadnej szkody. Chcesz przetestować operację na bazie danych, ponieważ może to mieć wpływ na środowisko? Przetestuj na maszynie wirtualnej.
Co jeśli zrobiłbyś to na prawdziwej, nie testowej maszynie?
Zdarzają się złe rzeczy. Pamiętaj, że rm
chroni cię przed sobą: rm -rf /
nie działa: musisz użyć --no-preserve-root
. Ale co jeśli rzeczywiście udało ci się przez pomyłkę usunąć wszystko?
rm
usuwa tylko pliki , ale dane są nadal na Twoim dysku twardym. Dzięki temu można je później odzyskać (dlatego nie należy po prostu wyrzucać dysków twardych z danymi wrażliwymi, gdy już nie działają).
Oznacza to, że wystarczy mieć zapasowy komputer z obudową dysku twardego, aby odzyskać prawie wszystkie pliki. Ważne jest, aby unikać zapisywania czegokolwiek na dysku twardym w celu odzyskania: zapisane dane zastąpią niepowiązane pliki.
Jak zauważono w artykule w komentarzu 200_success , jeśli będziesz działać mądrze, możesz odzyskać maszynę nawet bez zapasowego komputera. Jeśli zależy Ci tylko na danych, nie zawracałbym sobie głowy - odzyskanie ich za pomocą zapasowego komputera jest znacznie łatwiejsze.
rm -rf /
nie usuwa niczego bez--no-preserve-root
.