Εμπιστεύεσαι την σύνδεση internet στο σπίτι σου και είσαι συνδεδεμένος στον απομακρυσμένο server σου και τρέχεις μια εντολή η οποία θα ολοκληρωθεί σε 2-3 λεπτά. Τσούπ … διακοπή ρεύματος – internet… Τώρα;
Φυσικά το παραπάνω σενάριο είναι το πρώτο βάπτισμα πυρός ενός junior admin και το έχουμε περάσει όλοι μας.
Οι περισσότεροι πλέον χρησιμοποιούμε κάποιον multiplexer
όπως το GNU Screen ή το πιο διαδεδομένο Tmux. Στο παραπάνω «τρομακτικό σενάριο» απλά:
- Θα συνδεθείς στον server σου όπως κάνεις πάντα
- θα τρέξεις το tmux και έπειτα θα κάνεις ότι δουλειές είναι να κάνεις.
- Αν διακοπεί η σύνδεσή σου, κρασάρει το PC σου, κοπεί το ρεύμα στο σπίτι, δεν σε νοιάζει…
- Απλά μόλις επανέλθει και συνδεθείς στον server σου τρέχεις ένα tmux attach
- και συνεχίζεις σαν να μην έχει γίνει τίποτα.
Με το tmux επίσης το τερματικό σου θα έχει windows (παράθυρα), χωρισμένα σε pane (περιοχές) και κάθε pane θα έχει ένα τερματικό ή ένα πρόγραμμα να τρέχει.
Οι δυνατότητες δεν τελειώνουν εδώ. Κάθε τέτοια συλλογή από Windows και Panes θα είναι ένα session (συνεδρία). Και μπορείς να αποσυνδεθείς από μια συνεδρία αφήνοντας τα προγράμματα να τρέχουν. Έτσι μπορείς πχ να συνδεθείς σε κάποιο απομακρυσμένο υπολογιστή να ξεκινήσεις κάποια προγράμματα να αποσυνδεθείς και την άλλη μέρα να τα βρεις ακριβώς όπως τα άφησες. Επίσης μπορείς να συνδεθείς στην συνεδρία κάποιου άλλου χρήστη και να δουλεύετε κάποιο κείμενο η πρόγραμμα ταυτόχρονα ο καθένας από το σπίτι του η το γραφείου του.
Έχει και άλλα; Έχει μπορείς να κάνεις όλα τα παραπάνω με scripts αυτοματοποιώντας τις διαδικασίες. Το λιγουρεύεστε;
Κάποια από αυτά τα κάνει και το πρόγραμμα screen
οι δυνατότητες και η παραμετροποίηση του tmux όμως δεν έχουν ταίρι.
Εγκατάσταση Tmux
Το tmux υπάρχει σε κάθε διανομή, αν και όχι πάντα η τελευταία έκδοση. Τα παρακάτω έχουν δοκιμαστεί στην έκδοση 3.1
. Μπορείτε να δείτε την έκδοση που έχετε εγκατεστημένη με την εντολή.
tmux -V
Ωραία… αλλά που πρέπει να το εγκαταστήσεις; Φυσικά σε πρώτη φάση μπορείς να το εγκαταστήσεις στο PC σου και όταν εξοικειωθείς με την χρήση του θα το κάνεις εγκατάσταση και στον server σου και μετά από κάθε SSH θα το τρέχεις (ή θα το ρυθμίσεις να τρεχει αυτόματα μετά απο κάθε SSHσύνδεση)
Prefix του Tmux
Μπορείς να ξεκινήσεις το tmux
χωρίς να ορίσεις ένα όνομα για το session σου, αλλά ας ξεκινήσουμε σωστά την χρήση του ονομάζοντας μια. Στο τερματικό θα δώσουμε μια από τις παρακάτω εντολές.
tmux new-session -s talos ή tmux new -s talos
Για να βγούμε από το session δίνουμε την εντολή
exit
Κάθε εντολή του tmux
ξεκινάει με ένα συνδυασμό πλήκτρων που τον λέμε prefix
εξ ορισμού είναι ο συνδυασμός
Ctrl+B
Εναλλακτικά θα το βλέπετε συχνά να αναφέρεται ως C-b
(όπως θα κάνω και εδώ). Ας δούμε π.χ. την ώρα Ctrl+B+t (C-b +t). Για να σταματήσετε το ρολόι πατήστε το πλήκρο q
.
Υπάρχουν πολλές εντολές. Ας τις δούμε όλες τις διαθέσιμες εντολές του tmux
Ctrl+B+?

