{"id":19202,"date":"2021-04-26T17:55:05","date_gmt":"2021-04-26T15:55:05","guid":{"rendered":"https:\/\/www.websupport.sk\/podpora\/?post_type=ht_kb&p=19202"},"modified":"2021-04-26T17:55:06","modified_gmt":"2021-04-26T15:55:06","slug":"procesy-v-linuxe","status":"publish","type":"ht_kb","link":"https:\/\/www.websupport.sk\/podpora\/kb\/procesy-v-linuxe\/","title":{"rendered":"Procesy v Linuxe"},"content":{"rendered":"\n

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<\/a>).<\/p>\n\n\n\n

Spusten\u00e9 programy sa v Linuxe naz\u00fdvaj\u00fa procesy. Ka\u017ed\u00fd proces m\u00e1 okrem n\u00e1zvu (napr. systemd<\/code>) aj svoj jednozna\u010dn\u00fd identifik\u00e1tor (process ID resp. PID) vyjadren\u00fd \u010d\u00edslicou (systemd m\u00e1 PID 1). Ka\u017ed\u00fd proces (okrem procesu \u010d\u00edslo 1) bol spusten\u00fd in\u00fdm procesom. Proces, ktor\u00fd spustil in\u00fd proces (die\u0165a resp. child), sa naz\u00fdva rodi\u010dovsk\u00fd proces a je ozna\u010den\u00fd pomocou jednozna\u010dn\u00e9ho rodi\u010dovsk\u00e9ho identifik\u00e1tora (parent process ID resp. PPID) vyjadren\u00e9ho \u010d\u00edslicou (napr. 2). PID a PPID jednotliv\u00fdch procesov je mo\u017en\u00e9 vyp\u00edsa\u0165 pomocou programu ps<\/code> (ako P<\/strong>rocess S<\/strong>tatus) napr\u00edklad takto:<\/p>\n\n\n\n

ps xafo user,pid,ppid,stat,pri,ni,%cpu,%mem,cmd<\/pre>\n\n\n\n

Program ps<\/code> dok\u00e1\u017ee o procesoch poda\u0165 viac inform\u00e1ci\u00ed, ale pre potreby tohto n\u00e1vodu sme si zvolili iba meno pou\u017e\u00edvate\u013ea (user), PID, PPID, stav procesu (stat), prioritu ur\u010den\u00fa jadrom (pri), prioritu ur\u010den\u00fa pou\u017e\u00edvate\u013eom (ni ako niceness),\u00a0 vyu\u017eitie procesora (%cpu), vyu\u017eitie pam\u00e4te RAM (%mem) a pr\u00edkaz spusten\u00e9ho programu (cmd) spolu s ozna\u010den\u00edm vz\u0165ahu rodi\u010d – die\u0165a.<\/p>\n\n\n\n

Delenie procesov<\/h2>\n\n\n\n

Procesy v Linuxe sa delia na dve ve\u013ek\u00e9 skupiny:<\/p>\n\n\n\n

  1. automatick\u00e9 procesy – tieto automaticky sp\u00fa\u0161\u0165a opera\u010dn\u00fd syst\u00e9m (nie pou\u017e\u00edvate\u013e) a be\u017eia takpovediac na pozad\u00ed (background processes), pri\u010dom neo\u010dak\u00e1vaj\u00fa vstup od pou\u017e\u00edvate\u013ea (s\u00fa neinterakt\u00edvne). M\u00f4\u017ee \u00eds\u0165 o slu\u017eby (daemons), ktor\u00e9 Linux potrebuje pre zabezpe\u010denie z\u00e1kladnej funk\u010dnosti (napr. sshd<\/code> alebo crond<\/code>).<\/li>
  2. interakt\u00edvne procesy – tieto sp\u00fa\u0161\u0165a pou\u017e\u00edvate\u013e a be\u017eia takpovediac v popred\u00ed (foreground processes). O\u010dak\u00e1vaj\u00fa vstup od pou\u017e\u00edvate\u013ea. T\u00fato skupinu procesov je mo\u017en\u00e9 nastavi\u0165 tak, aby be\u017eali v popred\u00ed, ale tie\u017e na pozad\u00ed. M\u00f4\u017ee \u00eds\u0165 o spusten\u00e9 programy ako napr. ps<\/code> alebo top<\/code>.<\/li><\/ol>\n\n\n\n

    Stavy procesov<\/h2>\n\n\n\n

    Spusten\u00fd program (proces) m\u00f4\u017ee nadobudn\u00fa\u0165 tieto stavy:<\/p>\n\n\n\n

    1. Spusten\u00fd (Running alebo R) – proces je u\u017e spusten\u00fd, alebo \u010dak\u00e1 na pridelenie niektor\u00e9mu z jadier procesora (CPU)<\/li>
    2. \u010cakaj\u00faci (Waiting) – proces \u010dak\u00e1 na udalos\u0165 alebo na syst\u00e9mov\u00e9 prostriedky. Tento stav sa del\u00ed na:
      1. preru\u0161ite\u013en\u00fd (interruptible alebo S) – je mo\u017en\u00e9 ho ukon\u010di\u0165<\/li>
      2. nepreru\u0161ite\u013en\u00fd (uninterruptible alebo D) – nie je mo\u017en\u00e9 ho ukon\u010di\u0165<\/li><\/ol><\/li>
      3. Zastaven\u00fd (Stopped alebo T) – ni\u017e\u0161ie v tomto n\u00e1vode si pop\u00ed\u0161eme, ako spusten\u00fd proces ukon\u010di\u0165.<\/li>
      4. Zomb\u00edk (Defunct alebo Z) – procesy, ktor\u00e9 s\u00fa ukon\u010den\u00e9 (rodi\u010d), ale st\u00e1le s\u00fa v zozname procesov, preto\u017ee \u010dakaj\u00fa na ukon\u010denie in\u00fdch procesov (die\u0165a).<\/li><\/ol>\n\n\n\n

        Spustenie procesov<\/h2>\n\n\n\n

        Aby sme si uk\u00e1zali, ako sp\u00fa\u0161\u0165ame programy a ako n\u00e1slednej pracujeme s procesmi, vyberieme si program sleep<\/code>. Tento program zabezpe\u010d\u00ed, \u017ee sa v linuxovom pr\u00edkazovom riadku bude \u010daka\u0165 1000 sek\u00fand a a\u017e potom sa m\u00f4\u017ee pokra\u010dova\u0165:<\/p>\n\n\n\n

        sleep 1000<\/pre>\n\n\n\n

        Ak sa n\u00e1m nechce \u010daka\u0165 1000 sek\u00fand, m\u00f4\u017eeme program ukon\u010di\u0165 kl\u00e1vesovou skratkou Ctrl + C<\/em> alebo program zastav\u00edme pomocou kl\u00e1vesovej skratky Ctrl + Z<\/em>. V zozname \u00faloh zist\u00edme, \u017ee existuje jeden proces, ktor\u00fd je zastaven\u00fd (stopped):<\/p>\n\n\n\n

        jobs<\/pre>\n\n\n\n

        Zastaven\u00fa \u00falohu (job) sleep 1000<\/code> v\u0161ak m\u00f4\u017eem op\u00e4\u0165 spusti\u0165 tak, \u017ee ju pomocou programu fg<\/code> (ako f<\/strong>oreg<\/strong>round) prenesiem do popredia (prv\u00fd riadok). N\u00e1sledne ju op\u00e4\u0165 pomocou kl\u00e1vesovej skratky Ctrl + Z<\/em> zastav\u00edme (Stopped), a potom pomocou programu bg<\/code> (ako b<\/strong>ackg<\/strong>round) prenesiem do pozadia (druh\u00fd riadok), kde sa odpo\u010d\u00edvanie v tichosti dokon\u010d\u00ed (Running alebo S) a program sleep 1000<\/code> sa tak ukon\u010d\u00ed.<\/p>\n\n\n\n

        fg %1<\/pre>\n\n\n\n
        bg %1<\/pre>\n\n\n\n

        Po spusten\u00ed programu bg %1<\/code> (\u010d\u00edslo za percentom pod\u013ea zoznamu \u00faloh z jobs<\/code>) sa k programu sleep 1000<\/code> na koniec pridal znak &<\/code>, a tak sme dostali program s parametrami sleep 1000 &. Znak & na konci \u013eubovo\u013en\u00e9ho pr\u00edkazu znamen\u00e1, \u017ee chceme program spusti\u0165 na pozad\u00ed a ma\u0165 tak mo\u017enos\u0165 \u010falej pracova\u0165 v pr\u00edkazovom riadku. Ak teda potrebujeme program spusti\u0165 na pozad\u00ed, priamo zad\u00e1me pr\u00edkaz takto:<\/p>\n\n\n\n

        sleep 1000 &<\/pre>\n\n\n\n

        Spustenie procesu m\u00f4\u017eeme teda oddiali\u0165, ak pred n\u00edm spust\u00edme proces sleep<\/code> s po\u017eadovan\u00fdm po\u010dtom sek\u00fand. Ak ale proces potrebujeme spusti\u0165 v presne stanoven\u00fd de\u0148 a \u010das, m\u00e1me tieto dve mo\u017enosti:<\/p>\n\n\n\n

        1. at<\/code> (z anglick\u00e9ho o<\/strong>) – ak potrebujeme spusti\u0165 program v bud\u00facnosti iba raz.<\/li>
        2. cron<\/code> (ako C<\/strong>ommand R<\/strong>un ON<\/strong>) – ak potrebujeme program v bud\u00facnosti sp\u00fa\u0161\u0165a\u0165 pravidelne.<\/li><\/ol>\n\n\n\n

          AT<\/h3>\n\n\n\n

          Povedzme, \u017ee dnes na obed o 12:00 (v 24-hodinovom form\u00e1te) potrebujeme zap\u00edsa\u0165 obsah domovsk\u00e9ho prie\u010dinka do textov\u00e9ho s\u00faboru. Ke\u010f\u017ee ale o takomto \u010dase budeme na obede a nie pri po\u010d\u00edta\u010di, nech\u00e1me t\u00fato pr\u00e1cu na po\u010d\u00edta\u010d:<\/p>\n\n\n\n

          at 12:00<\/pre>\n\n\n\n

          Stla\u010d\u00edme kl\u00e1ves Enter<\/em> a zad\u00e1me pr\u00edkaz:<\/p>\n\n\n\n

          ls -lah ~\/ > ~\/obsah_domovskeho_priecinka.txt<\/pre>\n\n\n\n

          Po zadan\u00ed pr\u00edkazu stla\u010d\u00edme kl\u00e1ves enter<\/em> a n\u00e1sledne kl\u00e1vesov\u00fa skratku Ctrl + D<\/em>, \u010d\u00edm dokon\u010d\u00edme pr\u00edkaz, ktor\u00fd sa m\u00e1 spusti\u0165 v bud\u00facnosti.<\/p>\n\n\n\n

          Pre istotu skontrolujeme, \u010di je \u00faloha napl\u00e1novan\u00e1 na spr\u00e1vny \u010das (prv\u00fd riadok) so spr\u00e1vnym pr\u00edkazom (druh\u00fd riadok):<\/p>\n\n\n\n

          at -l<\/pre>\n\n\n\n
          at -c n<\/em><\/pre>\n\n\n\n

          Znak n<\/em> zamen\u00edme za poradov\u00e9 \u010d\u00edslo \u00falohy, ktor\u00e9 sme zistili zo zoznamu pl\u00e1novan\u00fdch \u00faloh (at -l).<\/p>\n\n\n\n

          Ak by sme sa pom\u00fdlili, m\u00f4\u017eeme \u00falohu vymaza\u0165 takto:<\/p>\n\n\n\n

          at -r n<\/em><\/pre>\n\n\n\n

          Znak n<\/em> zamen\u00edme za poradov\u00e9 \u010d\u00edslo \u00falohy, ktor\u00e9 sme zistili zo zoznamu pl\u00e1novan\u00fdch \u00faloh (at -l<\/code>).<\/p>\n\n\n\n

          Poobede u\u017e len skontrolujeme, \u010di s\u00fabor existuje a \u010di obsah zodpoved\u00e1 tomu, \u010do sme o\u010dak\u00e1vali.<\/p>\n\n\n\n

          CRON<\/h3>\n\n\n\n

          Ak vy\u0161\u0161ie spom\u00ednan\u00fa \u00falohu potrebujeme vykona\u0165 ka\u017ed\u00fd de\u0148 o 12:00, je jednoduch\u0161ie pou\u017ei\u0165 cron. Najsk\u00f4r si over\u00edme, \u010di pre prihl\u00e1sen\u00e9ho pou\u017e\u00edvate\u013ea existuje tabu\u013eka \u00faloh napl\u00e1novan\u00e1 v programe cron:<\/p>\n\n\n\n

          crontab -l<\/pre>\n\n\n\n

          Ak neexistuje a vyp\u00ed\u0161e sa \u201cno crontab for username<\/em>\u201d (pri\u010dom username<\/em> bude nahraden\u00e9 konkr\u00e9tnym menom), tabu\u013eku vytvor\u00edme:<\/p>\n\n\n\n

          crontab -e<\/pre>\n\n\n\n

          Stla\u010d\u00edme kl\u00e1ves enter<\/em>, otvor\u00ed sa s\u00fabor v textovom editore nano a na koniec otvoren\u00e9ho s\u00faboru zad\u00e1me na nov\u00fd riadok:<\/p>\n\n\n\n

          0 12 * * * ls -lah ~\/ > ~\/obsah_domovskeho_priecinka.txt<\/pre>\n\n\n\n

          S\u00fabor ulo\u017e\u00edme pomocou kl\u00e1vesovej skratky Ctrl + X<\/em> a n\u00e1sledne stla\u010den\u00edm kl\u00e1vesa y<\/em> a potvrden\u00edm kl\u00e1vesom enter<\/em>.<\/p>\n\n\n\n

          Prv\u00fd \u00fadaj (0<\/code>) znamen\u00e1 min\u00faty, druh\u00fd (12<\/code>) reprezentuje hodiny, tret\u00ed obsahuje de\u0148 v mesiaci (1 - 31<\/code>), \u0161tvrt\u00fd ozna\u010duje mesiac (1 - 12<\/code>) a piaty de\u0148 v t\u00fd\u017edni (0 - 6<\/code>). Na mieste tretieho, \u0161tvrt\u00e9ho a piateho \u00fadaja je v tomto pr\u00edpade hviezdi\u010dka, ktor\u00e1 zastupuje v\u0161etky mo\u017en\u00e9 hodnoty. Na konci sa uv\u00e1dza pr\u00edkaz, ktor\u00fd sa m\u00e1 vykona\u0165.<\/p>\n\n\n\n

          Ve\u013emi dobr\u00e1 pom\u00f4cka na z\u00e1pis \u00falohy do tabu\u013eky programu cron je online n\u00e1stroj crontab.guru<\/a>.<\/p>\n\n\n\n

          Over\u00edme, \u010di sa \u00faloha zap\u00edsala:<\/p>\n\n\n\n

          crontab -l<\/pre>\n\n\n\n

          Ak je na konci zap\u00edsan\u00e1, odteraz sa ka\u017ed\u00fd de\u0148 o 12:00 zap\u00ed\u0161e obsah domovsk\u00e9ho prie\u010dinka do s\u00faboru obsah_domovskeho_priecinka.txt<\/code>.<\/p>\n\n\n\n

          Rovnako, ako sme \u00falohu zap\u00edsali (crontab -e<\/code>), m\u00f4\u017eeme \u00falohu aj zmeni\u0165 alebo vymaza\u0165.<\/p>\n\n\n\n

          Priorita 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\n

          Najvy\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\n

          Je 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\n

          ps -C sleep<\/pre>\n\n\n\n
          sudo renice -n -10 -p n<\/em><\/pre>\n\n\n\n

          Znak 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\n

          Ukon\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\n

          Program 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\n

          Proces, 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\n

          Ru\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\n

          Znak n<\/em> zamen\u00edme za PID, ktor\u00e9 sme zistili zo zoznamu spusten\u00fdch procesov pomocou programu top<\/code>.<\/p>\n\n\n\n

          Takto 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\n

          Program 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\n

          Program 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\n

          M\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\n

          kill -9 n<\/em><\/pre>\n\n\n\n
          killall -9 sleep<\/pre>\n\n\n\n
          pkill -9 sleep<\/pre>\n\n\n\n

          Znak n<\/em> zamen\u00edme za PID, ktor\u00e9 sme zistili zo zoznamu spusten\u00fdch procesov pomocou programu top<\/code>.<\/p>\n\n\n\n

          Ak potrebujeme ukon\u010di\u0165 proces in\u00e9ho pou\u017e\u00edvate\u013ea, mus\u00edme pou\u017ei\u0165 program sudo<\/code>:<\/p>\n\n\n\n

          sudo kill n<\/em><\/pre>\n\n\n\n
          sudo killall sleep<\/pre>\n\n\n\n
          sudo pkill sleep<\/pre>\n\n\n\n

          Aj 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":"\nProcesy v Linuxe - Websupport centrum podpory<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.websupport.sk\/podpora\/kb\/procesy-v-linuxe\/\" \/>\n<meta property=\"og:locale\" content=\"sk_SK\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Procesy v Linuxe - Websupport centrum podpory\" \/>\n<meta property=\"og:description\" content=\"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...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.websupport.sk\/podpora\/kb\/procesy-v-linuxe\/\" \/>\n<meta property=\"og:site_name\" content=\"Websupport centrum podpory\" \/>\n<meta property=\"article:modified_time\" content=\"2021-04-26T15:55:06+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Predpokladan\u00fd \u010das \u010d\u00edtania\" \/>\n\t<meta name=\"twitter:data1\" content=\"9 min\u00fat\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.websupport.sk\/podpora\/kb\/procesy-v-linuxe\/\",\"url\":\"https:\/\/www.websupport.sk\/podpora\/kb\/procesy-v-linuxe\/\",\"name\":\"Procesy v Linuxe - Websupport centrum podpory\",\"isPartOf\":{\"@id\":\"https:\/\/www.websupport.sk\/podpora\/#website\"},\"datePublished\":\"2021-04-26T15:55:05+00:00\",\"dateModified\":\"2021-04-26T15:55:06+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.websupport.sk\/podpora\/kb\/procesy-v-linuxe\/#breadcrumb\"},\"inLanguage\":\"sk-SK\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.websupport.sk\/podpora\/kb\/procesy-v-linuxe\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.websupport.sk\/podpora\/kb\/procesy-v-linuxe\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.websupport.sk\/podpora\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Procesy v Linuxe\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.websupport.sk\/podpora\/#website\",\"url\":\"https:\/\/www.websupport.sk\/podpora\/\",\"name\":\"Websupport centrum podpory\",\"description\":\"Radi v\u00e1m pom\u00f4\u017eeme s va\u0161im probl\u00e9mom\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.websupport.sk\/podpora\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"sk-SK\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Procesy v Linuxe - Websupport centrum podpory","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.websupport.sk\/podpora\/kb\/procesy-v-linuxe\/","og_locale":"sk_SK","og_type":"article","og_title":"Procesy v Linuxe - Websupport centrum podpory","og_description":"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...","og_url":"https:\/\/www.websupport.sk\/podpora\/kb\/procesy-v-linuxe\/","og_site_name":"Websupport centrum podpory","article_modified_time":"2021-04-26T15:55:06+00:00","twitter_card":"summary_large_image","twitter_misc":{"Predpokladan\u00fd \u010das \u010d\u00edtania":"9 min\u00fat"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.websupport.sk\/podpora\/kb\/procesy-v-linuxe\/","url":"https:\/\/www.websupport.sk\/podpora\/kb\/procesy-v-linuxe\/","name":"Procesy v Linuxe - Websupport centrum podpory","isPartOf":{"@id":"https:\/\/www.websupport.sk\/podpora\/#website"},"datePublished":"2021-04-26T15:55:05+00:00","dateModified":"2021-04-26T15:55:06+00:00","breadcrumb":{"@id":"https:\/\/www.websupport.sk\/podpora\/kb\/procesy-v-linuxe\/#breadcrumb"},"inLanguage":"sk-SK","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.websupport.sk\/podpora\/kb\/procesy-v-linuxe\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.websupport.sk\/podpora\/kb\/procesy-v-linuxe\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.websupport.sk\/podpora\/"},{"@type":"ListItem","position":2,"name":"Procesy v Linuxe"}]},{"@type":"WebSite","@id":"https:\/\/www.websupport.sk\/podpora\/#website","url":"https:\/\/www.websupport.sk\/podpora\/","name":"Websupport centrum podpory","description":"Radi v\u00e1m pom\u00f4\u017eeme s va\u0161im probl\u00e9mom","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.websupport.sk\/podpora\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"sk-SK"}]}},"_links":{"self":[{"href":"https:\/\/www.websupport.sk\/podpora\/wp-json\/wp\/v2\/ht-kb\/19202","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.websupport.sk\/podpora\/wp-json\/wp\/v2\/ht-kb"}],"about":[{"href":"https:\/\/www.websupport.sk\/podpora\/wp-json\/wp\/v2\/types\/ht_kb"}],"author":[{"embeddable":true,"href":"https:\/\/www.websupport.sk\/podpora\/wp-json\/wp\/v2\/users\/28"}],"version-history":[{"count":1,"href":"https:\/\/www.websupport.sk\/podpora\/wp-json\/wp\/v2\/ht-kb\/19202\/revisions"}],"predecessor-version":[{"id":19205,"href":"https:\/\/www.websupport.sk\/podpora\/wp-json\/wp\/v2\/ht-kb\/19202\/revisions\/19205"}],"wp:attachment":[{"href":"https:\/\/www.websupport.sk\/podpora\/wp-json\/wp\/v2\/media?parent=19202"}],"wp:term":[{"taxonomy":"ht_kb_category","embeddable":true,"href":"https:\/\/www.websupport.sk\/podpora\/wp-json\/wp\/v2\/ht-kb-category?post=19202"},{"taxonomy":"ht_kb_tag","embeddable":true,"href":"https:\/\/www.websupport.sk\/podpora\/wp-json\/wp\/v2\/ht-kb-tag?post=19202"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}