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.
Apakah kita bisa kembali ke tampilan terminal di saat terakhir kali konek ke server?
Nanti ya, akan kita uji belakangan.
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 |
tmux -V.Konfigurasi
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 %.
| 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.
|
|
| 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
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.
-
Buka terminal lalu hubungkan ke server terlebih dahulu melalui ssh.
1ssh root@youripserver -
Jalankan tmux kemudian buka/edit salah satu file dengan
nano.1tmux1nano contohaja.txt -
Tutup terminal seperti biasa melalui tombol close.
-
Ulangi langkah pertama, lalu jalankan tmux kembali namun dengan menambahkan argumen
attachataua.1tmux a -
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.