Czy można zatrzymać polecenie zamknięcia?

23

Zakładając, że właśnie wprowadziłeś polecenie shutdown -h now(lub coś równoważnego), czy jest realistycznie coś, co możesz zrobić (jeśli jesteś wystarczająco szybki), aby zapobiec wyłączeniu maszyny?

Jonathan
źródło
Wydaje mi się shutdown -h now, że po wywołaniu natychmiast tracisz dostęp do wiersza poleceń, halt -ptak więc niewiele możesz zrobić.
Ken
@Ken: w Ubuntu i Centos połączonych za pomocą kita linia poleceń pozostaje dostępna przez kilka sekund.
Po co mówić „teraz”, jeśli nie masz na myśli „teraz”?
Fred Nurk

Odpowiedzi:

22

Możesz uruchomić, shutdown -caby anulować już uruchomione zamknięcie.

dogbane
źródło
1
Na początku nie wierzyłem, ale tak. Mówiąc dokładniejctrl+c
Ken
2
@Ken: shutdown -c i [Ctrl] + [c] są zupełnie inne. shutdown -c to polecenie, które anuluje wcześniej zaplanowane zamknięcie (nawet „teraz” jest zaplanowane w tym sensie --- ale to, czy anulowanie uniemożliwi ponowne uruchomienie, jest w tym przypadku trochę wyścigiem). [Ctrl] + [c] spowoduje, że terminal wygeneruje SIGINT (sygnał przerwania) do dowolnego procesu, który był do niego aktualnie podłączony. Może to działać w przypadku uruchomionego polecenia zamykania, ale jest to raczej przypadkowe pytanie.
Jim Dennis
1
@Jim Dennis: Zdaję sobie sprawę z różnicy między ctrc+ci shutdown -c. Jednak biorąc pod uwagę szybkość -now opcji, a nie jej zaplanowane rodzeństwo, ctrl+cbyłaby to najszybsza droga do tego celu. Nie wierzyłem, że możesz zatrzymać natychmiastowe zamknięcie, nawet bardziej zaskoczony, że możesz to przerwać, ale najwyraźniej możesz, ale to wyścig, jak powiedziałeś.
Ken
13

Jeśli jesteś wystarczająco szybki, możesz wydać init 2(lub dowolny poziom pracy, jaki chcesz), a to prawdopodobnie zatrzyma zamknięcie systemu. Wszystko, co wiąże się z zabiciem polecenia zamknięcia, zakończy się niepowodzeniem, ponieważ polecenie działa zbyt szybko

Próbowałem tego z poniższym skryptem, a nawet nie jest wystarczająco szybki, aby zatrzymać zamknięcie

#!/bin/bash
shutdown -h now
shutdown -c "Aborting Shutdown"

Broadcast message from iain@iain-ubuntu
        (/dev/pts/0) at 16:50 ...

The system is going down for halt NOW!
shutdown: Cannot find pid of running shutdown

Gdzie równie interaktywnie

shutdown -h now
init 2 

system nie działa.


źródło
1

Ze strony podręcznika FreeBSD:

Zaplanowane zamknięcie można anulować, zabijając proces zamykania (wystarczy SIGTERM).

Więc killall shutdowndziała na BSD, gdy nastąpi zaplanowane wyłączenie (np shudown -h +5.).

Nie sądzę, aby można było anulować natychmiastowe wyłączenie ( shutdown -h now) w prawdziwym scenariuszu.

Marián Černý
źródło
0

załóżmy, że wysłałeś komunikat o ponownym uruchomieniu lub zamknięciu do wszystkich terminali w celu konserwacji, że „serwer zamierza się zrestartować lub zamknąć w celu konserwacji w ciągu 10 minut”

Tego rodzaju polecenia można anulować.

wystarczy nacisnąć Ctrl+C

Manjur
źródło