NIEBEZPIECZEŃSTWO!
Nie uruchamiaj tego polecenia, aby go „przetestować”, chyba że jesteś przygotowany na awarię i / lub wymuszone ponowne uruchomienie systemu.
Byłem w mojej Virtualbox z 12.04 próbując skompilować aplikację i czekając, przypadkiem trafiłem na forum, na którym napisano komentarz:
Spróbuj też
:(){ :|: & };:
Zabawy i nie wymaga rootowania.
Bez zastanowienia uruchomiłem go w terminalu gnomów. Tak bardzo opóźniało moje 12.04 (w Virtualbox), że musiałem je wyłączyć.
Moje pytanie brzmi: co robi to polecenie?
: () {: |: &} ;:
command-line
blade19899
źródło
źródło
Odpowiedzi:
Nazywa się to bombą widełkową .
:()
oznacza, że definiujesz funkcję o nazwie:
{:|: &}
oznacza uruchomienie funkcji:
i:
ponowne wysłanie danych wyjściowych do funkcji i uruchomienie jej w tle.Jest
;
to separator poleceń.:
uruchamia funkcję po raz pierwszy.Zasadniczo tworzysz funkcję, która wywołuje się dwa razy przy każdym wywołaniu i nie ma możliwości zakończenia się. Będzie się podwajać, aż zabraknie zasobów systemowych.
Uruchomienie w Virtualbox było całkiem rozsądne, w przeciwnym razie musiałbyś ponownie uruchomić komputer.
źródło
;
jest to separator poleceń.{ ... }
Część jest po prostu treść funkcji.|
i co robi&
. Rozumiem, że zapewniłeś działanie tej funkcji, ale chciałem wiedzieć, co robią ci dwajJest to tak zwana bomba widełkowa zaimplementowana w powłoce.
z wikipedii:
źródło
To polecenie jest dobrze znaną wersją bomby widelcowej
Powoduje to, że komputerowi kończy się pamięć, nieskończenie przerywając proces. Istnieją również zabezpieczenia, których można przed nim użyć:
źródło
Zgodnie z tym
:(){ :|: & };:
nazywa sięDlatego zaleca się, aby nie uruchamiać tego, może to spowodować uszkodzenie sprzętu, ponieważ powoduje wykonanie pętli, może łatwo powodować nagrzewanie się laptopów.
Inny link wyjaśnia tutaj zrzuty ekranu .
źródło
Nazywa się to „ bombą widełkową ”, jak wyjaśniono powyżej, a innym sposobem na to byłoby użycie wykonywania w tle, a nie potokowanie:
źródło