$ ls
bash: no more processes
O o. Wygląda na to, że ktoś zrobił bombę widelcową. Tam, gdzie kiedyś pracowałem, oznaczało to w zasadzie, że serwer współużytkowany musiałby być poddawany cyklom zasilania, ponieważ nawet sysadmini z rootem często nie potrafili rozwiązać problemu. Często nawet nie mogli uzyskać monitu.
Słyszałem kilka sztuczek (w szczególności wysyłanie sygnałów STOP zamiast sygnałów ZABÓJ, ponieważ te ostatnie pozwoliłyby pozostałym wątkom na natychmiastowe zastąpienie zabitych), ale nigdy nie widziałem wyczerpującego przewodnika zatytułowanego So, You Have Yourself widelec bomba?
Zróbmy jeden.
0
i-1
, zgodnie z opengroup.org/onlinepubs/009695399/functions/kill.html opengroup.org/onlinepubs/000095399/utilities/kill.htmlNie jestem pewien, jak można wysłać sygnał STOP, ponieważ odrodzenie
kill
wymagałoby dostępnego uchwytu procesu. Poza tym z mojego doświadczenia wynika, że systemy stają się przeciążone i bezużyteczne na długo przed wyczerpaniem się procesów.Czy rozważałeś po prostu egzekwowanie limitów procesów na użytkownika
ulimit
? Uniemożliwiłoby to użytkownikom uruchomienie bomb widłowych (przypadkowo lub nie).źródło
Niektóre systemy BSD mają możliwość zarezerwowania ostatnich 5 procesów dla rootowania. Może twój system ma tę zdolność.
źródło