crontab -e<\/code>), m\u00f4\u017eeme \u00falohu aj zmeni\u0165 alebo vymaza\u0165.<\/p>\n\n\n\nPriorita procesov<\/h2>\n\n\n\n Aby Linux spusten\u00fdm procesom mohol bezpe\u010dne pride\u013eova\u0165 procesorov\u00fd \u010das, mus\u00ed najsk\u00f4r pozna\u0165 prioritu spusten\u00fdch procesov. \u010c\u00edm vy\u0161\u0161ia priorita, t\u00fdm sk\u00f4r proces z\u00edska procesorov\u00fd \u010das a t\u00fdm sk\u00f4r sa vykon\u00e1. Niekedy potrebujeme, aby bol proces vykonan\u00fd \u010do najsk\u00f4r (proces je ve\u013emi d\u00f4le\u017eit\u00fd), inokedy na dokon\u010denie procesu tolerujeme aj dlh\u0161\u00ed \u010das (proces je menej d\u00f4le\u017eit\u00fd).<\/p>\n\n\n\n
Pou\u017e\u00edvate\u013e s\u00edce procesom ur\u010duje prioritu (nice), ale jadro (kernel) Linuxu si prioritu procesov m\u00f4\u017ee upravi\u0165 pod\u013ea toho, ako je aktu\u00e1lne syst\u00e9m vy\u0165a\u017een\u00fd. M\u00f4\u017ee sa sta\u0165, \u017ee pre syst\u00e9m kriticky d\u00f4le\u017eit\u00fd proces vy\u0165a\u017euje procesor na maximum. Vtedy ak\u00fdko\u013evek proces spusten\u00fd pou\u017e\u00edvate\u013eom bude ma\u0165 prioritu zn\u00ed\u017een\u00fa nato\u013eko, aby nezaberal procesorov\u00fd \u010das d\u00f4le\u017eitej\u0161\u00edm syst\u00e9mov\u00fdm procesom.<\/p>\n\n\n\n
Priorita, ktor\u00fa ur\u010duje jadro, je vyjadren\u00e1 \u010d\u00edslom v rozmedz\u00ed 0 – 139. Priorita, ktor\u00fa ur\u010duje pou\u017e\u00edvate\u013e (nice), m\u00f4\u017ee ma\u0165 hodnotu medzi -20 a +19. Hodnota -20 znamen\u00e1, \u017ee pou\u017e\u00edvate\u013e procesu prira\u010fuje najvy\u0161\u0161iu prioritu. Plat\u00ed vzorec: priorita ur\u010den\u00e1 jadrom = priorita ur\u010den\u00e1 pou\u017e\u00edvate\u013eom + 20<\/p>\n\n\n\n
Keby sme teda chceli, aby proces, ktor\u00fd chceme spusti\u0165, mohol vyu\u017e\u00edva\u0165 \u010do najviac percent procesora, spustili by sme ho takto:<\/p>\n\n\n\n
sudo nice -n -19 sleep 1000<\/pre>\n\n\n\nNajvy\u0161\u0161iu prioritu procesu prira\u010fujeme a\u017e po d\u00f4kladnom zv\u00e1\u017een\u00ed mo\u017en\u00fdch n\u00e1sledkov.<\/p>\n\n\n\n
Od 0 do +19 (kladn\u00e9 hodnoty) nice<\/code> nastavujeme bez pr\u00e1va roota (napr. nice -n 10 sleep 1000<\/code>), no v\u0161etko pod nulou (z\u00e1porn\u00e9 hodnoty) je potrebn\u00e9 spusti\u0165 ako root (napr. sudo nice -n -19 sleep 1000<\/code>).<\/p>\n\n\n\nJe tie\u017e mo\u017en\u00e9 zmeni\u0165 nice<\/code> u\u017e spusten\u00e9mu procesu. Najsk\u00f4r si mus\u00edme zisti\u0165 PID spusten\u00e9ho procesu (prv\u00fd riadok), n\u00e1sledne nice zmen\u00edme (druh\u00fd riadok).<\/p>\n\n\n\nps -C sleep<\/pre>\n\n\n\nsudo renice -n -10 -p n<\/em><\/pre>\n\n\n\nZnak n<\/em> (na konci druh\u00e9ho riadku) zamen\u00edme za PID, ktor\u00e9 sme zistili zo zoznamu spusten\u00fdch procesov pomocou programu ps -C sleep<\/code>.<\/p>\n\n\n\nUkon\u010denie procesov<\/h2>\n\n\n\n Proces sa v Linuxe m\u00f4\u017ee ukon\u010di\u0165 s\u00e1m po vykonan\u00ed, alebo ho ukon\u010d\u00edme ru\u010dne. Manu\u00e1lne ukon\u010denie procesu m\u00f4\u017ee by\u0165 nevyhnutn\u00e9, ak proces neodpoved\u00e1 (nereaguje na vstup pou\u017e\u00edvate\u013ea) alebo ak vyu\u017e\u00edva pr\u00edli\u0161 ve\u013ea syst\u00e9mov\u00fdch prostriedkov (CPU alebo RAM).<\/p>\n\n\n\n
\u010ci proces dlhodobo vyu\u017e\u00edva neprimerane ve\u013ea syst\u00e9mov\u00fdch prostriedkov a zabra\u0148uje tak stabiln\u00e9mu fungovaniu cel\u00e9ho OS, zist\u00edme pomocou programu top:<\/p>\n\n\n\n
top<\/pre>\n\n\n\nProgram top<\/code>, podobne ako program ps<\/code>, vyp\u00ed\u0161e zoznam procesov, ale z\u00e1rove\u0148 zoznam pravidelne aktualizuje, tak\u017ee m\u00e1me neust\u00e1ly preh\u013ead. Procesy s\u00fa zoraden\u00e9 pod\u013ea toho, ako vy\u0165a\u017euj\u00fa procesor (st\u013apec %CPU). Ak zad\u00e1me ve\u013ek\u00e9 M (Shift + m<\/em>), prv\u00e9 bud\u00fa procesy, ktor\u00e9 spotreb\u00favaj\u00fa najviac pam\u00e4te RAM (st\u013apec %MEM). Sp\u00e4\u0165 k zobrazeniu vy\u0165a\u017eenia procesora sa dostaneme pomocou ve\u013ek\u00e9ho P (Shift + p<\/em>).<\/p>\n\n\n\nProces, ktor\u00fd pod\u013ea programu top<\/code> pr\u00edli\u0161 dlho neodpoved\u00e1 alebo neakceptovate\u013ene za\u0165a\u017euje OS, je potrebn\u00e9 ukon\u010di\u0165 ru\u010dne. Interakt\u00edvny proces pr\u00e1ve spusten\u00fd pou\u017e\u00edvate\u013eom v popred\u00ed je mo\u017en\u00e9 ukon\u010di\u0165 manu\u00e1lne stla\u010den\u00edm kl\u00e1vesovej skratky Ctrl + C<\/em>. Na pozad\u00ed be\u017eiace procesy u\u017e v\u0161ak mus\u00edme ukon\u010di\u0165 pomocou programu kill<\/code>.<\/p>\n\n\n\nRu\u010dn\u00e9 ukon\u010denie procesu realizujeme a\u017e po d\u00f4kladnom zv\u00e1\u017een\u00ed mo\u017en\u00fdch n\u00e1sledkov.<\/p>\n\n\n\n
Zo zoznamu programu top z\u00edskame PID procesu, ktor\u00fd neodpoved\u00e1, alebo pr\u00edli\u0161 za\u0165a\u017euje OS a pok\u00fasime sa ho ukon\u010di\u0165 pomocou programu kill. Pomocou tohto programu posielame procesom r\u00f4zne sign\u00e1ly, na z\u00e1klade ktor\u00fdch sa n\u00e1sledne vykon\u00e1 konkr\u00e9tna po\u017eiadavka. Z\u00e1kladn\u00e9 pou\u017eitie je:<\/p>\n\n\n\n
kill n<\/em><\/pre>\n\n\n\nZnak n<\/em> zamen\u00edme za PID, ktor\u00e9 sme zistili zo zoznamu spusten\u00fdch procesov pomocou programu top<\/code>.<\/p>\n\n\n\nTakto po\u0161leme procesu sign\u00e1l \u010d\u00edslo 15 (SIGTERM), ktor\u00fdm \u017eiadame o m\u00e4kk\u00e9 ukon\u010denie procesu. To znamen\u00e1, \u017ee procesu d\u00e1vame \u010das na to, aby dal vedie\u0165 v\u0161etk\u00fdm s\u00favisiacim procesom (vz\u0165ah rodi\u010d – die\u0165a), \u017ee sa o chv\u00ed\u013eu ukon\u010d\u00ed, a tie\u017e riadne ukon\u010d\u00ed pr\u00e1cu so s\u00fabormi. <\/p>\n\n\n\n
Keby proces o svojom ukon\u010den\u00ed nedal vedie\u0165 ostatn\u00fdm s\u00favisiacim procesom, mohlo by sa sta\u0165, \u017ee po \u0148om ostan\u00fa procesy, ktor\u00e9 sp\u00fa\u0161\u0165al a tie by potom nemuseli fungova\u0165 spr\u00e1vne. Ideo o procesy-siroty (orphans), ke\u010f bol ukon\u010den\u00fd rodi\u010dovsk\u00fd proces, no proces-die\u0165a (sirota) je st\u00e1le spusten\u00fd bez rodi\u010da.<\/p>\n\n\n\n
Aby sme predi\u0161li ne\u017eiad\u00facim procesom-sirot\u00e1m, je dobr\u00e9 pou\u017ei\u0165 program killall<\/code>. Tento program ukon\u010d\u00ed cel\u00fa rodinu procesov pod\u013ea n\u00e1zvu procesu (st\u013apec COMMAND v programe top<\/code>), nie pod\u013ea PID. \u010ci\u017ee ak by sme povedzme trikr\u00e1t spustili program sleep 1000 & a chceli by sme ukon\u010di\u0165 v\u0161etky tri in\u0161tancie, zariadime to pr\u00edkazom<\/p>\n\n\n\nProgram killall alebo pkill ukon\u010d\u00ed v\u0161etky in\u0161tancie programu (tu program sleep). Ru\u010dn\u00e9 ukon\u010denie procesu pomocou programu killall alebo pkill tak realizujeme a\u017e po d\u00f4kladnom zv\u00e1\u017een\u00ed mo\u017en\u00fdch n\u00e1sledkov.<\/p>\n\n\n\n
killall sleep<\/pre>\n\n\n\nProgram pkill ukon\u010d\u00ed v\u0161etky procesy, ktor\u00e9 za\u010d\u00ednaj\u00fa na \u201csleep\u201d:<\/p>\n\n\n\n
pkill sleep<\/pre>\n\n\n\nM\u00f4\u017ee sa sta\u0165, \u017ee sa proces ani po zaslan\u00ed prednastaven\u00e9ho sign\u00e1lu (15 – SIGTERM) cez programy kill, killall alebo pkill neukon\u010d\u00ed. Vtedy posielame sign\u00e1l \u010d\u00edslo 9 (SIGKILL), ktor\u00fdm \u017eiadame o tvrd\u00e9 ukon\u010denie procesu. Takto proces ukon\u010d\u00edme bez toho, aby dal vedie\u0165 v\u0161etk\u00fdm s\u00favisiacim procesom (vz\u0165ah rodi\u010d – die\u0165a), \u017ee sa o chv\u00ed\u013eu ukon\u010d\u00ed, a tie\u017e bez toho, aby riadne ukon\u010dil pr\u00e1cu so s\u00fabormi. Takto m\u00f4\u017eu vznikn\u00fat vy\u0161\u0161ie spom\u00ednan\u00e9 procesy-siroty.<\/p>\n\n\n\n
Tvrd\u00e9 ukon\u010denie procesu realizujeme a\u017e po d\u00f4kladnom zv\u00e1\u017een\u00ed mo\u017en\u00fdch n\u00e1sledkov.<\/p>\n\n\n\n
Nefungoval teda pr\u00edkaz na m\u00e4kk\u00e9 ukon\u010denie kill n<\/em>, killall sleep alebo pkill sleep? Fungova\u0165 bude sign\u00e1l na tvrd\u00e9 ukon\u010denie:<\/p>\n\n\n\nkill -9 n<\/em><\/pre>\n\n\n\nkillall -9 sleep<\/pre>\n\n\n\npkill -9 sleep<\/pre>\n\n\n\nZnak n<\/em> zamen\u00edme za PID, ktor\u00e9 sme zistili zo zoznamu spusten\u00fdch procesov pomocou programu top<\/code>.<\/p>\n\n\n\nAk potrebujeme ukon\u010di\u0165 proces in\u00e9ho pou\u017e\u00edvate\u013ea, mus\u00edme pou\u017ei\u0165 program sudo<\/code>:<\/p>\n\n\n\nsudo kill n<\/em><\/pre>\n\n\n\nsudo killall sleep<\/pre>\n\n\n\nsudo pkill sleep<\/pre>\n\n\n\nAj pri ukon\u010dovan\u00ed procesu in\u00e9ho pou\u017e\u00edvate\u013ea najsk\u00f4r posielame sign\u00e1l \u010d\u00edslo 15 (SIGTERM) na m\u00e4kk\u00e9 ukon\u010denie procesu. A\u017e v nevyhnutn\u00fdch pr\u00edpadoch posielame sign\u00e1l \u010d\u00edslo 9 (SIGKILL) na tvrd\u00e9 ukon\u010denie procesu.<\/p>\n\n\n\n
Zhrnutie<\/h2>\n\n\n\n Definovali sme si pojem proces v Linuxe, jeho druhy a stavy. Na konkr\u00e9tnych pr\u00edkladoch sme si ilustrovali, ako procesy spusti\u0165, ako im nastavi\u0165 prioritu a ako ich ukon\u010di\u0165. Ke\u010f\u017ee ide o t\u00e9mu, ktorou je mo\u017en\u00e9 v praxi v\u00fdznamne ovplyvni\u0165 cel\u00fd chod OS Linux, je potrebn\u00e9 zam\u00fd\u0161\u013ean\u00e9 zmeny realizova\u0165 v\u017edy a\u017e po d\u00f4kladnom zv\u00e1\u017een\u00ed mo\u017en\u00fdch n\u00e1sledkov.<\/p>\n","protected":false},"excerpt":{"rendered":"
Aby pou\u017e\u00edvate\u013e opera\u010dn\u00fd syst\u00e9m (OS) Linux mohol spravova\u0165 a vykon\u00e1va\u0165 na n\u01d2m r\u00f4zne oper\u00e1cie, mus\u00ed ma\u0165 pr\u00e1vo sp\u00fa\u0161\u0165a\u0165 programy (viac v n\u00e1vode Spr\u00e1va s\u00faborov a pou\u017e\u00edvate\u013eov v linuxovom pr\u00edkazovom riadku). Spusten\u00e9 programy sa v Linuxe naz\u00fdvaj\u00fa procesy. Ka\u017ed\u00fd proces m\u00e1 okrem n\u00e1zvu (napr. systemd) aj svoj jednozna\u010dn\u00fd identifik\u00e1tor (process ID…<\/p>\n","protected":false},"author":28,"template":"","format":"standard","meta":{"footnotes":""},"ht-kb-category":[52],"ht-kb-tag":[336,330,92],"class_list":["post-19202","ht_kb","type-ht_kb","status-publish","format-standard","hentry","ht_kb_category-vps","ht_kb_tag-cli","ht_kb_tag-linux","ht_kb_tag-shell"],"yoast_head":"\n
Procesy v Linuxe - Websupport centrum podpory<\/title>\n \n \n \n \n \n \n \n \n \n \n \n\t \n