Unix - práce s procesy

Z Wikiverzity
Skočit na navigaci Skočit na vyhledávání
logo Wikimedia Commons
Wikimedia Commons nabízí obrázky, zvuky či videa k tématu

Základní informace[editovat]

každý proces, který se spustí se stane potomkem (synovským procesem) procesu, který jej spustil. Většinou se procesy spouští z příkazového interpretu (shell) stávají se tedy potomky shellu, který je jejich rodič (parent). Každý proces má určité atributy:

  • PID – číslo procesu, toto číslo je unikátní v rámci celého systému
  • PPID – číslo procesu rodiče (parent PID)
  • vlastníka tedy uživatele, který proces spustil
  • terminál (TTY), na kterém je proces spuštěn

Proces za každou cenu nemusí mít terminál. Mohou běžet odpojené od terminálu (detached). Jsou přezdívány démoni (deamons).

  • priorita – proces má přidělenou svou prioritu. Je to číslo udávající , jak často proces dostane přidělen čas procesoru.

Příkaz ps[editovat]

příkazem ps se zjišťují informace o právě běžících procesech Příkaz ps bez parametrů vypíše procesy aktuálního uživatele, běžící na aktuálním terminálu. Pro podrobnější informace můžeme za příkaz ps použít přepínač – l. Příkaz ps vypíše například údaje o UID (číslo vlastníka procesu), PID (číslo procesu), PPID (číslo rodičovského procesu), PRI (priorita procesu), stav procesu (běžící, spící, čekající na vstupně/výstupní operaci, zastavený, zombie), C (využití procesoru) apod. Příkaz ps má poměrně dost dalších přepínačů. Podrobnější informace lze dohledat v manuálových stránkách příkazu ps (man ps).

Priorita procesu[editovat]

Unix je víceúlohový systém. To samozřejmě ale neznamená, že všechny spuštěné procesy běží najednou. Jsou tedy ve stavu running. V unixu může v tomto stavu být pouze tolik procesů, kolik má pc procesorů. Ostatní jsou ve stavu sleeping a čekají až na ně přijde řada a procesor jim přidělí svůj čas. To kdy a jak často na ně přijde řada určuje priorita procesu. Nejvyšší priorita je 0. Prioritu můžeme měnit. Běžný uživatel může prioritu pouze snižovat. Uživatel root ji může i zvyšovat. Prioritu měníme pomocí příkazu nice. Nice – 10 prioritu o 10 sníží a nice - - 10 prioritu procesu o 10 zvýší.

Zasílání signálů[editovat]

Při práci se systémem Unix se můžeme dostat do situace, že některý spuštěný proces je potřeba ukončit. K ukončení procesů slouží příkaz kill. Kill jak z názvu vyplývá ovšem procesy nezabíjí. Zasílá jim pouze signály. Záleží na procesu, jak se zachová po přijetí signálu. Signálů je celkem 32 a mají pevně daný význam. Na některé signály můžeme reakci procesu nastavit. Jiné signály mají pevně danou funkci, která je vynutitelná nebo proveditelná jádrem. Když se proces neukončí sám, ukončí ho jádro.

Nejdůležitější signály shrnuje tato tabulka:[editovat]

Číslo Název Reakce Význam
1 SIGHUP Exit Zavěšení (Hang Up)
2 SIGINT Exit Přerušení (Interrupt)
3 SIGQUIT Core Ukončení
4 SIGILL Core Neplatná instrukce
9 SIGKILL Exit Okamžité ukončení
11 SIGSEGV Core Neplatný přístup do paměti
15 SIGTERM Exit Ukončení (Terminate)
23 SIGSTOP Stop Zastavení