Σημείωση: Ξέρω ότι κοιτάς το δικό σου Tmux και βλέπεις και την παραπάνω εικόνα με το δικό μου Tmux και λες… «τι κάνω λάθος ;». Μην ανησυχείς… λιγουρέψου το και θα σου πως στο τέλος.
Αν κάτι δεν δουλεύει τότε βεβαιωθείτε πως δεν έχετε πατημένο το CapsLock
και το πληκτρολόγιο είναι στα αγγλικά. Για να δεις π.χ. την ώρα είναι C-b+ t
και όχι C-b+ Τ
Ρυθμίσεις και διαμόρφωση του Tmux
Το πρώτο πράγμα που αλλάζω είναι το πλήκτρο που θα λειτουργεί σαν prefix
, προσωπικά χρησιμοποιώ το ` για να πατάω μόνο ένα κουμπί.
Το αρχείο ρυθμίσεων είναι το αρχείο ~/.tmux.conf
όπου θα προσθέσω τις πρώτες μου ρυθμίσεις.
# Set prefix key
set-option -g prefix `
unbind-key C-b
bind-key ` send-prefix
# Reload ~/.tmux.conf
bind r source-file ~/.tmux.conf
# Start numbering from 1
set -g base-index 1
setw -g pane-base-index 1
μιας και μέχρι να το φέρω στα μέτρα μου θα κάνω αρκετές αλλαγές προσθεσα τον συνδυασμό C-b+ r
που θα φορτώνει (reload) το αρχείο ρυθμίσεων από την αρχή.
Μια άλλη αλλαγή που έκανα είναι να ξεκινάει η αρίθμηση από το 1 γιατί είμαστε άνθρωποι.
Tmux Sessions – Συνεδρίες
Ας δώσουμε μερικές εντολές στο τερματικό όπως μια ls
για να δείχνει κάτι. Τώρα θα αποσυνδεθούμε από την συνεδρία με C-b+ d
(detach). Η εντολή
tmux list-sessions ή tmux ls
θα δείξει τις διαθέσιμες συνεδρίες. Ας φτιάξουμε άλλη μια αποσυνδεδεμένη συνεδρία
tmux new -s work -d
και η εντολή tmux ls
θα δείχνει κάτι σαν το παρακάτω
talos: 1 windows (created 00:15:11 2020) [161x23] work: 1 windows (created 00:25:53 2020) [80x24]
Ώρα να συνδεθούμε σε μια συνεδρία. Θα δώσουμε την εντολή
tmux attach -t talos
και η συνεδρία θα επανέλθει μαζί με ότι τρέχαμε.
Ώρα για λίγα μαγικά. Ανοίγουμε ένα δεύτερο τερματικό και δίνουμε την ίδια εντολή tmux attach -t talos
. Μαγεία. Δοκιμάστε να αλλάξετε μέγεθος στα τερματικά και δείτε τι θα συμβεί.
Έστω τώρα ότι έχετε ένα δεύτερο υπολογιστή στον οποίο μπορείτε να συνδεθείτε με ssh και να έχετε πρόσβαση σε αυτή την συνεδρία. Έτσι πχ δυο προγραμματιστές μπορούν να κάνουν pair programming
. Για αυτό πολλά μπορούν να λεχθούν, αλλά ας το αφήσουμε για την ώρα.
Αλλά βλέπω μια στενοχώρια. Τόσα session θα μείνουν για πάντα; Μπορούμε να τα σταματήσουμε
tmux kill-session -t talos tmux kill-session -t work tmux ls
Ένας γρηγορότερος τρόπος
tmux kill-server
Tmux Windows – Παράθυρα
Τα παράθυρα είναι σαν τα tabs
του τερματικού. Παρακάτω είναι οι βασικές εντολές.
Συνδυασμός | Εντολή |
---|---|
C-b+ c | Δημιουργία (create) παράθυρου |
C-b+ n | Επόμενο (next) παράθυρο |
C-b+ d | Προηγούμενο (previous) παράθυρο |
C-b+ w | Επιλογή παράθυρου |
C-b+ n | Επιλογή με αριθμό, n=1…9 |
C-b+ & | Κλείσιμο παραθύρου |
Tmux Panes – Περιοχές
Πρώτα μερικές ρυθμίσεις που θα προστεθούν στο αρχείο. Μου αρέσουν αυτές, γιατί τις βρίσκω ποιο λογικές. Αλλά μπορείτε να χρησιμοποιήσετε τις αρχικές ρυθμίσεις ή να τις προσαρμόσετε στις ανάγκες σας.
# splitting panes with | and -
bind-key - split-window -v
bind-key \ split-window -h
# Resize
bind-key -r < resize-pane -L 5
bind-key -r > resize-pane -R 5
bind-key -r + resize-pane -U 5
bind-key -r _ resize-pane -D 5
# Resize with arrows
bind-key -r C-Left resize-pane -L 5
bind-key -r C-Right resize-pane -R 5
bind-key -r C-Up resize-pane -U 5
bind-key -r C-down resize-pane -D 5
# Layout
bind-key = select-layout even-vertical
bind-key | select-layout even-horizontal
# vim style
bind-key -r h select-pane -L
bind-key -r j select-pane -D
bind-key -r k select-pane -U
bind-key -r l select-pane -R
# arrow style
bind-key Up select-pane -U
bind-key Down select-pane -D
bind-key Left select-pane -L
bind-key Right select-pane -R
Αποθηκεύστε τις αλλαγές, φορτώστε τις C-b+ r
, και είμαστε έτοιμοι. Ας χωρίσουμε την οθόνη στα 2 οριζόντια και κάθετα C-b+ -
και C-b+ \
. Τώρα δοκιμάστε να αλλάξετε περιοχή.
Έβαλα δυο συνδυασμούς είτε με τα πλήκτρα του vi
(h,j,k,l) είτε λιγότερο βολικό με τα βελάκια. Επίσης έβαλα δυο τρόπος να αλλάζεις μέγεθος στις περιοχές. Δοκιμάστε τις. Για παράδειγμα C-b+ <
ή C-b+ Left
θα μεγαλώσει την περιοχή προς τα αριστερά.
Συνδυασμός | Εντολή |
---|---|
C-b+ - | Κάθετος χωρισμός |
C-b+ \ | Οριζόντιος χωρισμός |
C-b+ = | οριζόντια τακτοποίηση |
C-b+ | | Κάθετη τακτοποίηση |
C-b+ z | Μεγιστοποίηση / επαναφορά |
C-b+ o | Αλλαγή περιοχής |
C-b+ q | Αρίθμισε περιοχές |
C-b+ Space | Αλλαγή διαμόρφωσης |
Τέλος αυτά μπορούν να γίνουν και από την γραμμή εντολών
tmux select-layout even-vertical
που μπορείτε να δώσετε σε οποιοδήποτε τερματικό. Τις εντολές μπορείτε να τις δώσετε και στην γραμμή εντολών του tmux που είναι προσβάσιμη με C-b+ :
.
Tmux Plugin Manager
Για το Tmux έχει φτιαχτεί και ένας Plugin Manager για να μπορούν να επεκτείνουν τις δυνατότητές του όπως παράδειγμα ένα plugin επαναφοράς της συνεδρίας μας με όλα τα παράθυρα, τα tabs κλπ.
Εγκατάσταση του TPM
Για να το εγκαταστήσετε τρέχετε:
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
Επειτα στο τέλος του αρχείου ρυθμίσεων του ~/.tmux.conf
προσθέστε την παρακάτω γραμμή:
# List of plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
# Other examples:
# set -g @plugin 'github_username/plugin_name'
# set -g @plugin 'git@github.com:user/plugin'
# set -g @plugin 'git@bitbucket.com:user/plugin'
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run '~/.tmux/plugins/tpm/tpm'
Φορτώστε ξανά το περιβάλλον Tmux, ώστε το TPM να φορτωθεί:
tmux source ~/.tmux.conf
Προσθήκη Plugins στο Tmux
- Προσθέστε το νέο plugin που βρήκατε στο
~/.tmux.conf
με την διαρρύθμισηset -g @plugin '...'
(ή όπως το συστήνει η τεκμηρίωση του plugin) - Πατήστε
C-b + I
( κεφαλαίοi,
όπως λέμε Install) για να κατεβάσει το plugin.
Αυτό ήταν ! Το plugin κατέβηκε στον φάκελο ~/.tmux/plugins/
και ενεργοποιήθηκε.
Απεγκατάσταση Plugins του Tmux
- Αφαιρέστε (ή βάλτε
#
στην αρχή) την γραμμή του plugin από την λίστα. - Press
Πατήστε
C-b
+ alt + u (μικράu
όπως λέμε uninstall) για να αφαιρεθεί το plugin.
Όλα τα plugins είναι στο ~/.tmux/plugins/
οπότε εναλλακτικά μπορείτε να τα βρείτε εκεί και να τα διαγράψετε.
Βασικές εντολές του TPM
C+b
+ I
- Εγκαθιστά νέa plugins από το GitHub ή οποιοδήποτε άλλο αποθετήριο git
- Ενημερώνει για τις αλλαγές ρυθμίσεων του Tmux
C+b
+ U
- Αναβάθμιση των plugin(s)
C+b
+ alt + u
- Απεγκατάσταση των plugins που έχουν αφαιρεθεί (ή έχουν
#
) στην λίστα με τα plugins.
Μπορείτε να ρίξετε μια ματιά στην λίστα των διαθέσιμων Tmux Plugins
Αποθήκευση διαρρύθμισης των tabs – panes και συνεδριών
Ήρθε η ώρα να βάλουμε το πρώτο μας χρήσιμο Tmux plugin που ονομάζεται Tmux Resurrect. Γιατί να το κάνουμε αυτό;
Το Tmux είναι υπέροχο, εκτός εάν πρέπει να κάνετε επανεκκίνηση του υπολογιστή η τον Server. Χάνετε όλα τα τρέχοντα προγράμματα, διατάξεις παραθύρου κ.λπ. Το tmux-resurrect
αποθηκεύει όλες τις λεπτομέρειες από το περιβάλλον tmux σας, ώστε να μπορεί να αποκατασταθεί πλήρως μετά την επανεκκίνηση του συστήματος σαν να μην σταματήσατε ποτέ το tmux.
Ανοίξτε το ~/.tmux.conf
σας και προσθέστε στην λίστα των plugin σας:
set -g @plugin 'tmux-plugins/tmux-resurrect'
Αφού κλείσετε και αποθηκεύσετε, πατήστε C-b + I
για λήψη και ενεργοποίηση του plugin. Τώρα θα πρέπει να μπορείτε να χρησιμοποιήσετε την προσθήκη.
Αφού διαμορφώσετε όπως θέλετε το Tmux σας, πατήστε:
C-b + Ctrl-s
: Για αποθήκευσηC-b + Ctrl-r
– Για επαναφορά
Για αυτόματη και συνεχόμενη αποθήκευση των συνεδριών και διαρρυθμίσεων σας δείτε το plugin tmux-continuum
Ασφαλής από διακοπές σύνδεσης εργασία… χωρίς ποντίκι
Καλύψαμε αρκετά πράγματα για την χρήση του tmux
αλλά σίγουρα δεν τα είπαμε όλα. Μπορείτε να ρίξετε μια ματιά στις παραπομπές για περαιτέρω μελέτη.
Φυσικά πριν κλείσω, όποιος ενδιαφέρεται να έχει το Tmux με την κάτω μπάρα, όπως την είδε στην εικόνα πιο πάνω, μπορεί να δοκιμάσει το κορυφαίο oh-my-tmux και να το διαμορφώσει όπως θέλει, ή να χρησιμοποιήσει το έτοιμα διαμορφωμένο που είδαμε στον οδηγό Dotfiles σε Git Bare για εύκολη μεταφορά ρυθμίσεων.
Παραπομπές:
Σου άρεσε το άρθρο; Πες την άποψή σου... έστω και Ανώνυμα: