MC, 00:54 czwartek, 05.07.2012 r.
Ilustracja do artykułu: Linux REISUB — Bezpieczny reset i wyłączenie komputera

Linux REISUB — Bezpieczny reset i wyłączenie komputera

Tę notatkę chciałbym poświęcić zagadnieniu bezpiecznego wyłączania/restartu komputera w sytuacji gdy system Linux się zawiesi.

Co zrobić gdy zawiesił się system?

Metoda, którą niedawno poznałem, znana jest wszystkim zaawansowanym użytkownikom systemów Linux. Zazwyczaj, gdy znajdowałem się w kryzysowej sytuacji, w której zawieszał się mój system (na szczęście nie jest to specjalnie częste zjawisko), próbowałem przejść na inną powłokę i zabić proces, który obwiniałem za utratę kontaktu z systemem. Gdy nie nie mogłem tego zrobić, pozostawał restart systemu. Okazuje się, że poprzestanie na tej próbie, to błąd.

Co więcej, można zrobić?

Otóż istnieje jeszcze jedna (choć pewnie niejedyna), bardzo elegancka metoda przeprowadzenia bezpiecznego restartu komputera (rozumianego w sensie, zachowania danych i poprawności zakończenia procesów). Polega ona na przełączeniu się w tryb niskopoziomowy i wydawaniu komend bezpośrednio do jądra systemu. W tryb niskopoziomowego kontaktu przechodzimy za pomocą kombinacji klawiszy prawy Alt + SysRq (zazwyczaj klawisz PrintScreen). Trzymając wciśnięte te dwa klawisze, kontaktujemy się bezpośrednio z jądrem systemu.

Dobrze, jak więc zrestartować w ten sposób komputer?

Aby wykonać restart komputera z niskiego poziomu kontaktu z jądrem systemu, należy, jak to już wspomnieliśmy, trzymać wciśnięte klawisze prawy Alt + SysReq, oraz spokojnie wpisać REISUB, literka po literce mniej więcej co dwie sekundy (choć to widać po tym co się dzieje na ekranie, kiedy wcisnąć kolejny przycisk). Dlaczego wpisać właśnie REISUB? Otóż każda kombinacja Alt + SysReq + R, Alt + SysReq + E, Alt + SysReq + I, ..., jest inną komendą odbieraną przez jądro systemu. Cytując Wikipedię:
unRaw      (take control of keyboard back from X),
 tErminate (send SIGTERM to all processes, allowing them to terminate gracefully),
 kIll      (send SIGKILL to all processes, forcing them to terminate immediately),
  Sync     (flush data to disk),
  Unmount  (remount all filesystems read-only),
reBoot.

Widzimy, że jest to bezpieczna forma restartu systemu, zakańczająca działanie procesów oraz odmontowująca urządzenia. Jeśli zaś interesuje nas nie restart, a wyłączenie komputera należy wpisać REISUO (O — wyłączenie systemu/Shut off the system). Na Wikipedii znajdziemy pełną listę komend przypisanym odpowiednim przyciskom klawiatury. Warto na nią zerknąć, bo jest to bardzo ciekawe i nie wiadomo, co i kiedy może się przydać.

Jak to zapamiętać?

Myślę, że polski użytkownik systemów Linux nie będzie miał problemu z zapamiętaniem kombinacji REISUB, szczególnie gdy rozbije ją na dwa człony REIS-UB. W społeczności linuksowej krążą dwa najpopularniejsze rozwinięcia tego skrótu mające na celu zwiększenie zapadalności w pamięci. Są to:
Raising Elephants Is So Utterly Boring
Reboot Even If System Utterly Broken

Drobna uwaga na zakończenie

Jako że jest to niskopoziomowa forma kontaktu z jądrem systemu, nie zadziała ona w wypadku, gdy kernel zamrze. Uważam, że warto również sprawdzić działanie tego sposobu na systemie normalnie działającym, aby wiedzieć, jakich efektów się spodziewać.

Komentarze (0) - Nikt jeszcze nie komentował - bądź pierwszy!

Imię:
Treść: