tmux — Terminal Multiplexer — Terminal

tmux memungkinkan beberapa terminal dalam satu session, dan — yang paling penting — session yang tetap hidup saat kamu disconnect dari SSH. Tiga level…

tmux (terminal multiplexer) menjalankan terminalmu di dalam sesi yang hidup di server, bukan di laptopmu. Kamu bisa meninggalkan sesi itu dan kembali lagi nanti, dan semua yang jalan di dalamnya tetap jalan. Mirip kamar kos: kamu bisa pergi (detach) dan pulang lagi (attach), barang-barangmu tetap di tempatnya, dan di dalamnya kamu bisa punya beberapa ruangan (window) yang masing-masing bisa disekat jadi beberapa bagian (pane).

🧪 Tebakan cepat: kamu menjalankan npm run build di dalam tmux di server, lalu WiFi-mu putus. Apa yang terjadi pada build-nya? Tebak dulu, jawabannya ada di bagian "Detach dan attach: sesinya tetap hidup".

Session, window, pane

tmux punya tiga tingkat. Ini sesi di Lab, sama dengan sesi di latihan:

session "dev"
├── window 0 "editor"   (3 pane)
│   ├── pane 0
│   ├── pane 1
│   └── pane 2
└── window 1 "server"   (2 pane)
    ├── pane 0
    └── pane 1

Baris hijau di bawah layar tmux adalah status bar: [dev] 0:editor* 1:server-. Tanda * menandai window yang sedang dibuka, - window yang terakhir dibuka sebelumnya.

Prefix: Ctrl+b dulu, baru tombolnya

Semua shortcut tmux dimulai dengan prefix: tekan Ctrl+b, lepas, lalu tekan tombolnya. Tanpa prefix, tombol itu diketik biasa ke shell.

Tombol Aksinya Perintah tmux-nya
Ctrl+b c bikin window baru new-window
Ctrl+b n / Ctrl+b p window berikutnya / sebelumnya next-window / previous-window
Ctrl+b 0 sampai 9 loncat ke window nomor itu select-window
Ctrl+b , ganti nama window rename-window
Ctrl+b % belah pane jadi kiri dan kanan split-window -h
Ctrl+b " belah pane jadi atas dan bawah split-window -v
Ctrl+b o pindah ke pane berikutnya (atau Ctrl+b lalu panah) select-pane
Ctrl+b z zoom pane yang aktif jadi satu layar penuh, tekan lagi untuk kembali resize-pane -Z
Ctrl+b x tutup pane, setelah konfirmasi y kill-pane
Ctrl+b d detach: keluar, sesinya tetap jalan detach-client
Ctrl+b [ mode scroll, q untuk keluar copy-mode

Hati-hati dengan namanya: tmux menyebut % sebagai split horizontal (-h), karena pane-nya berjajar ke samping.

Detach dan attach: sesinya tetap hidup

deploy@web-1:~$ tmux new -s dev

Perintah itu membuka sesi dev. Di dalamnya kamu menjalankan npm run build, lalu menekan Ctrl+b d:

[detached (from session dev)]
deploy@web-1:~$ tmux ls
dev: 2 windows (created Thu Oct  8 14:37:02 2026)
deploy@web-1:~$ tmux attach -t dev

Kalau koneksi SSH-mu putus, yang mati cuma sambunganmu ke tmux. Sesinya, termasuk npm run build di dalamnya, tetap jalan di server. Itu jawaban tebakannya. Tinggal SSH lagi, lalu tmux attach -t dev. Tanpa tmux, shell-mu ikut ditutup saat SSH putus, dan build-nya mati karena sinyal SIGHUP (dari pelajaran Process Management).

Di latihan: model sesi tmux dengan JavaScript

Latihannya meminta createTmuxSession(name): function yang menyimpan daftar window di dalamnya, lalu mengembalikan object berisi method. Pola menyimpan data di dalam function seperti ini disebut closure:

function createCounter() {
  let count = 0;                       // cuma bisa diubah lewat method di bawah
  return {
    add() { count = count + 1; return count; },
  };
}

const c = createCounter();
console.log(c.add()); // 1
console.log(c.add()); // 2

Dengan pola yang sama, ini yang terjadi di latihan, untuk sesi dev:

Panggilan Kembaliannya Keadaan sesudahnya
s.addWindow("editor") 0 editor: 1 pane
s.addWindow("server") 1 server: 1 pane
s.splitPane(0, "h") 2 editor: 2 pane
s.splitPane(0, "v") 3 editor: 3 pane
s.splitPane(1, "h") 2 server: 2 pane
s.detach() "detached: dev" gak menempel lagi

⚠️ Jebakan yang sering ketemu

TL;DR: tmux menjalankan terminal di dalam sesi yang hidup di server. Sesi berisi window (seperti tab), window berisi pane (potongan yang terlihat bersamaan); window baru mulai dengan 1 pane. Semua shortcut dimulai dengan prefix Ctrl+b: c window baru, n/p pindah window, % belah kiri-kanan, " belah atas-bawah, o pindah pane, z zoom, x tutup pane, d detach. tmux new -s dev bikin sesi, tmux ls daftar sesi, tmux attach -t dev masuk lagi. SSH putus gak membunuh sesinya, jadi build yang jalan di dalam tmux tetap jalan.

Yang akan kamu pelajari