Log in


Forgot your password?
prijatelji LUGoNSa
gnu.gif
linuxzasve.jpg
hulk.jpg
 
You are here: Home / Uputstva / Opšte / Uputstvo za screen

Uputstvo za screen

by Nikola Kotur last modified Nov 20, 2005 01:00 AM
Koliko puta nam se desilo da naiđemo na neki program, sasvim slučajno ili tražeći nešto drugo, i da posle nekog vremena korišćenja tog programa kažemo sebi: "kako li sam samo mogao živeti bez ovoga"? Ja sam to iskustvo imao nekoliko puta, a poslednji put kada sam našao odličan alat je kada sam slučajno naleteo na komandu screen.

Šta je screen? Sem što znači ekran na engleskom, ta reč je naziv za program koji predstavlja pravi window menadžer koji deli jednu školjku među više procesa. Ukratko, to znači da pomoću screena možete otvoriti jedan xterm i u njemu imati koliko hoćete školjki ili terminala, što svakako ima svojih prednosti.

Kada pozovete screen, on otvori jednu školjku, i preda vam kontrolu nad njom, pa izgleda kao da se ništa nije ni desilo. Mislićete da se šalim sa vama, pošto izgleda kao da je školjka progutala vašu naredbu ili je ignorisala. Ali ovo nije onaj tip programa koji vas zaseni nekim grafičkim detaljima, izruči pred vas milion opcija, pa vas onda ostavi da se češete po glavi pitajući se šta dalje. Ne. Screen se prvi put pokreće skromno. Njegova prava moć leži baš u tome što je naizgled jednostavan. Ono što vam treba ćete lako namestiti, a ako poželite neke specifičnije detalje, ne brinite se: opcija ima dovoljno, taman koliko treba.



Screen vam omogućava sledeće stvari: u svako doba možete napraviti novi prozor, ubiti postojeći, pogledati listu otvorenih prozora, uključiti logovanje nekog prozora ili ga isključiti, kopirati ili isecati tekst između dva prozora, pregledati šta se sve dešavalo u prozoru (scrollback) ili istoriju prozora, i još mnogo, mnogo stvari. Svaki novi prozor se ponaša totalno nezavisno. Kao da ostali ne postoje. I svi su u jednom prozoru, a pomoću prečica na tastaturi prelazite s jednog na drugi.

Kontola na screenom se vrši pomoću prečica na tastaturi. Otvorite jedan xterm. Startujte screen. Sada pritisnute CTRL-a CTRL-c (to znači da pritisnite CTRL i dok ga držite pritisnete a, pa onda pritisnete c. I otvorićete novi prozor. Sada imate dva prozora. Promenite ime trenutnog prozora sa CTRL-a SHIFT-a. Sa CTRL-a " listate sve otvorene prozore, i pomoću enter možete preći u prethodni.

Jeste li sad malkice uvideli poentu ovog programa? Hmmm. To nije ništa naspram onoga što screen može.

Sada ću navesti spisak tastera za kontrolu screena. Tokom korišćenja screena ove kombinacije će vam ući pod kožu, i uopšte neće izgledati tako komplikovano kao što vam se sada doimaju.

CTRL-a "
Daje vam spisak otvorenih prozora, pa tako možete odabrati onaj u kom hoćete da radite.
CTRL-a 0
Ovo je prečica za brzo biranje prozora 0. Isto tako možete birati prozor 1, 2, 3, itd.
CTRL-a CTRL-a
Služi za vraćanje u prethodni prozor.
CTRL-a SHIFT-a
Unošenja proizvoljnog imena prozora.
CTRL-a CTRL-c
Pravi novi prozor i prelazi u njega.
CTRL-a h
Piše sadržaj prozora u fajl hardcopy.n.
CTRL-a H
Pokreće ili zaustavlja logovanje prozora u screenlog.n.
CTRL-a M
Uključuje ili isključuje nadgledanje trenutnog prozora (odlično za log fajlove).
CTRL-a ESC
Ulaženje u mod za kopiranje.
CTRL-a [
Copy
CTRL-a ]
Paste

Ovo su neke od komandi screena, za koje smatram da su najčešće korišćene. One će vam pomoći da lakše prođete kroz početničke muke korišćenja, kao i dati vam nekoliko ideja za primenu ovog programa.

Čemu ovo služi? Pa sama činjenica da možete imati otvoreno koliko god hoćete školjki unutar samo jednog prozora znači nešto. Ekran više nikada ne mora biti pretrpan, a ukoliko imate neki log fajl na kojeg morate stalno motriti, možete jednostavno podeliti ekran (CTRL-a SHIFT-s) i stalno ga nadgledati dok radite nešto drugo konstruktivno. Takođe, možete startovati ssh-agenta ili gpg-agenta pre nego što pokrenete screen, pa će tim ssh-add pristupati istom agentu. Tako nećete morati stalno unositi već opasno duge lozinke za tajne ključeve, već će ih agent čuvati, a vi možete scp-ovati i ssh-ovati koliko hoćete, bez dosadnog ponovnog unošenja jednog te istog teksta. Dalje, možete otvoriti po jedan ekran za svaki log fajl koji pratite, a screen će voditi računa šta se u njima dešava, i obavestiti vas ako se nešto već desi. A ako se ulogujete na neku udaljenu mašinu, pomoću screena možete otvoriti više školjki, a da koristite samo jednu konekciju. Nisu zanemarljive ni opcije logovanja i snimanja sadržaja prozora, koje vrlo često mogu zgodno poslužiti, i nikad se ne zna kada mogu zatrebati.

Naravno, broj opcija za korišćenje i stvari u kojima screen pomaže je beskrajan, i svako će naći nešto čemu će mu screen odlično poslužiti. Mada, ako niste do sada koristili konzolu, onda nećete imati nikakve koristi od screena, ali za sve vas koji večito imate po pet-šest otvorenih xterm prozora, ovo je rešenje koje vam pruža mnogo dodatnih mogućnosti.

Screen ima mnogo opcija za prilagođavanje, koje se mogu podestiti dok se program izvršava ili se mogu zapisati u konfiguracioni fajl (~/.screenrc), pa će biti izvršene pri startovanju screena. Za kraj, uz preporuku da probate ovaj program, ako mnogo obitavate u konzolama, dajem vam moj .screenrc fajl, čisto da imate od nečeg da počnete. Pokušao sam da ga iskomentarišem, i nadam se da će vam ovo biti od pomoći. Snimite ovaj tekst u fajl .screenrc unutar vašeg home direktorijuma i pokrenite screen. I... uživajte :)

