screen i tmux — sesija koja preživi prekid veze

Problem je poznat: pokreneš nešto dugotrajno preko SSH-a, veza pukne i posao propadne. Komanda nohup to rešava delimično — proces preživi, ali mu se ne možeš vratiti. Vidiš samo log.

Multiplekser terminala rešava ceo problem. Sesija radi na serveru, nezavisno od tvoje veze; ti se od nje odvojiš i kasnije vratiš — u isto stanje, sa svim otvorenim prozorima i celom istorijom ispisa.

Šta zapravo radi

Kad se prijaviš preko SSH-a, tvoj shell je vezan za tu vezu. Kad veza pukne, svi procesi na njoj dobiju SIGHUP i ginu.

Multiplekser umeće međusloj. Shell se vezuje za njega, a on radi kao zaseban proces koji nema veze sa tvojim terminalom:

Ti  →  SSH  →  tmux  →  shell i tvoji procesi

Kad veza padne, nestaje samo prva strelica. Sve desno od tmux-a i dalje radi.

Koji izabrati

tmux je noviji, moćniji i danas standard. Podela ekrana radi normalno, konfiguracija je razumljiva, dokumentacija dobra.

screen je stariji, ali je češće već instaliran — naročito na starijim RHEL i CentOS sistemima, i u nekim minimalnim slikama gde tmux-a nema.

Nauči tmux, ali znaj koje su tri screen komande dovoljne da preživiš na sistemu gde tmux ne postoji.

$ sudo apt install tmux        # Debian, Ubuntu
$ sudo dnf install tmux        # Fedora, RHEL

tmux: minimum koji je dovoljan

$ tmux

Otvara se nova sesija sa trakom u dnu ekrana. Sve dalje radiš normalno — to je običan shell.

Prefiks

Sve tmux komande počinju istom kombinacijom: Ctrl+b. Pritisneš je, pustiš, pa pritisneš taster za komandu.

Ako u tekstu piše Ctrl+b d, to znači: Ctrl i b zajedno, pustiti, pa d.

Tri komande koje rešavaju osnovni problem

$ tmux new -s posao

Pokreni imenovanu sesiju. Ime je bitno — sa tri sesije bez imena nećeš znati koja je koja.

Ctrl+b d

Odvoji se. Vraćaš se na običan prompt, a sesija nastavlja da radi:

[detached (from session posao)]
$

Sada možeš zatvoriti terminal, prekinuti SSH vezu, ugasiti laptop.

$ tmux attach -t posao

Vrati se. Sve je tačno kako si ostavio, uključujući i ispis koji je nastao dok te nije bilo.

Ove tri komande su devedeset odsto svakodnevne upotrebe.

Pregled sesija

$ tmux ls
posao: 2 windows (created Sat Aug 22 09:14:22 2026)
migracija: 1 windows (created Sat Aug 22 11:02:47 2026) (attached)

Kraći oblici koje ćeš najviše kucati:

$ tmux a -t posao        # attach
$ tmux a                 # na poslednju sesiju
$ tmux kill-session -t posao

Prozori

Jedna sesija može imati više prozora, kao kartice u pretraživaču:

Ctrl+b c Novi prozor
Ctrl+b n / p Sledeći / prethodni
Ctrl+b 09 Direktno na prozor po broju
Ctrl+b , Preimenuj prozor
Ctrl+b w Spisak svih prozora
Ctrl+b & Zatvori prozor (pita za potvrdu)

Preimenovanje nije kozmetika. Kad u traci piše 0:logovi 1:baza 2:deploy, znaš gde ideš i posle pauze od sat vremena.

Podela ekrana

Ctrl+b % Podeli vertikalno (levo i desno)
Ctrl+b " Podeli horizontalno (gore i dole)
Ctrl+b strelica Pređi u drugo okno
Ctrl+b z Uvećaj okno na ceo ekran, pa vrati
Ctrl+b x Zatvori okno
Ctrl+b { / } Premesti okno levo / desno

Prečica Ctrl+b z je najkorisnija na spisku — kad ti treba ceo ekran za jedno okno, pa nazad na podeljeni prikaz, bez ikakvog preuređivanja.

