Ishvaizda
Programos
Distribucijos
Savybes
Istorija
Linux FAQ

Terminai
Sandara
UNIX
Komandos
Nuorodos
Kiti projektai
Skelbimai
Chat'as

www.Laikas.lt Programa Pavedimai
Apie signalus Linux sistemoje
Zhodzhiu, sihs bei tas apie programu tarpusavio saveika, procesu valdyma ir panashius dalykus.

Signalai - tai tiesiog tokia procesu saveikos priemone. Signalai naudojami, norint praneshti apie koki nors svarbu ivyki, ir pasiusti signala dirbanchiai programai gali kokia nors kita programa. Priminsiu, kad procesu vadinama dirbanti programa. Zhinoma, ish tikro yra sudetingiau, ta pati programa neretai sukuria kelis procesus, ir ish esmes visai galima situacija, kai viename procese vykdomos kelios programos, bet dazhniausiai procesas - tai tiesiog dirbanti programa.

UNIX(Linux) sistemose yra ivairios procesu saveikos priemones, tachiau tachiau ne visas tas priemones ivairios programos supranta. Bet signalus supranta visos, net papraschiausios programeles. Kai kuriuos signalus procesai ignoruoja, kai kuriuos gave - ishsijungia, o kai kurie kiti signalai ne tik priverchia procesus ishsijungti, bet dar ir sukuria diske specialius failus, kuriuose buna tokiu procesu atvaizadai. Shie failai vadinami Core-dampais arba Core-failais, ir yra skirti programuotojams, norintiems ishsiaishkinti, kodel programa dirba ne taip, kaip reikia. Kai procesas ishsijungia, sukurdamas toki Core-dampa, sakoma, kad jis nusikoredampino, arba tiesiog nusidampino.

Signalu siuntimo mechanizmas gana paprastas - koks nors procesas perduoda kerneliui (operacines sistemos branduoliui) praneshima (signala), prashydamas ji perduoti tam tikram kitam procesui. Kernelis tai ir padaro. Kai kada, jei nusprendzhia, kad kazhkoks procesas dirba neteisingai, kernelis signala jam perduoda pats. Dauguma signalu procesai gali perimti - kitaip tariant, pamastyti, kaip elgtis, nuspresti, ka daryti. Bet yra keli signalai, kuriu jokia programa perimti negali - procesas tada neturi jokio pasirinkimo, ir elgiasi besalygishkai taip, kaip jam isako signalas.

Vartotojas, norintis procesui perduoti signala, gali pasinaudoti kill programa. Nors shios programos pavadinimas baisus, ish tikruju ji tik siuntineja signalus procesams, ir nieko blogo nedaro. Pavadinima ji gavo nuo to, kad pirmosiose UNIX versijose signalai buvo naudojami tik priverstiniam procesu ishjungimui - kitaip tariant, procesu zhudymui. Sintakse tokia: "kill -s SIGNALAS PROCESONUMERIS", kur SIGNALAS yra tam tikras skaichiukas, zhymintis konkretu signala, o PROCESONUMERIS - tai numeris, kuri procesui suteike kernelis. numeri jums pasakys ps komanda. Beje, kill komandoje galima naudoti ne tik signalu numerius, o ir ju pavadinimus, pvz., parashyti "kill -s SIGKILL 123" - tokia komanda suveiks lygiai taip pat, kaip ir "kill -s 9 123". O jei parashysite "kill 123", tai procesas, kurio numeris 123, gaus SIGTERM signala - shi signala kill programa siunchia pagal nutylejima. Jei jus esate eilinis vartotojas arba sisteminis administratorius, jums prireiks zhinoti tik apie penkis signalus - SIGTERM, SIGKILL, SIGHUP, SIGSTOP ir SIGCONT, apie kuriuos papasakosiu plachiau. Bet pirma pateiksiu pilnesni signalu sarasha - ka gali zhinoti ?

