Terminal program - Screen

xterm

Denne guide vil fortælle om et af de terminalprogrammer som helt sikkert bliver det mest brugte terminalprogram på din computer (hvis du altså bare vil bruge din terminal til en smule), nemlig screen. Programmet gør det nemlig muligt at få en terminal til at blive flere og dette er meget brugbart når vi snakker om terminalprogrammer da de fleste brugere nok meget gerne vil have flere programmer til at køre på en gang (musikafspiller, messenger, filhåndtering osv.). Derfor føler jeg at screen er et af de programmer som man bør forklare noget mere om.

Installation

Ja, som titlen fortæller skal vi lige gennemgå hvordan man installere screen. Screen er et meget kendt program og findes i så godt som alle dist. pakkesystem (hvis ikke så skift dist. da den ikke er seriøs). Her er der lige en omgang til hvordan man installere screen på forskellige dist. som jeg mener de fleste bruger. Til jer andre, prøv selv at søge og finde pakken screen i jeres pakkesystem og installer den:

Debian:

su -
apt-get install screen

Ubuntu:

sudo apt-get install screen

Arch Linux:

pacman -Sy
pacman -S screen

Ja, det er ikke mange men jeg kender altså heller ikke alle de måder de forskellige dist. bruger. Alle de metoder jeg har skrevet skal gøres i en terminal.

Første start + fix

Jeg går ud fra at du har installeret sceen nu. Hvis ikke så må du bare følge med eller stoppe med at læse videre. Åbn nu en terminal (xterm, konsole, gnome-terminal eller hvad du nu foretrækker). Du kan også bruge en af tty'erne (ctrl+alt+f1-5, betyder du kan vælge mellem f1, f2, f3 osv.). Her skriver du så screen og trykker enter. Nu dukker der sikkert en fin information om at du har startet screen og bla bla bla. Tryk blot på Space og kom videre.

Nu ser det ud som om der ikke er sket noget som helst. Terminalen er som den var før og viser ingen tegn på der i virkeligheden køre et program i baggrunden. Men inden jeg lige kommer med en række tricks til screen vil jeg lige forklare hvordan man gør den lidt mere blæret og noget mere brugbar.

Luk screen ned ved at skrive exit i terminalen. Nu står der "[screen is terminating]" og som du nok har gættet så betyder det at den har lukket screen. Start nu din editor (hvis du ikke har en så brug nano. Hvis du ikke har den så installer den med dit pakkesystem). Jeg vil ikke beskrive hvordan man bruger nano eller en anden editor. Dette kan måske blive den næste artikel ;)

Skriv nu disse linjer ind i editoren og gem filen som .screenrc (altså med punktum først) i din hjemmemappe som fx /home/julemand101 hvor du skifter julemand101 ud med dit brugernavn:

hardstatus on
hardstatus alwayslastline
hardstatus string "%{.bW}%-w%{.rW}%n %t%{-}%+w %=%{..G} %H %{..Y} %m/%d %c "

startup_message off
defscrollback 1000

Der skal ikke være linjeskift i hardstatus string linjen. Dette vil nu tilføje nogle smarte funktioner til screen. Fx faneblade, hostname, dato og klokken. Desuden slipper vi for den besked som vi fik før da vi startede screen (efter 50 gange med den besked bliver man træt af den).

Brug af screen

Nu har vi fået screen installeret og konfigureret så tiden er ved at være inde til at fortæller hvad man kan med programmet. Jeg siger med det samme at screen kan langt mere end det jeg vil komme ind på denne gang. Måske vil jeg senere skrive om de lidt mere avanceret funktioner i screen som er meget nyttige hvis man arbejder via en SSH forbindelse (hvis du ikke ved hvad det er så bare glem det).

Navngivning