#
# Primer korisnickog .screenrc fajla
# by Nikola Kotur <kotnik _@_ ns-linux.org>
# Linux User Group of Novi Sad
#

# Ovde mozete postaviti lozinku za otkljucavanje:
# password ODSJQf.4IJN7E    # "1234"

# molim, bez napornog zvonceta
vbell on
vbell_msg "   -- Ring, Ring!! --   "

# ponovo zakaci pri prekidanju
autodetach on

# ne prikazuj stranu sa kopileftom
startup_message off

pow_detach_msg "Screen session of \$LOGNAME \$:cr:\$:nl:ended."

# postavi interesantniji opis svakog prozora
defhstatus "screen: ^En (^Et)"

defscrollback 1000

################
#
# xterm podesavanja
#

termcap  xterm hs@:cs=\E[%i%d;%dr:im=\E[4h:ei=\E[4l
terminfo xterm hs@:cs=\E[%i%p1%d;%p2%dr:im=\E[4h:ei=\E[4l
termcapinfo  xterm Z0=\E[?3h:Z1=\E[?3l:is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l
termcapinfo xterm* OL=100
termcapinfo xterm 'VR=\E[?5h:VN=\E[?5l'
termcapinfo xterm 'k1=\E[11~:k2=\E[12~:k3=\E[13~:k4=\E[14~'
termcapinfo xterm 'kh=\EOH:kI=\E[2~:kD=\E[3~:kH=\EOF:kP=\E[5~:kN=\E[6~'
termcapinfo xterm 'hs:ts=\E]2;:fs=\007:ds=\E]2;screen\007'
termcapinfo xterm 'vi=\E[?25l:ve=\E[34h\E[?25h:vs=\E[34l'
termcapinfo   xterm 'XC=K%,%\E(B,[\304,\\\\\326,]\334,{\344,|\366,}\374,~\337'
termcapinfo xterm* be

################
#
# wyse terminali
#

termcapinfo wy75-42 xo:hs@
termcapinfo wy* CS=\E[?1h:CE=\E[?1l:vi=\E[?25l:ve=\E[?25h:VR=\E[?5h:VN=\E[?5l:cb=\E[1K:CD=\E[1J

################
#
# drugi terminali
#

termcapinfo  hp700 'Z0=\E[?3h:Z1=\E[?3l:hs:ts=\E[62"p\E[0$~\E[2$~\E[1$}:fs=\E[0}\E[61"p:ds=\E[62"p\E[1$~\E[61"p:ic@'
termcap  vt100* ms:AL=\E[%dL:DL=\E[%dM:UP=\E[%dA:DO=\E[%dB:LE=\E[%dD:RI=\E[%dC
terminfo vt100* ms:AL=\E[%p1%dL:DL=\E[%p1%dM:UP=\E[%p1%dA:DO=\E[%p1%dB:LE=\E[%p1%dD:RI=\E[%p1%dC
termcapinfo linux C8

################
#
# precice na tastaturi
#

# ukloni neke glupe/opasne tastere
bind k
bind ^k
bind .
bind ^\
bind \\
bind ^h
bind h
# napravi ih boljim
bind 'K' kill
bind 'I' login on
bind 'O' login off
bind '}' history

# neka F11 prebacuje na sledeci, a F12 na prethodni prozor
bindkey -k F1 prev
bindkey -k F2 next

# Ovo je autoindent mod u vi-ju
register [ "\033:se noai\015a"
register ] "\033:se ai\015a"
bind ^] paste [.]

################
#
# podrazumevani prozori
#

# ovde podesavate koji ce se prozori otvoriti
# pri svakom startovanju screena, tako da ne
# morate stalno da ih namestate.
#
# sintaksa je sledeca:
# screen -t <naziv> <komanda>
#
# <naziv>   - ime prozora
# <komanda> - bilo koja bash komanda

screen -t kotnik
screen -t root su
screen -t messages -M sudo tail -f /var/log/messages
screen -t secure -M sudo tail -f /var/log/secure
screen -t maillog -M sudo tail -f /var/log/maillog
screen -t niobe ssh niobe

# naslov
caption always "%{rk} %c %{dd} %{+b M}%n -=%H=-  %{-b dd}%-w%{+b B.}%n* %t%{-}%+w%<"
shelltitle '$ |$ '

Document Actions

Filed under: