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 0–9 |
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 sesijatmux ls— spisak sesijatmux a -t ime— vrati se ·tmux a -d -t ime— prisilno preuzmitmux kill-session -t ime— ugasi sesiju
tmux — prečice (prefiks Ctrl+b)
d— odvoji se ·?— spisak svih prečicacnovi prozor ·n/pkretanje ·,preimenuj ·wspisak%podela vertikalno ·"horizontalno · strelice kretanje ·zuvećaj ·xzatvori[listanje unazad,qizlaz
screen (prefiks Ctrl+a)
screen -S ime·screen -ls·screen -r ime·screen -dr imeCtrl+a dodvoji ·Ctrl+a cnovi prozor ·Ctrl+a Esclistanje
Vežba
- Pokreni imenovanu sesiju, u njoj
tail -f /var/log/syslog, odvoji se i proveri da sesija i dalje postoji. - Zatvori terminal potpuno, otvori novi i vrati se u tu sesiju. Proveri da li je ispis nastavio da teče dok te nije bilo.
- U istoj sesiji napravi drugi prozor sa
htopi preimenuj oba prozora u nešto smisleno. - Podeli jedan prozor na dva okna, u jednom pokreni free -s 2, pa jedno okno uvećaj na ceo ekran i vrati.
- Napravi
~/.tmux.confsa 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
Post a Comment