Tipičan raspored pri praćenju kvara: levo tail -f nad logom, gore desno htop, dole desno slobodan prompt.

Listanje unazad

Točkić miša u tmux-u podrazumevano ne lista istoriju. Za to postoji režim kopiranja:

Ctrl+b [

Zatim strelice, PgUp i PgDn. Pretraga unazad je Ctrl+s, a izlaz iz režima q.

Kopiranje teksta: razmak počinje označavanje, Enter kopira. Lepljenje je Ctrl+b ].

Ako ti ovo smeta, uključi miša u konfiguraciji — o tome niže.

screen: minimum

Prefiks je Ctrl+a, ne Ctrl+b.

$ screen -S posao          # nova imenovana sesija
Ctrl+a d                   # odvoji se
$ screen -ls               # spisak sesija
$ screen -r posao          # vrati se

Ako je sesija ostala „prikačena" nakon pucanja veze:

$ screen -ls
There is a screen on:
        4821.posao      (Attached)

$ screen -dr posao

-d je prisilno odvaja od stare, mrtve veze pa te prikači. Ovo je situacija u kojoj se ljudi zaglave, pa vredi zapamtiti.

Prozori u screen-u: Ctrl+a c novi, Ctrl+a n i Ctrl+a p kretanje, Ctrl+a " spisak. Listanje unazad je Ctrl+a Esc.

Zamka: Ctrl+a je i bash prečica

U bash-u Ctrl+a pomera kursor na početak reda. Unutar screen-a ta prečica je zauzeta, pa se šalje kao Ctrl+a a. To je glavni razlog zašto mnogi prelaze na tmux.

Konfiguracija koja se isplati

Fajl ~/.tmux.conf:

# prefiks na Ctrl+a, kao u screen-u
set -g prefix C-a
unbind C-b
bind C-a send-prefix

# miš: listanje, biranje okna, promena veličine
set -g mouse on

# veća istorija ispisa
set -g history-limit 50000

# numeracija prozora od 1
set -g base-index 1

# ponovno učitavanje konfiguracije
bind r source-file ~/.tmux.conf \; display "Ucitano"

# podela u tekućem direktorijumu
bind '"' split-window -c "#{pane_current_path}"
bind % split-window -h -c "#{pane_current_path}"

Dve najvrednije stavke su mouse on i history-limit. Podrazumevanih 2000 redova istorije nestane tokom jedne duže instalacije.

Učitavanje bez ponovnog pokretanja:

$ tmux source-file ~/.tmux.conf

Ali imaj na umu ono što važi i za editore: na tuđem serveru tvoj konfiguracioni fajl ne postoji. Nauči i podrazumevane prečice.

Praktični scenariji

Dugotrajna nadogradnja preko SSH-a

$ ssh server
$ tmux new -s nadogradnja
$ sudo apt update && sudo apt upgrade
Ctrl+b d
$ exit

Idi kući. Sutra:

$ ssh server
$ tmux a -t nadogradnja

Vidiš ceo ispis, uključujući i pitanja na koja treba odgovoriti. Sa nohup ovo poslednje ne bi bilo moguće.

Veza je pukla usred posla

$ ssh server
$ tmux ls
nadogradnja: 1 windows (created Sat Aug 22 09:14:22 2026)

$ tmux a -t nadogradnja

Ako tvrdi da je sesija prikačena, a ti si jedini korisnik:

$ tmux a -d -t nadogradnja

Zajednički rad na istoj sesiji

Dva korisnika mogu istovremeno biti u istoj sesiji i videti isto — korisno kad ti kolega nešto pokazuje:

$ tmux new -s zajedno
[kolega, prijavljen kao isti korisnik]
$ tmux a -t zajedno

Oba vide isti ekran u realnom vremenu. Za rad pod različitim nalozima treba podesiti dozvole nad soketom, što je već korak dalje.

Pripremljen raspored jednom komandom

