Czy istnieje najszybszy sposób na zamknięcie systemu?

20

A może jest shutdown -h nownajszybszy?

Poszukuję jakiegoś syscall lub podobnego, który pozwoli pominąć wiele rzeczy wykonanych przed zamknięciem (szczególnie w celu dbania o uruchomione procesy).

W najlepszym razie chciałbym rozwiązanie związane z jądrem, ponieważ nie initznam się na -middleware (jak systemdlub upstart).

Ryzyko związane z np. Zabiciem bezpośrednio wszystkich usług, takich jak puchary / apache / pulseaudio itp ... Nie obchodzi mnie to ....

Uwaga: rozwiązaniem powinno być vice oprogramowania. Naciskanie przycisków na urządzeniu nie jest tym, czego szukam.

ludzkośćANDpeace
źródło
8
„Ryzyko związane z np. Zabiciem bezpośrednio wszystkich serwisów, takich jak cup / apache / pulseaudio itp.… Nie obchodzi mnie to…” -> Jesteś pewien? Pozostawienie złożonego oprogramowania w niespójnym stanie może prowadzić do przykrych niespodzianek przy następnym użyciu. Może powinieneś rozważyć wyłączenie usług, z których nie korzystasz zbyt często (np. Kubki, apache); zawsze możesz uruchomić i zatrzymać te rzeczy ręcznie, kiedy chcesz ich użyć.
goldilocks
Metodą, której szukam, jest moment, w którym chcę uniknąć dostępu ludzi do mojego komputera. Wszelkie opóźnienia w zamykaniu umożliwiają psoty. Raczej tracę dane, a potem je ujawniam.
humanityANDpeace
2
Odwiedź także to
Pandya
8
Jest pomysł. Zacznij jednak oszczędzać pieniądze na nowy sprzęt.
John WH Smith
sudo shutdown -P 0 Korzystam z tego i od razu zaczyna się proces zamykania, bez względu na to, jakie aplikacje są otwarte
gkmohit

Odpowiedzi:

30

Nie robi się to znacznie szybciej niż użycie funkcji System Request (SysRq), a następnie natychmiastowe uruchomienie reboot.

Jest to kluczowa kombinacja rozumiana przez jądro.

Włącz SysRq:

echo 1 > /proc/sys/kernel/sysrq

Teraz wyślij go do ponownego uruchomienia.

echo b > /proc/sysrq-trigger

b - Natychmiast uruchom ponownie system, bez odmontowywania lub synchronizowania systemów plików.

Uwaga:

Mimo, rebootże zachowuje się tak, jakby odcięto zasilanie, co nie jest zalecane.

Jeśli chcesz synci umountsystemy plików wcześniej, użyj:

echo s > /proc/sysrq-trigger
echo u > /proc/sysrq-trigger

lub jeśli chcesz po prostu wyłączyć system, to:

echo o > /proc/sysrq-trigger

Magiczne kombinacje klawiszy

Istnieją również kluczowe kombinacje do użycia, które są interpretowane przez jądro:

Alt+ SysRq / Print Screen+Command Key

Klawisze poleceń:

R- Przejmij kontrolę nad klawiaturą z powrotem z X.
E- Wyślij SIGTERM do wszystkich procesów, pozwalając im zakończyć się płynnie.
I- Wyślij SIGKILL do wszystkich procesów, zmuszając je do natychmiastowego zakończenia.
S- Opróżnij dane na dysk.
U- Zamontuj ponownie wszystkie systemy plików tylko do odczytu.
B- Restart.

Cytowanie z Wiki Magic SysRq Key :

Powszechnym zastosowaniem magicznego klucza SysRq jest bezpieczne ponowne uruchomienie komputera z systemem Linux, który w innym przypadku został zablokowany.

  1. Przytrzymaj klawisze Alti SysRq(Print Screen).
  2. Przytrzymując je, wpisz kolejno następujące klawisze, w odstępie kilku sekund: REISUB .
  3. Komputer powinien się zrestartować.

Sposobem na zapamiętanie są:

R eboot E ven I f S ystem U tterly B roken ” lub po prostu słowo „ BIZNES ” czyta się wstecz.

Bibliografia

Magiczny klucz SysRq Wiki
Fedora SysRq

geedoubleya
źródło
11
Należy pamiętać, że zamknięcie czystego systemu może zająć nawet mniej niż 2 sekundy. Kiedy dzwonię poweroffna maszynę Arch, nie widzę nawet dziennika zamykania drukowanego na ekranie ...
John WH Smith,
Przed drugim echem chciałbyś uruchomić sync( linux.about.com/library/cmd/blcmdl8_sync.htm ), aby upewnić się, że bufory są zapisywane na dysku, w tym superbloki.
Arcege
sugerujesz b, aby nie być echem o. Czy b jest lepszy?
humanityANDpeace
To zależy od tego, co masz na myśli przez lepsze. Chociaż bopcja jest bardzo szybka, to nie syncdyski, co nie jest idealne, istnieje wiele opcji, które zapewniają sposoby skrócenia czasu zamykania, niektóre bardziej ekstremalne niż inne. Istnieje również panicopcja. Przeczytaj wiki oraz wersję próbną i błędną, aby zobaczyć, co najlepiej spełnia Twoje potrzeby.
geedoubleya
Cóż, na moim zepsutym systemie echo o /proc/sysrq-triggernie da się zawiesić. System pozostaje włączony. Rzeczywiście bsystem zniknął. Jednak restartuje się, co oznacza, że ​​można zachować pamięć RAM, co jest podatnością, którą chciałbym, aby bsystem był wyłączony. Niestety nie działa to z oopcją w moim systemie. Dzięki za sugestię dla ciebie i również @Pandya
humanityANDpeace
8

Paskudne podejście jest shutdown -h -n now.

Zauważ, że nie spowoduje to żadnego czyszczenia, więc systemy plików mogą stać się niespójne, bazy danych ulegną awarii itp., Ale bardzo szybko zamyka system.

Simon Richter
źródło
1
dziękuję, to brzmi interesująco: czy ta -nopcja jest udokumentowana i nadal znajduje się w aktualnej wersji zamykania?
humanityANDpeace
1
Tak, to standard. Mówi bezpośrednio jądru, aby porzucił wszystko. To polecenie jest zwykle używane z ostatniego skryptu zamykania, gdy zakończy się regularne zamykanie.
Simon Richter
7
Ale nie mogę wystarczająco podkreślić, że najprawdopodobniej spowoduje to złe skutki, ponieważ w dużej mierze jest to równoznaczne z wyciągnięciem wtyczki.
Simon Richter
Cudownie proste i skuteczne. Ta opcja -n jest dokładnie tym, czego szukałam. Dziękuję TAK DUŻO za udzielenie odpowiedzi na zadane pytanie. Nie wiesz, jak frustrujące jest zadawanie pytań i słyszenie, że brody mówią ci, dlaczego twoje pytanie jest złe, a nie tylko odpowiadasz na nie. Głosowałbym za odpowiedzią pięćdziesiąt razy, gdybym mógł. DZIĘKUJĘ CI.
Joshua Pech,
4

Niektóre dystrybucje oferują poweroffpolecenie, które jest prostsze niż shutdown.

Używając go z:

poweroff -f

wykona synchronizację dysku, a następnie wyłączy się. Jest to dobry kompromis między byciem znacznie szybszym przy jednoczesnym minimalnym wyłączaniu, aby upewnić się, że systemy plików nie są uszkodzone.

Rzeczywistość
źródło
0

Spróbuj użyć polecenia init:

init 0
Stuxnet78
źródło