|
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 ?
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| {n} |
Burgzt Banner Exchange |