Log in


Forgot your password?
prijatelji LUGoNSa
gnu.gif
linuxzasve.jpg
hulk.jpg
zextras_logo.png
 
You are here: Home / Uputstva / Opšte / Korišćenje System Request tastera

Korišćenje System Request tastera

by Bojan Delić last modified Sep 24, 2007 08:49 AM
Umesto fizičkog restarta na dugme, malo nežnije prema računaru.

Ako Vam se ikad desilo da sistem dovedete u takvo stanje da izgleda da ništa drugo ne pomaže sem fizičkog restarta na dugme verovatno ste se zapitali šta će se desiti sa filesystem-om i da li će ostati konzistentan, kako će se to odraziti na procese koji se trenutno izvršavaju itd. Pre nego što krenete rukom prema dugmetu setite se ovog teksta i pokušajte sa malo nežnijim rešenjem.

Da bi ovo radilo, kernel mora i dalje da bude u mogućnosti da prima instrukcije, što znači da razlog zamrzavanja računara mora da bude neki program iz korisničkog prostora, što je uglavnom slučaj.

Magic SysRq key je mogućnost Linux kernela da prima zahteve od korisnika na vrlo niskom nivou. SysRq je ime za taster koji omogućava ovo. Obično je to taster Print Screen (na većini tastatura ispod Print Screen piše i SysRq).

Podešavanje kernela

Da biste mogli da koristite ovu mogućnost prilikom kompajliranja kernela uključite podršku za ovo. Evo kako taj deo kernela treba da izglea:
Kernel hacking
[*] Magic SysRq Key

Zadavanje komandi

Linux kernel prima komande u obliku Alt+SysRq+komanda. Komande su sledeće:
  • 0 do 9 postavlja nivo logovanja na konzolu, odnosno odlučuje koje poruke od kernela će se ispisivati na konzoli
  • b automatski rebootuje sistem, bez umount-ovanja i sync-ovanja
  • c rebootuje pomoću kexec i kreira crashdump
  • e šalje SIGTERM signal svim procesima sem init procesu
  • f poziva oom_kill, što će ubiti proces koji je zauzeo svu raspoloživu memoriju
  • h, ili bilo koji taster koji nije vezan za neku drugu akciju, ispisuje pomoć na konzolu
  • i šalje SIGKILL signal svim procesima sem init-u
  • k ubija sve procese u trenutnoj virtuelnoj konzoli
  • l šalje SIGKILL signal svim procesima, uključujući init
  • m ispisuje informacije o trenutnom stanju memorije na konzolu
  • o gasi sistem
  • p ispisjue stanje registara i flegova na konzolu
  • r prebacuje tastaturu iz raw moda (što koristi X) u mod XLATE
  • s pokušava da sync-uje sve mountovane filesysteme
  • t štampa informacije o trenuntim procesima na konzolu
  • u pokušava da remount-uje sve filesysteme u read-only mod
  • v ispisuje SMP informacije o procesoru Voyager

Kontrolisanje remote systema

Ukoliko želite da primenite neku od ovih komandi na udaljeni računar, pretpostavljate da to neće ići kao za računar za kojim sedite. U tom slučaju postoji file u /proc filesystemu u koji možete da upišete komandu. Fajl je /proc/sysrq-trigger. Ako želite da zadate komandru za bezuslovni reboot (u suštini isto kao da ste pritisnuli dugme na kućištu) komanda bi izgledala ovako:
# echo b > /proc/sysrq-trigger

Bezbolnije reboot-ovanje

Ok, sad kad znamo šta koja komanda radi, trebalo bi da znamo kako bezbolno da rebootujemo sistam. U pitanju je ništa drugo nego ispravan redosled pozivanja SysRq komandi. Ispravan redosled bi bio Alt + SysRq + r e i s u b. Ovaj niz će prvo prebaciti tastaturu iz raw moda, poslati SIGTERM svim procesima, poslati SIGKILL svim procesima, sync-ovati filesysteme, umountovati ih i na kraju reboot-ovati. Jasno je da između komandi treba da napravite malu pauzu i dati računaru vremena da izvrši prethodnu komantu. Na primer kad pošaljete SIGTERM svim procesima treba sačekati da svaki proces sam završi svoj posao pre nego što mu pošaljete SIGKILL.

Lak način za pamćenje redosleda operacija je da zapamtite rečenicu "Raising Elephants Is So Utterly Boring" i iskoristite prva slova svake reči. Još jedan zgodan način za pamćenje je da zapamtite da treba da iskoristite slova reči busier unatraške.

Još jedan ispravan redosled bi bio RSEIUB ("Raising Skinny Elephants Is Utterly Boring"). Ovde se menja redosled izvršavanja nekih operacija, ali to nije od vitalnog značaja.

Document Actions