️ Screen & Tmux
Cheat sheet lengkap untuk terminal multiplexer: Screen dan Tmux - agar session tetap hidup dan multitasking di terminal jadi mudah.
️ Masalah: SSH Disconnect Kill Session
Pernah mengalami ini?
- Lagi proses
apt upgradeataursyncbesar via SSH - Koneksi tiba-tiba putus
- Proses mati, harus mulai dari awal
Solusi: Terminal multiplexer - program yang menjaga session tetap hidup meski koneksi putus.
Screen vs Tmux: Perbandingan
| Fitur | Screen | Tmux |
|---|---|---|
| Lisensi | GNU GPL | BSD |
| Pre-installed | ✅ Hampir semua distro | ❌ Perlu install |
| Split pane | ✅ (tapi ribet) | ✅✅ (mudah & intuitif) |
| Konfigurasi | ~/.screenrc |
~/.tmux.conf |
| Copy mode (scroll) | ✅ Ctrl+A Esc |
✅ Ctrl+B [ (vi/emacs mode) |
| Session naming | ✅ | ✅ |
| Status bar | ❌ Minimal | ✅✅ Kaya fitur |
| Plugin | ❌ | ✅ TPM plugin manager |
| Kemudahan | Sederhana, sedikit fitur | Lebih kompleks, lebih powerful |
Rekomendasi: Untuk server minimal → Screen. Untuk power user → Tmux.
Screen
Install Screen
# Sudah terinstall di hampir semua distro
screen --version
# Jika belum
sudo apt install screen # Ubuntu/Debian
sudo dnf install screen # Fedora
Perintah Dasar Screen
Membuat & Mengelola Session
# Buat session baru (otomatis masuk)
screen
# Buat session dengan nama
screen -S mysession
# Buat session dengan perintah langsung
screen -S mysession python script.py
# Daftar session aktif
screen -ls
# Output:
# There is a screen on:
# 12345.mysession (Detached)
# 1 Socket in /run/screen/S-user.
Detach & Reattach
# Detach dari session: Ctrl+A d
# (Program tetap berjalan di background)
# Reattach ke session
screen -r # reattach (jika hanya 1 session)
screen -r mysession # reattach session spesifik
screen -r 12345 # reattach dengan PID
# Reattach jika ada session lain
screen -x # multi-attach (sharing session)
# Reattach ke session yang sudah attached
screen -dr mysession # detach dulu, lalu attach
Multiple Windows
# Buat window baru: Ctrl+A c
# Navigasi antar window:
# Ctrl+A 0-9 - pindah ke window nomor 0-9
# Ctrl+A n - window berikutnya
# Ctrl+A p - window sebelumnya
# Ctrl+A " - daftar window (interaktif)
# Rename window: Ctrl+A Shift+A
# Kill window: Ctrl+A k (atau exit dari shell)
# List semua window di session: Ctrl+A "
Scrollback Mode
# Masuk scrollback: Ctrl+A Esc
# ↑ ↓ - scroll baris
# PageUp/Down - scroll halaman
# Esc - keluar scrollback
# Atur buffer scrollback (di .screenrc):
defscrollback 10000
Split Screen (Screen)
# Split horizontal: Ctrl+A S
# Split vertikal: Ctrl+A | (pipe)
# Pindah antar region: Ctrl+A Tab
# Buat window baru di region: Ctrl+A c
# Kill region: Ctrl+A X
# Kill semua region kecuali aktif: Ctrl+A Q
Logging
# Mulai log session ke file: Ctrl+A H
# (Toggle - tekan lagi untuk stop)
# File: screenlog.0, screenlog.1, ...
Konfigurasi Screen ~/.screenrc
# Scrollback buffer
defscrollback 10000
# Status bar
hardstatus on
hardstatus alwayslastline
hardstatus string "%{= kW}%w %=%{= kW}%n %t"
# Startup windows
screen -t bash 0
screen -t htop 1 htop
# Bind key untuk split
bindkey -k k1 split # F1 = split horizontal
bindkey -k k2 vbell # F2 = split vertical
# Nonaktifkan welcome message
startup_message off
️ Tmux
Install Tmux
sudo apt install tmux # Ubuntu/Debian
sudo dnf install tmux # Fedora
brew install tmux # macOS
# Cek versi
tmux -V
Perintah Dasar Tmux
Prefix Key
Default prefix:
Ctrl+B- tekan sebelum semua command Tmux.Tips: Banyak orang mengganti ke
Ctrl+A(agar tidak perlu menjangkau jauh).
Membuat & Mengelola Session
# Buat session baru
tmux new -s mysession
# Buat session dengan nama
tmux new -s mysession
# Buat session tanpa attach
tmux new -s mysession -d
# Daftar session
tmux list-sessions # atau: tmux ls
# Output:
# mysession: 1 windows (created Mon Jun 22 10:00:00 2026) [80x24]
# Attach ke session
tmux attach -t mysession
tmux a -t mysession # alias
# Detach (dari dalam): Ctrl+B d
# Kill session
tmux kill-session -t mysession
tmux kill-server # kill semua session
# Rename session (dari dalam): Ctrl+B $
Window Management
# Buat window baru: Ctrl+B c
# Pindah ke window: Ctrl+B <number> (0-9)
# Ctrl+B n - window berikutnya
# Ctrl+B p - window sebelumnya
# Ctrl+B w - pilih window (interaktif)
# Ctrl+B , - rename window
# Ctrl+B & - kill window
# Ctrl+B l - ke window terakhir
Pane Management (Split)
# Split horizontal: Ctrl+B " (petik dua)
# Split vertikal: Ctrl+B % (persen)
# Pindah antar pane: Ctrl+B ↑/↓/←/→
# Ctrl+B o - pindah pane berikutnya
# Ctrl+b ; - ke pane terakhir
# Resize pane:
# Ctrl+B Ctrl+↑/↓/←/→ - resize 1 baris
# Ctrl+B Alt+↑/↓/←/→ - resize 5 baris
# Close pane: Ctrl+B x (atau exit/keluar dari shell)
# Zoom pane (fullscreen): Ctrl+B z (toggle)
# Swap pane: Ctrl+B { atau Ctrl+B }
# Break pane ke window baru: Ctrl+B !
Copy Mode (Scroll)
# Masuk copy mode: Ctrl+B [
# ↑ / ↓ / PageUp / PageDown - scroll
# Space - mulai seleksi
# Enter - copy & keluar mode
# Esc / q - keluar tanpa copy
# Paste buffer: Ctrl+B ]
# Cari teks (vi mode):
# /pattern - cari forward
# ?pattern - cari backward
# n / N - next / previous match
Konfigurasi Tmux ~/.tmux.conf
# Ubah prefix ke Ctrl+A (seperti Screen)
set -g prefix C-a
unbind C-b
bind C-a send-prefix
# Mouse support (scroll, resize pane, pilih window)
set -g mouse on
# Index mulai dari 1 (bukan 0)
set -g base-index 1
set -g pane-base-index 1
# Status bar
set -g status-bg "#2d2d2d"
set -g status-fg "#ffffff"
set -g status-left "#[fg=green]Session: #S #[default]"
set -g status-right "#[fg=yellow]%H:%M %d-%b-%y #[default]"
# Window list di status bar
set -g status-justify centre
setw -g automatic-rename on
setw -g window-status-current-style fg=cyan,bold
# Copy mode menggunakan vi keys
setw -g mode-keys vi
# Bind untuk reload config
bind r source-file ~/.tmux.conf \; display "Config reloaded!"
# Bind untuk split yang lebih cepat
bind | split-window -h # Alt+Shift+|
bind - split-window -v # Alt+Shift+-
# Bind untuk resize dengan vim keys
bind h resize-pane -L 5
bind j resize-pane -D 5
bind k resize-pane -U 5
bind l resize-pane -R 5
# 256 colors
set -g default-terminal "screen-256color"
# History limit
set -g history-limit 10000
Terapkan Konfigurasi
# Reload dari dalam tmux: Ctrl+B :source-file ~/.tmux.conf
# Atau dari shell (jika dalam tmux):
tmux source-file ~/.tmux.conf
Common Tasks
Rename Session
| Tool | Command |
|---|---|
| Screen | Dari dalam: Ctrl+A :sessionname NEWNAME
|
| Tmux | Dari dalam: Ctrl+B $ |
Session Naming Convention
# Gunakan nama deskriptif
screen -S project-api
tmux new -s project-api
Detach & Logout Aman
# 1. Detach (program tetap jalan)
# Screen: Ctrl+A d
# Tmux: Ctrl+B d
# 2. Logout dari SSH
exit
Auto-Attach di SSH Login
Tambahkan ke ~/.bashrc:
# Auto-attach tmux saat SSH login
if [[ -z "$TMUX" ]] && [[ "$SSH_TTY" ]]; then
# Coba attach session yang ada, atau buat baru
tmux attach -t main 2>/dev/null || tmux new -s main
fi
Versi Screen:
if [[ -z "$STY" ]] && [[ "$SSH_TTY" ]]; then
screen -xR
fi
Logging ke File
Tmux: Aktifkan logging dengan:
# Dalam session, mulai log: Ctrl+B :pipe-pane -o 'cat >> ~/tmux-$(date +%Y%m%d).log'
# Stop log: Ctrl+B :pipe-pane
Atau di .tmux.conf:
bind P pipe-pane -o 'cat >> ~/tmux-$(date +%Y%m%d).log; echo "Logging started"'
Screen: Ctrl+A H (toggle).
Tips & Trik
Tmux: Multi-Attach (Pair Programming)
# User A di Server A:
tmux new -s pair
# User B di Server B (SSH ke server A):
tmux attach -t pair
# Kedua user bisa melihat session yang sama secara real-time
Tmux: Navigasi Pane dengan Vi Keys
Di .tmux.conf:
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
Tmux: Plugin Manager (TPM)
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
Tambahkan ke .tmux.conf:
# Plugin list
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-continuum'
# Initialize TPM
run '~/.tmux/plugins/tpm/tpm'
Ringkasan Perintah
Screen
| Perintah / Key | Fungsi |
|---|---|
screen -S name |
Buat session baru |
screen -ls |
Daftar session |
screen -r name |
Reattach session |
Ctrl+A d |
Detach session |
Ctrl+A c |
Buat window baru |
Ctrl+A n/p |
Window prev/next |
Ctrl+A " |
List windows |
Ctrl+A S |
Split horizontal |
Ctrl+A Tab |
Pindah region |
Ctrl+A Esc |
Scrollback mode |
Ctrl+A H |
Logging (toggle) |
Tmux
| Perintah / Key | Fungsi |
|---|---|
tmux new -s name |
Buat session baru |
tmux ls |
Daftar session |
tmux attach -t name |
Attach session |
Ctrl+B d |
Detach session |
Ctrl+B c |
Buat window baru |
Ctrl+B n/p |
Window prev/next |
Ctrl+B , |
Rename window |
Ctrl+B " |
Split horizontal |
Ctrl+B % |
Split vertikal |
Ctrl+B o |
Pindah pane |
Ctrl+B [ |
Copy/scroll mode |
Ctrl+B z |
Zoom pane (toggle) |
Ctrl+B $ |
Rename session |
Ctrl+B : |
Command mode |
💡 Tips: Screen sederhana & sudah terinstall. Tmux lebih powerful dengan split pane, konfigurasi, dan plugin. Kuasai salah satu, dan SSH disconnect tidak akan lagi mengganggu pekerjaan Anda!