Skupiny procesů¶
Každý proces je vytvořen jako potomek svého rodiče. Procesy jsou na sobě
závislé a tvoří skupiny. Například program
man běží v shellu a zároveň
používá program less. V následujícím příkladu vidíme
ve sloupci PPID PID rodičovského procesu a ve sloupci PGRP PID vedoucího skupiny.
Jestli-že bude z jakéhokoliv důvodu rodičovský proces ukončen, budou s ním ukončeni i všichni jeho potomci.
1 2 3 4 5 6 7 | |
Pokud požadujeme, aby byl proces nezávislý na svém rodiči a aby byl sám
vedoucím skupiny spustíme ho na pozadí (pomocí metaznaku &) nebo použijeme
program nohup.
1 2 3 4 5 6 7 8 9 10 11 12 | |
Nyní se může uživatel odhlásit a program zalohujDATA poběží dál.
Atd¶
V operačním systému Unix lze spuštění procesu naplánovat. K jednorázovému naplánování spuštění procesů slouží systémová služba atd. Uživatelský obslužný program se jmenuje at.
Syntaxe programu at může obecně vypadat takto
1 | |
- ČAS lze specifikovat jako
- dvojtečkou oddělené hodiny a minuty ve 24-hodinovém formátu nebo
midnight,noon,teatime(4pm). - DATUM lze specifikovat jako
- den v týdnu zapsaný pomocí anglických zkratek (
Sun,Mon,Tue,Wed,Thu,Fri,Sat) - DEN.MESIC
- DEN.MESIC.ROK
- pokud datum není uvedeno program kalkuluje s aktuálním datem
- PŘÍRŮSTEK
- se zapisuje jako počet jednotek:
minutes,hours,days,weeks,months,years
| příklad | popis |
|---|---|
at 9:45 26.3.2056 |
26. března 2056 |
at tomorrow + 1 hours |
zítra o hodinu později |
now + 2 weeks |
za dva týdny |
13:10 + 20 minutes |
ve 13:30 |
Například:
1 2 3 4 5 6 | |
V 11:33 se úloha spustí. A vypíše se (du) místo,
které na disku zaujímá můj domovský adresář a (df)
obsazené místo na svazku /home.
V předchozí odstavci bylo použito sloveso vypíše se. Zbývá ale vyřešit problém kam se vypíše. Uživatel může být přihlášen několikrát, nebo nemusí být přihlášen vůbec. Standardní výstup naplánované úlohy se proto zašle do e-mailové schránky uživatele. Automaticky se předpokládá, že uživatel má na sytému lokální e-mailovou schránku nebo že je mu lokální pošta přeposílána.
Crond¶
Systémová služba Cron slouží k opakovanému spouštění procesů vždy ve stanovený čas.
Časy spouštění programů se zapisují do tabulky:
1 2 3 4 5 6 7 8 9 | |
Například:
| zápis | popis |
|---|---|
* * * * * command |
spustí příkaz každou minutu |
15 0 * * 1 command |
spustí příkaz vždy v pondělí 15 minut po půlnoci |
40 8,9,10 * * * command |
spustí příkaz 3x denně: 8:40, 9:40, 10:40 |
40 8-10 * * * command |
spustí příkaz 3x denně: 8:40, 9:40, 10:40 |
*/20 * * * * command |
příkaz se spustí každých 20 minut |
30 15 5,10,15,20,25,30 * * |
každý 5., 10., 15., 20., 25. a 30. den v měsíci vždy v 15:30 |
30 15 5-31/5 * * |
každý 5., 10., 15., 20., 25. a 30. den v měsíci vždy v 15:30 |
Uživateli slouží pro obsluhu program crontab s následujícími parametry
| parametr | popis |
|---|---|
-l |
vypíše tabulku |
-r |
vymaže tabulku |
-e |
edituje tabulku v textovém editoru, uživatel nastavuje editor v proměnně prostředí EDITOR |
1 2 3 4 5 6 | |
Sezení¶
Existují speciální programy, které jsou označovány jako terminal multiplexer. Jejich zástupcem může být oblíbený program GNU Screen.
Umožňuje uživatelům přistupovat k několika terminálovým sezením uvnitř jediného okna terminálu či vzdáleného terminálového sezení. To je užitečné pro práci s více programy z příkazové řádky a pro oddělení programů od unixového shellu, který program spustil.
Dá se říci, že se jedná o textovou verzi správce oken nebo o umístění virtuálních terminálů do libovolného přihlášeného sezení. Je to obal, který umožňuje běh několika textových programů zároveň a dovoluje uživateli efektivně používat programy v jediném rozhraní.
Program také umožňuje nechat běžet několik interaktivních programů a přitom nebýt přihlášen. Nebo programy spustit, odhlásit se, potom se opět přihlásit a pokračovat v rozdělané práci.
Program spustíme příkazem
1 | |
Po úvodní obrazovce se spustí uživatelský shell a program screen není na
první pohled vidět. Všechny klávesové zkratky a začínají kombinací Ctrl+A a
za ním následuje stisk další klávesy (nebo kombinace).
Ctrl+A ?- Vypíše nápovědu.
Ctrl+A C- Vytovoří nové okno. V každém okně může běžet jiný program
Ctrl+A NCtrl+A P- Cykluje mezi otevřenými okny
Ctrl+A Ctrl+A- Cykluje mezi dvěma naposledy otevřenými okny
Ctrl+A "- Vyvolá (interaktivní) seznam oken
Ctrl+A Shift+A- Přejmenuje aktuální okno
Ctrl+A 0čiCtrl+A 1čiCtrl+A 2či …- Přepne na okno číslo
0či1či2atd. Ctrl+A Shift+S- Rozdělí okno horizontálně na dva regiony.
Ctrl+A |- Rozdělí okno vertikálně na dva regiony.
Ctrl+A X- Zruší aktuální region.
Ctrl+A TAB- Přepne na následující region.
Ctrl+A [čiCtrl+A Ctrl+[čiCtrl+A ESC- zapne “copy/scrollback” mód. V tomto módu se lze pohybovat pomocí šípek, kláves
jhkl,PageUp,PageDownatd. Stiskemmezerníkumůžeme označovat text. Označení textu se ukončí opětmezerníkem. Text je uložen ve schránce. Tento mód lze ukončit i bez nezenrníku pomocíESC. Ctrl+A ]- Vloží text ze schránky.
Ctrl+A d- Odpojí okno. Screen stále běží, ale uživatel se od něj odpojil. Nyní se může
uživatel odhlásit; programy spuštěné ve screenu poběží dál. Uživatel se může
například přesunout k jinému počítači. Po opětovném přihlášení (například pomocí
SSH) se může uživatel znovu připojit příkazem
screen -r.
1 | |
Screen není jediným zástupcem svého druhu. Já mám například rád program tmux: http://www.root.cz/clanky/okna-v-terminalu-pomoci-tmux/.