Signalas Numeris Ka daro procesas, gaves shi signala Trumpas paaishkinimas
SIGHUP 1 ishsijungia Praneshimas, kad kazhkas vyksta ne taip.
SIGINT 2 ishsijungia Pertraukimas
SIGQUIT 3 dampinasi Darbo pabaiga
SIGILL 4 dampinasi Neleistina komanda
SIGTRAP 5 dampinasi Stabdymas kontroliniame tashke
SIGABRT 6 dampinasi Avarinis stabdymas
SIGFPE 8 dampinasi Klaida, vykdant matematinius slankaus kablelio skaichiavimus
SIGKILL 9 ishsijungia Proceso nuzhudymas
SIGBUS 10 dampinasi Duomenu keitimosi su shyna klaida
SIGSEGV 11 dampinasi Segmentacijos klaida
SIGSYS 12 dampinasi Blogas sisteminio ishkvietimo argumentas
SIGPIPE 13 ishsijungia Procesu saveikos kanalo klaida
SIGALRM 14 ishsijungia Zhadintuvas
SIGTERM 15 ishsijungia Programos ishjungimas
SIGUSR1 16 ishsijungia Vartotojo signalas nr. 1
SIGUSR2 17 ishsijungia Vartotojo signalas nr. 2
SIGCHLD 18 ignoruoja Dukterinio proceso statusas pasikeite
SIGPWR 19 ignoruoja Demesio, mums atjunge maitinima !
SIGWINCH 20 ignoruoja Lango dydzhio pasikeitimas
SIGURG 21 ignoruoja ghm... nesupratau, ka shis signalas daro...
SIGPOLL 22 ishsijungia Apklausos ivykis
SIGSTOP 23 sustoja Priverstinis darbo sustabdymas
SIGTSTP 24 sustoja Darbo sustabdymas ish terminalo (Ctrl-Z)
SIGCONT 25 ignoruoja Sustabdyto proceso pratesimas

  • SIGHUP - Tai ispejimas procesui. Jo reikshme mazhdaug tokia: "Tu elgiesi netinkamai. Pasitaisyk, arba ...". Dauguma programu, gavusios shi signala, tiesiog ishsijungia, bet kai kurios protingesnes ishsaugo savo darba, ish naujo persiskaito savo konfiguracinius failus, ir pabando pasitaisyti. Shis signalas dazhniausiai naudojamas dirbant su demonais (daemons), kuriuos ishjungineti dazhniausiai nepageidautina.
  • SIGTERM - Tai paprastas proceso ishjungimo signalas. Jo prasme mazhdaug tokia: "Nusizhudyk, nes esi nereikalingas". Vargshas procesas, gaves toki signala, paprastai taip ir padaro. Jei manote, kad programa pakibo arba eme neteisingai dirbti, galite ja ishjungti shiuo signalu. Jei procesas mano, kad jo darbas yra labai svarbus, jis gali shi signala ignoruoti, bet taip buna tik ishimtiniais atvejais. Pagal nutylejima kill programa siunchia procesams butent SIGTERM signala.
  • SIGKILL - Tai grubaus ishjungimo signalas. Jis jau nieko nesako procesui. Tai tiesiog kaip smugis kirviu i galva. Naudokite shi signala tik tada, kai procesas mirtinai pakibes ir nereaguoja i signala SIGTERM. Shio signalo procesai perimti negali.
  • SIGSTOP - Tai proceso uzhmigdymo signalas. Gaves shi signala, procesas pats nepajunta, kaip sustoja. Veliau procesa galima pazhadinti, pasiuntus jam signala SIGCONT. SIGSTOP signalas naudojamas, kai reikia kuriam laikui sustabdyti labai daug resursu naudojanti, ir ilgai dirbanti procesa. Procesai shio signalo perimti negali.
  • SIGCONT - Tai signalas, kuris pazhadina SIGSTOP signalu sustabdyta procesa. Procesai i shi signala nereaguoja - tik tiek, kad pradeda dirbti...

 


{n}  

Lithuanian Link Exchange
Lithuanian Link Exchange


Burgzt Banner Exchange