Jak spouštět dlouho běžící importy a dávkové úlohy na Linux serveru pomocí tmux
10. 6. 2026Každý vývojář nebo administrátor se dříve či později dostane do situace, kdy potřebuje spustit proces, který poběží desítky minut nebo dokonce několik hodin. Typicky se jedná o:
- import produktů z externího systému
- synchronizaci dat mezi aplikacemi
- generování statistik a reportů
- migrace databází
- reindexaci vyhledávání
- dávkové zpracování obrázků
- exporty velkých objemů dat
- opravy dat po nasazení nové verze aplikace
Mnoho začátečníků jednoduše spustí příkaz přes SSH terminál “docker compose exec app php bin/console app:import:products”. To funguje pouze do chvíle, než:
- zavřete terminál
- odpojíte VPN
- spadne internetové připojení
- restartujete notebook
- vyprší SSH session
V takovém případě se většinou ukončí i spuštěný proces a je nutné začít znovu. Řešením je použití nástroje tmux.
Co je tmux?
Tmux (Terminal Multiplexer) umožňuje vytvářet virtuální terminálové session, které běží nezávisle na připojeném uživateli. Proces spuštěný uvnitř tmux session pokračuje v běhu i když:
- se odhlásíte ze serveru
- zavřete terminál
- ztratíte internetové připojení
- vypnete počítač
Po opětovném přihlášení se jednoduše vrátíte do stejné session a pokračujte tam, kde jste skončili.
Vytvoření nové session
Vytvoří novou session s názvem import.
tmux new -s import Po spuštění se otevře nové terminálové okno uvnitř tmux.
Spuštění importu
V otevřené session můžete spustit například Symfony command “docker compose exec app php bin/console app:import:products”, nebo jakýkoliv jiný dlouho běžící proces. Proces bude pokračovat v běhu i po odpojení SSH spojení.
Odpojení od session bez ukončení procesu
Pokud chcete tmux opustit, ale nechat proces běžet, použijte klávesovou zkratku:
Ctrl + B
D Zobrazení existujících session
tmux ls Na jednom serveru můžete mít současně více běžících úloh.
Připojení k existující session
tmux attach -t import Po připojení uvidíte aktuální výstup procesu včetně průběhu importu.
Ukončení session
Pokud již session nepotřebujete:
tmux kill-session -t import nebo přímo v terminálu session
exit Pozor, tímto ukončíte i všechny procesy běžící uvnitř session.
Kdy použít něco jiného než tmux?
Tmux je ideální pro:
- jednorázové importy
- migrace
- administrativní úlohy
- manuálně spouštěné dávkové procesy
Pro pravidelné úlohy je vhodnější:
- cron
- systemd service
- Supervisor
- Symfony Messenger workers
- Kubernetes Jobs
Tmux není náhrada za produkční job scheduler. Je to nástroj pro bezpečné spuštění a dohled nad dlouho běžícími procesy.
Závěr
Pokud na Linux serveru potřebujete spustit import, migraci nebo jiný proces, který poběží hodiny, tmux je jeden z nejjednodušších a nejspolehlivějších nástrojů. Umožňuje oddělit běh procesu od SSH spojení, sledovat průběh úlohy v reálném čase a bezpečně se k ní kdykoliv vrátit. Pro jednorázové operace představuje rychlé řešení bez nutnosti konfigurace cronu, Supervisoru nebo systemd služeb.

