Když spustíte unixový shell-script nebo příkaz, který trvá dlouho, můžete jej spustit jako úlohu na pozadí.
V tomto článku se podíváme na to, jak provést úlohu na pozadí, přenést úlohu do popředí, zobrazit všechny úlohy na pozadí a zrušit úlohu na pozadí.
1. Provádění úlohy na pozadí
Přidáním ampersandu ( &) k příkazu se úloha spustí na pozadí.
Když například spustíte příkaz find, jehož provedení může trvat dlouho, můžete jej umístit na pozadí, jak je znázorněno níže. Následující příklad najde všechny soubory v kořenovém systému souborů, které se změnily za posledních 24 hodin.
# find / -ctime -1 > /tmp/changed-file-list.txt &
2. Odeslání aktuální úlohy v popředí na pozadí pomocí CTRL-Z a příkazu bg
Již běžící úlohu v popředí můžete odeslat na pozadí, jak je vysvětleno níže:
- Stisknutím kláves CTRL+Z pozastavíte aktuální úlohu v popředí.
- Spusťte bg, aby se tento příkaz spustil na pozadí.
Pokud jste například zapomněli provést úlohu na pozadí, nemusíte zrušit aktuální úlohu a spustit novou úlohu na pozadí. Místo toho pozastavte aktuální úlohu a přesuňte ji na pozadí, jak je znázorněno níže.
# find / -ctime -1 > /tmp/changed-file-list.txt # [CTRL-Z] [2]+ Stopped find / -ctime -1 > /tmp/changed-file-list.txt # bg
3. Zobrazte všechny úlohy na pozadí pomocí příkazu jobs
Úlohy na pozadí můžete vypsat příkazem úlohy . Ukázkový výstup příkazu jobs je
# jobs [1] Running bash download-file.sh & [2]- Running evolution & [3]+ Done nautilus .
4. Převedení úlohy z pozadí do popředí pomocí příkazu fg
Úlohu na pozadí můžete přenést do popředí pomocí příkazu fg . Když je spuštěn bez argumentů, přenese do popředí nejnovější úlohu na pozadí.
# fg
Pokud máte více pozemních úloh na pozadí a chtěli byste přenést určitou úlohu do popředí, spusťte příkaz jobs, který zobrazí ID úlohy a příkaz.
V následujícím příkladu fg %1 přenese do popředí úlohu #1 (tj. download-file.sh).
# jobs [1] Running bash download-file.sh & [2]- Running evolution & [3]+ Done nautilus . # fg %1
5. Zabijte konkrétní úlohu na pozadí pomocí kill %
Pokud chcete ukončit použití konkrétní úlohy na pozadí, deaktivujte %job-number. Chcete-li například zabít úlohu 2, použijte
# kill %2
Chcete-li zabít úlohy v popředí, použijte jednu z metod uvedených v našem dřívějším článku 4 způsoby, jak zabít proces — kill, killall, pkill, xkill.