Screen benytter sig af genvejstaster til at styre sine forskellige funktioner. Ofte starter disse med at man først trykker Ctrl+a og så trykker på den tast med den given funktion man ønsker. Siden jeg går ud fra vi har tabs i bunden af skærmen ville det være rart at navngive den terminal man sidder ved. Dette øger overskuligheden når du en dag sidder med måske 7 terminaler og leder efter den terminal hvor messenger køre. For at ændre navn trykker du på:

Ctrl+a og så bagefter shift+a

Nu for du mulighed for at ændre navnet i den besked der står i bunden af skærmen. Slet det der står og giv den fx navnet test. Tryk enter når du er færdig. Nu burde du kunne se i fanebladet at den har ændre sig til det navn du har givet den.

Ny terminal + navigering

Som sagt så er en af ideerne med screen at man kan oprette flere terminaler og på den måde kun benytte sig af en termianal som så indeholder en masse. For at oprette en ny terminal trykker vi på:

Ctrl+a og så bagefter c

Nu har du en ny terminal (som du sikkert kan se ved der er to fanablade). Uden for fanebladet står der et tal. Dette nummer kan du bruge til at finde ud af hvilken terminal du vil have fat i. Jeg går ud fra at du har 2 terminaler, 0 og 1, og at du står i 1. For at komme til 0 kan du trykker:

Ctrl+a og så bagefter 0

Du kan selvfølgelig skifte 0 ud med et andet nummer alt efter hvilken terminal du vil have fat i. Dette er måske lidt langsommeligt hvis man kun skal skifte mellem 2 terminaler. Derfor kan du også vælge at trykker på:

Ctrl+a og så bagefter Ctrl+a

Nu skifter den så tilbage til den terminal du sidst har brugt.

Kopier og sæt ind

Du kender det sikkert (eller det kommer du til en eller anden dag) hvor du følger en god guide i den ene screen og du ser 22 linjer kode du skal kopiere fra den ene screen over i den anden. Men inden du begynder at skrive det hele ned manuelt ved at skifte mellem de to screen skal du lige læse dette her.

Ctrl+a [

Ctrl+a ]

Den første starter copy-mode og du kan nu flytte rundt med markøren med piletasterne rundt på skræmen. Tryk Space når du er der du vil starte med at kopiere fra og flyt så markøren ned så alt det du vil have kopieret er markeret. Tryk Space når du har valgt markeringen og nu vil det være kopieret.

Nu skifter du over til din anden screen eller bruger den screen du allerede har og trykke den anden tastekombination. Nu indsætter den det du har kopieret. Ganske smart ikke?

Screen som services

Nu kommer jeg til en af de store grunde til at bruge screen. Alle dem (eller næsten alle) der bruger SSH til deres server kender problemet. Nu er man lige så godt i gang med en masse arbejde i terminalen og pluselig skal man ud af døren. Hvad gør man så? Nu hvor vi kender screen bliver det jo ikke bedre af at have 10 terminaler der arbejder og skal til at lukke dem og starte dem alle næste gang. Her kommet tricket:

Start screen med denne kommando (du kan også lade værd med for nemhedens skyld):

screen -xR

Kommandoen gør det at den kikker efter om der er nogen "efterladt" screen på computeren. Hvis der er, bruger den den første den finder. Når du så er færdig med at bruge din screen eller er nød til at gå så lukker du den med at skrive dette i en terminal:

screen -d

Nu lukker Screen ned men den slukker ikke screen. Screen køre skam stadig i baggrunden med alle programmerne (fx hvis du har wget til at hente noget) og du kan roligt logge ud af SSH. Du kan også lukke screen med en genvejskombination:

Ctrl+a d

Du kan også gøre så du lukker screen og logger af på en gang (hvis det skal gå meget stærkt) ved at trykke:

Ctrl+a D D (Altså 2 store D efter hinanden)

Afslutning

Det var hvad jeg havde at byde på. Der findes self. mange mange mange flere ting man kan i screen og til dem der vil vide mere kan jeg kun anbefale at læse i 'man screen'.

Held og lykke med screen