V systémech Linux a Unix je úloha definována jako úloha, která začala běžet a dosud nebyla dokončena. Každá úloha je v podstatě spuštěný program, což je proces.
Každé úloze je přiřazeno jedinečné ID nazývané číslo úlohy (Job ID). Úlohy můžeme spouštět na pozadí bez jakéhokoli zásahu uživatele a také je lze spouštět na popředí jako aktuální úlohy.
V tomto tutoriálu se seznámíme s příkazy fg a bg pro správu úloh v Linuxu.
příkaz bg
Procesy, které byly zastaveny nějakým signálem přerušení, mohou pokračovat na pozadí příkazem bg.
$ nautilus
^Z
[1]+ Stopped nautilus
Tento proces byl zastaven pomocí ctrl+z
signál přerušení. Zastavené procesy lze zkontrolovat pomocí příkazu jobs. Před kontrolou však vytvořte další úlohu a přerušte ji signálem zastavení.
$ jedit
9:22:28 AM [main] [warning] jEdit: inifPLAF failed to set required l&f
9:22:29 AM [main] [warning] jEdit: inifPLAF failed to set required l&f
^Z
[2]+ Stopped jedit
$ jobs
[1]- Stopped nautilus
[2]+ Stopped jedit
Můžete vidět, že stav úloh je zastaven. Znaménko plus (+) označuje aktuální úlohu. Znaménko mínus (-) odkazuje na předchozí zakázku. Nyní, ke spuštění zastavené úlohy na pozadí, použijeme příkaz bg. Ve výchozím nastavení, pokud není zadán žádný argument, bg spustí aktuální úlohu na pozadí.
$ bg
[2]+ jedit &
$ jobs
[1]+ Stopped nautilus
[2]- Running jedit &
Příkaz bg může vzít jako argument číslo úlohy. Číslo úlohy je uvedeno v hranatých závorkách ve výstupu úloh.
Ve výše uvedeném příkladu je číslo úlohy nautilus 1. Nyní tedy toto číslo úlohy použijeme ke spuštění úlohy na pozadí. %
pro uvedení čísla úlohy je vyžadován znak.
$ bg %1
[1]+ nautilus &
$ jobs
[1]- Running nautilus &
[2]+ Running jedit &
Příkaz bg může také odkazovat na úlohu jejím jménem. Například %String
odkazuje na úlohu, jejíž název začíná zadaným řetězcem a %?String
odkazuje na úlohu, jejíž název obsahuje zadaný řetězec.
Pro ilustraci máme dvě zastavené úlohy.
$ jobs
[1]+ Stopped nautilus
[2]- Stopped jedit
$ bg %nau
[1]+ nautilus &
$ jobs
[1]- Running nautilus &
[2]+ Stopped jedit
$ bg %?ed
[2]+ jedit &
$ jobs
[1]- Running nautilus &
[2]+ Running jedit &
příkaz fg
Příkaz fg je jako příkaz bg až na to, že místo odesílání příkazu na pozadí je spouští v popředí a zabírá aktuální terminál a čeká na ukončení procesu.
# jobs
[1]- Stopped makewhatis
[2]+ Stopped vi
Bez jakéhokoli argumentu spustí fg aktuální úlohu na popředí (v tomto případě vi).
# fg
vi
Protože příkaz běží v popředí, nedostaneme zpět terminál, dokud příkaz neukončí. Takže příkaz jobs bude nyní zobrazovat pouze jednu úlohu, protože vi bude nyní ukončeno.
# jobs
[1]+ Stopped makewhatis
# fg %1
makewhatis
# jobs
Žádná zbývající práce. Jako bg, %String
a %?String
pracovat také pro fg.
# jobs
[1]- Stopped makewhatis
[2]+ Stopped vi
# fg %v
vi
# fg %?what
makewhatis
Závěr
V tomto tutoriálu jsme se na několika příkladech naučili, jak ovládat úlohy pomocí příkazů fg a bg. Doufám, že se vám to líbilo a zanechte prosím své návrhy v sekci komentářů níže.