Jak spouštět dlouho běžící importy a dávkové úlohy na Linux serveru pomocí tmux

10. 6. 2026

Kaž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.

Buy me a coffee icon Support on Patreon

Nejnovější příspěvky