Screen – Et uundværligt værktøj

Skrevet af: Patrick Kerwood

Når man arbejder med Linux server og administrerer dem via terminalen, er programmet Screen absolut uundværligt. Egenligt burde dette indlæg være det første, jeg lavede på denne blog, men af en eller anden årsag, har det først slået mig nu.

Det har altid været lidt besværligt, for mig, at forklare hvordan Screen fungere. Så jeg vil starte med at copy/paste de første par linjer fra Manualen.

“Screen is a full-screen window manager that multiplexes a physical terminal between several processes (typically interactive shells). Each virtual terminal provides the functions of a DEC VT100 terminal and, in addition, several control functions from the ISO 6429 (ECMA 48, ANSI X3.64) and ISO 2022 standards (e.g. insert/delete line and support for multiple character sets). There is a scrollback history buffer for each virtual terminal and a copy-and-paste mechanism that allows moving text regions between windows.”

Kort fortalt, når du starter Screen, starter du et virtuel Shell vindue. Et virtuel vindue der ikke lukker ned hvis du mister forbindelsen eller lukker din terminal. Hvis du fx. opdater pakker, flytter filer, downloader/uploader, via terminalen, eller ligende, uden at bruge Screen, vil hele processen gå tabt, hvis du mister forbindelsen til serveren. Dette kan være katastrofalt hvis du er midt en i vigtig opdatering.

På denne måde kan man altid lukke sin terminal ned og forsætte arbejdet, hvor man slap, næste gang man forbinder. Screen kan også håndtere flere virtuelle faneblade.

Jeg bruger eksempelvis også Screen til at være online på IRC 24/7, med min tekst baseret IRC client, “irssi”.

Start Screen første gang, simpelt ved at skrive:
screen

Så er du faktisk igang. Nu kan du bruge din virtuelle shell som normalt.

Lav et faneblad mere, ved at trykke CTRL + A på samme tid og derefter tryk C.
Et nyt faneblad åbner sig. Du kan åbne så mange faneblade du ønsker.

Du kan bladre igennem dem ved at trykke CTRL + A og derefter N, for Next. De 10 første faneblade du åbner har genvejs taster på 0-9. Hvis du fx. skal bruge det føste faneblad, trykker du CTRL + A og derefter 0.

Du kan skifte imellem de 2 sidst brugte faneblade, ved at trykke CTRL + A og derefter A igen. Det er en smule hurtigere end fx. at skifte imellem faneblad 2 og 9.

For at komme ud af screen, uden at lukke det, trykker du CTRL + A og derefter D, for Deattach. Du behøver ikke at gøre dette, når du forlader din computer. Du kan fint lukke din terminal, hvor efter Screen automatisk deattach’er efter noget tid.

For at komme ind på din igangværende screen session, skriver du:
screen -r

Hvis du lige har lukket din terminal, eller mistet forbindelsen, er din screen session ikke deattached. Dette vil resultere i at du ikke kan resume den med screen -r. Benyt da d når du re-attacher din screen session, som har følgende virkning:   Reattach a session and if necessary detach it first. screen -rd

Engang havde jeg problemer med tegnsæt i screen. Det har resulteret i, at jeg har den vane at bruge U også, når jeg resume’er en screen session. U fortæller screen at din terminal sender og forstår UTF-8 encoded tegnsæt.

Fra Screen manualen.

-U Run screen in UTF-8 mode. This option tells screen that your terminal sends and understands UTF-8 encoded characters. It also sets the default encoding for new windows to `utf8′.

screen -rdU

Hvis du har mere end én screen session kørende, vil du se følgende output, fra overstående kommando.
There are screens on:
  1243.pts-7.LinuxBloggen        (30-01-2013 09:04:18)   (Detached)
  2330.pts-1.LinuxBloggen        (23-09-2012 18:53:19)   (Detached)
2 Sockets in /var/run/screen/S-kerwood.

For at resume den session du vil benytte dig af, skal du efter din kommando skrive PID nummeret, som er markeret med rødt i ovenstående.
screen -rdU 2330

Det var den basale brug af det uundværlige shell program Screen. Som altid kan du se mere information om programmet, ved at åbne manualen til programmet. Ligesom alle andre programmer.

man screen

30 jan 2013   | Alle · Ny til Linux · Programmer

Leave a Reply