Daftar Isi

Tmux: Terminal Multiplexer

Pernah, kan ya? Ngalami tiba-tiba koneksi dari ssh server yang kita remote terputus? Pasti rasanya sangat amat membagongkan. Apalagi jika ada task yang lagi jalan, uh rasanya pengen *****. Tapi, jangan khawatir, karena ada solusinya. Yaitu dengan menggunakan tmux.

Tapi tunggu dulu! Bukannya kita bisa lihat log ya kalau misalkan terputus dari server untuk melihat task sebelumnya 🤔

Ya bisa sih, tapi kalau tasknya ga nyimpen banyak log gimana?

Belum lagi harus konekin ulang ke server, jalanin ulang tasknya, dst. Pasti capek, kan? 😫

Nah, kini kamu bisa menggunakan tmux untuk mengatasi hal tersebut.

Pertanyaan

Apakah kita bisa kembali ke tampilan terminal di saat terakhir kali konek ke server?

Nanti ya, akan kita uji belakangan.

Info
Menurut Wiki Archlinux, terminal multiplexer adalah sejumlah terminal window yang menjalankan program secara terpisah, yang dapat dibuat, diakses, dikontrol melalui satu layar terminal yang sama. Tmux dapat dilepas dari layar terminal OS kita dan akan terus berjalan di latarbelakang, juga dapat dipasang kembali.

Bingung? Simpelnya gini. Tmux adalah terminal yang berjalan di dalam terminal. Sehingga, program nantinya akan berjalan di dalam tmux bukan di terminal OS kita.

Oh iya, tmux menyimpan session (sesi) yaitu berupa data sementara mengenai state (keadaan) saat ini dari program-program yang dijalankan. Sayangnya sesi ini akan hilang ketika melakukan reboot/shutdown.

Instalasi

MacOS

Package Manager Command
Homebrew brew install tmux
MacPorts sudo port install tmux
Nix nix-env -iA nixpkgs.tmux

Linux

OS Command
Debian sudo apt install tmux
Fedora sudo dnf install tmux
Archlinux sudo pacman -S tmux
Alpine sudo apk add tmux
OpenSUSE sudo zypper install tmux
Gentoo sudo emerge tmux
FreeBSD sudo pkg install tmux
Tips
Untuk memastikan instalasi berhasil, cek dengan perintah tmux -V.

Konfigurasi

Info

Secara default, konfigurasi tmux tidak ada, baik pada home direktori user ~/ maupun direktori /etc/.

Untuk itu kita bisa membuatnya sendiri dan menyimpan konfigurasi pada home direktori user ~/.tmux.conf.

Jika ingin menyimpannya secara global, letakkan pada /etc/ direktori /etc/tmux.conf.

Keybinds

Tmux memiliki prefix keybind, yaitu perpaduan key CTRL+b. Prefix ini digunakan untuk mengontrol panel tmux.

Contoh, membagi panel window menjadi dua secara vertikal, tekan prefix key, kemudian tekan %.

/images/tmux-vsplit.png
Vertical Split

Key Effect
prefix + c jendela baru
prefix + n/p beralih antar jendela
prefix + w daftar semua jendela
prefix + , mengganti nama jendela
prefix + % membagi panel secara vertikal
prefix + " membagi panel secara horizontal
prefix + x mematikan panel
prefix + q menampilkan nomor panel
prefix + arrow beralih antar panel

Kustom Konfigurasi

Berikut kustom konfig yang biasa saya gunakan agar lebih mudah dalam penggunaannya.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
# Use Alt-arrow keys to switch panes
bind -n M-Left select-pane -L
bind -n M-Right select-pane -R
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D

# Shift arrow to switch windows
bind -n S-Left previous-window
bind -n S-Right next-window

# Mouse mode
set -g mouse on

# Set easier window split keys
bind-key v split-window -h
bind-key h split-window -v

# Easy config reload
bind-key r source-file ~/.tmux.conf \; display-message "~/.tmux.conf reloaded."
Penjelasan
Key Effect
Alt + Arrow beralih antar panel
Shift + Arrow Left/Right beralih antar jendela
prefix + v membagi panel secara vertical
prefix + h membagi panel secara horizontal

Penggunaan

Command Detail
tmux or tmux new membuat sesi baru
tmux new -s mysession membuat sesi baru dengan nama mysession
tmux kill-ses -t mysession mematikan sesi yang bernama mysession
tmux kill-session mematikan sesi yang baru saja terbuka
tmux a or tmux attach kembali ke sesi sebelumnya
tmux ls melihat daftar sesi yang sedang berjalan

Uji Coba

Catatan

Kita akan menguji coba menjalankan sebuah task sederhana, yaitu mengedit sebuah file dengan nano. Kemudian akan terputus dari server, setelah itu kita akan membuka tmux lagi untuk melihat apakah sesi saat mengedit menggunakan nano masih terbuka atau tidaknya.

Dalam contoh ini menggunakan tmux pada sisi server karena tidak ada batas timeout dari tmux itu sendiri, sedangan jika menjalankan tmux pada sisi client kita akan berhadapan dengan batas reconnect timeout dari ssh. Yang mana jika melewati batas waktu reconnect ssh, maka sesi ssh akan tertutup dan tmux tidak menyimpan keadaan apapun.

  1. Buka terminal lalu hubungkan ke server terlebih dahulu melalui ssh.

    1
    
    ssh root@youripserver
    
  2. Jalankan tmux kemudian buka/edit salah satu file dengan nano.

    1
    
    tmux
    
    1
    
    nano contohaja.txt
    
  3. Tutup terminal seperti biasa melalui tombol close.

  4. Ulangi langkah pertama, lalu jalankan tmux kembali namun dengan menambahkan argumen attach atau a.

    1
    
    tmux a
    
  5. Lihat hasilnya.

Pasti keadaannya masih sama saat sebelum terputus dari server, kan? Nah itu adalah contoh sederhana penggunaan tmux, selebihnya bisa coba eksplor sendiri ya.

Kesimpulan

Tmux adalah tool yang sangat berguna bagi seorang administrator ataupun bagi yang sering melakukan eksperimen melalu server. Tmux dapat mengembalikkan keadaan seperti sedia kala sebelum terjadinya masalah koneksi antara server dan client.

Referensi