Neboj se experimentovat. Správným řešením těchto úkolů si systém nerozbiješ a kdyby bylo hodně špatně, virtuální počítač si můžeš vždycky připravit nový.
Na lekci jsme si říkali, že jedna z výhod funkcí v Bashi je to, že se vykoná v procesu Bashe, který ho spouští. To ale není pravda úplně vždycky. Zkus vysvětlit rozdíl mezi těmito příkazy:
$ pust-ps () { ps; } ; pust-ps
PID TTY TIME CMD
2496176 pts/8 00:00:00 bash
2496266 pts/8 00:00:00 ps
$ pust-ps () { ps; } ; pust-ps &
[1] 2496277
...$ PID TTY TIME CMD
2496176 pts/8 00:00:00 bash
2496277 pts/8 00:00:00 bash
2496278 pts/8 00:00:00 ps
Nakresli pro oba příkazy diagramy toho, jak se jednotlivé procesy navzájem spouštějí. (Ukázky diaramů jsou i v materiálech. Stačí je samozřejmě jen načrtnout tužkou.)
(Tohle zadání navazuje na předchozí úkol. A je asi dost složité; klidně přeskoč.)
Existuje jeden známý příkaz, který nespouštěj. Tvým úkolem bude zjistit, co dělá. To můžeš zkusit udělat třemi způsoby:
Příkaz je :(){ :|:& };:
– s tím že znak:
není v Bashi speciální, funguje stejně jako třeba písmeno f
. Nakresli diagram toho, jak se po spuštění tohoto příkazu spouštějí procesy.
Velice podobný program v Pythonu, který taky nespouštěj, je:
# Nespouštět – počítač zamrzne!
import os
while True:
os.fork()