TDCTF Academy Logo TDCTF ACADEMY

️ 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 upgrade atau rsync besar 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

~/.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

~/.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!

PADA HALAMAN INI