#!/bin/bash
tmux new-session -d -s nadzor
tmux rename-window -t nadzor:1 'logovi'
tmux send-keys -t nadzor:1 'tail -f /var/log/syslog' C-m
tmux split-window -h -t nadzor:1
tmux send-keys -t nadzor:1 'htop' C-m
tmux attach -t nadzor

Pokreneš skriptu i dobiješ gotovo radno okruženje. Zgodno za nadzor koji radiš svaki dan.

Sitnice

Sesije ne preživljavaju restart

$ tmux ls
no server running on /tmp/tmux-1000/default

tmux je običan proces. Kad se mašina ugasi, sesije nestaju. Za posao koji mora da preživi restart potreban je servis, odnosno systemd jedinica.

Ugnežđene sesije

Ako iz tmux-a uđeš u SSH pa tamo pokreneš tmux, prefiks postaje dvosmislen. Za unutrašnju sesiju se prefiks šalje dvaput:

Ctrl+b Ctrl+b d

Bolje je izbeći ugnežđivanje nego ga rešavati.

Terminal se čudno ponaša posle vraćanja

Ctrl+b :
refresh-client -S

Ili, ako je ispis potpuno rasut, reset u samom shell-u. Obično je posledica promene veličine prozora dok si bio odvojen.

Kopiranje između tmux-a i sistema

Ono što kopiraš unutar tmux-a ostaje u njegovoj internoj memoriji, ne u sistemskoj ostavi. Za povezivanje sa sistemom potreban je xclip ili xsel i dodatna linija u konfiguraciji. Najjednostavnije zaobilaženje je držati Shift dok označavaš mišem — tada tmux ne presreće miša, pa radi obično kopiranje terminala.

Zombi sesije

$ tmux ls
posao: 1 windows (created Mon Jul 14 08:12:04 2026)
staro: 1 windows (created Wed Jun 25 16:33:19 2026)
proba: 1 windows (created Tue Jun 10 09:47:52 2026)

Sesije žive dok ih ne ugasiš. Posle par meseci ih se nakupi. Čišćenje:

$ tmux kill-session -t staro
$ tmux kill-server                  # sve odjednom

Kratka referenca

tmux — iz shell-a

  • tmux new -s ime — nova imenovana sesija
  • tmux ls — spisak sesija
  • tmux a -t ime — vrati se · tmux a -d -t ime — prisilno preuzmi
  • tmux kill-session -t ime — ugasi sesiju

tmux — prečice (prefiks Ctrl+b)

  • d — odvoji se · ? — spisak svih prečica
  • c novi prozor · n / p kretanje · , preimenuj · w spisak
  • % podela vertikalno · " horizontalno · strelice kretanje · z uvećaj · x zatvori
  • [ listanje unazad, q izlaz

screen (prefiks Ctrl+a)

  • screen -S ime · screen -ls · screen -r ime · screen -dr ime
  • Ctrl+a d odvoji · Ctrl+a c novi prozor · Ctrl+a Esc listanje

Vežba

  1. Pokreni imenovanu sesiju, u njoj tail -f /var/log/syslog, odvoji se i proveri da sesija i dalje postoji.
  2. Zatvori terminal potpuno, otvori novi i vrati se u tu sesiju. Proveri da li je ispis nastavio da teče dok te nije bilo.
  3. U istoj sesiji napravi drugi prozor sa htop i preimenuj oba prozora u nešto smisleno.
  4. Podeli jedan prozor na dva okna, u jednom pokreni free -s 2, pa jedno okno uvećaj na ceo ekran i vrati.
  5. Napravi ~/.tmux.conf sa uključenim mišem i većom istorijom, učitaj ga bez ponovnog pokretanja i proveri da listanje točkićem radi.

Peti zadatak je onaj posle kog tmux prestaje da bude neprijatan.


Osnove SSH veze su na stranici Udaljeni pristup Linux sistemu, a jednostavnije rešenje za pojedinačan proces na stranici nohup i killall.

Cela lekcija je deo vodiča Linux osnove.

Comments

Popular posts from this blog

Početak u Linuxu — šta je i zašto se uči

Konverzija tipova podataka u Pythonu

groupadd