Tmux: multitasken in de terminal

      2 reacties op Tmux: multitasken in de terminal

Met de tool tmux kun je je terminal of console in meerdere delen opsplitsen.
Terminal MUltipleXer (kortgezegd tmux) is soort windowmanager voor de terminal. Je kunt een terminal vertikaal en horizontaal opsplitsen in meerdere ‘panes’ of windows. En iedere pane bevat een aparte instantie van de terminal. Dat betekent dat je meerdere commando’s en programma’s naast elkaar in hetzelfde terminalvenster kunt laten lopen, zonder extra terminalvensters te hoeven openen.

Een handig alternatief voor Tmux is Terminator, een terminal met splitscreen voor de desktop. Erg makkelijk in te stellen via rechtsklikken.

tmux installeren:

sudo apt-get install tmux

tmux starten:

tmux

Panes en sessies

Daarnaast bewaart tmux deze panes in een sessie. Je kunt een nieuwe sessie starten onder een zelf te verzinnen naam (bijvoorbeeld ‘admin’):

tmux new -s admin

Je kunt een sessie op elk moment verlaten met de toetsen Ctrl + b en d. (Ctrl+b is de zogenaamde prefix en de d-toets (van ‘detache’). Druk Ctrl + b tegelijk in en laat ze weer los en druk daarna op de d-toets). tmux houdt de sessie dan op de achtergrond in stand totdat je de tmux-server uitschakelt, bijvoorbeeld door de Pi te rebooten.

Dit is erg handig, omdat je op een later tijdstip een sessie weer kunt oppakken door die sessie simpelweg opnieuw te ‘attachen’ (tmux attach -t admin). Je kunt een bestaande sessie op deze manier ook oppakken vanuit een andere teminal, bijvoorbeeld via ssh vanaf een andere computer.

Je kunt een sessie voorgoed afsluiten door op de commandline van die sessie ‘exit’ in te typen.

Vooral bij het managen van meerdere Raspberry Pi’s in je netwerk is tmux erg handig. Vanuit de ene terminal op je hoofdcomputer kun je al je Pi’s via ssh-sessies managen. En als je een ssh-verbinding een keer verliest, blijft de sessie gewoon bestaan inclusief de lopende processen. Na het herstellen van de verbinding kun je dan weer gewoon verder waar je gebleven was door de sessie weer te verbinden met ‘attach’.


Splitten

tmux draait nu binnen de terminal in een eigen window (inclusief statusbalk) en met een enkele pane. tmux-commando’s worden vooraf gegaan door een prefix, standaard is dat de toetsencombinatie Ctrl+b. Om de pane horizontaal te splitten in een linker en een rechter pane druk je eerst de twee toetsen Ctrl + b tegelijk in en laat je ze weer los. Meteen daarna druk je op de %-toets (dus tegelijk met Shift). Om een pane verticaal  te splitsen druk je op Ctrl +b en daarna op de “-toets (dus tegelijk met Shift). Elke pane kun je weer opnieuw splitten.

Om te wisselen tussen panes gebruik je weer Ctrl+b en daarna een pijltjestoets. Om een pane te sluiten typ je het commando ‘exit’ of de toetsencombinatie Ctrl+d. Voor een lijst met alle mogelijke commando’s en opties voor tmux gebruik je Ctrl+b en ? (sluit de lijst met een druk  op de q).

Windows en panes

Een window in tmux is als een nieuwe virtual desktop in de grafische omgeving. Je kunt het window waar je in zit herkennen aan zijn cijfer + label op de statusbalk. Je maakt een nieuw window eenvoudig met Ctrl+b en de c-toets. Om terug te gaan naar je vorige window gebruik je Ctrl+b en p (van previous). Naar het volgende window ga je met Ctrl+b en n (van next). Je kunt ook het nummer van het window waar je naar toe wilt gebruiken: Ctrl+b en 2 of Ctrl+b en 3 etc.

Als je alle tmux-windows en -panes tegelijk wilt sluiten, druk je op Ctrl+b, en vervolgens typ je  :kill-session en druk je op de Enter-toets.

tmux.conf

Ctrl+b en andere toetsen zijn in de standaardsettings niet altijd logisch. Daarom kun je je eigen instellingen maken in een configuratiebestand .tmux.conf . Dit is een verborgen bestand (vandaar de voorafgaande punt) in je home-directory. Je moet het eerst nog zelf aanmaken. Om het makkelijk te houden, kun je ook een van de vele bestaande .tmux.conf-bestanden die anderen samengesteld hebben downloaden. Google op dit bestand of zoek in GitHub op tmux-configs:

https://github.com/topics/tmux-configs

Hier vind je er een heleboel bij elkaar.
Wij hebben gekozen voor het configuratiebestand van hamvocke: github.com/hamvocke/dotfiles/blob/master/tmux/.tmux.conf 

 

2 gedachten over “Tmux: multitasken in de terminal

  1. Pingback: Internetten via de commandline - Avonturen met de Raspberry Pi

    1. jmu Auteur bericht

      Beste Ruud,
      bedankt voor je reactie. Eerlijk gezegd heb ik het weerstation al een tijd geleden offline gehaald, want na een upgrade naar Raspbian Stretch bleek dat het een en ander niet meer werkte. Ook de libraries van de sensors bleken (na opnieuw downloaden) veranderd, onder andere vanwege de omschakeling van Python 2 naar 3. Ik kwam tot de conclusie dat ik het hele project opnieuw moest gaan doen, maar daar ontbreekt op het moment de tijd en de zin voor.
      Het belangrijkste doel van dit artikel is om te laten zien dat er andere oplossingen zijn dan een standaard database die oneindig veel datasets opslaat.
      En bovendien is het artikel eigenlijk nog niet af, sommige stappen zijn niet helemaal uitgewerkt.

      De belangrijkste les hieruit was voor mij dan ook dat je de software van een werkend project nooit moet gaan updaten als dat niet per se noodzakelijk is.
      Groet, Jan

Gesloten voor reacties.