Als sysadmin heb je door de jaren heen waarschijnlijk jouw eigen toolset opgebouwd. Deze maand stellen we één van onze favoriete tools voor die veel admins nog niet kennen: screen.

 

Welke tools je prefereert, hangt natuurlijk af van het type servers dat je beheert. Een mailserver troubleshooten vereist nu eenmaal andere tools dan problemen met Apache oplossen. Toch zijn er ook tools die altijd wel van pas komen. Denk dan aan telnet om low level communicatie te troubleshooten of tcpdump om netwerkverkeer te dumpen voor latere analyse. Screen is ook zo’n tool die je in de meest uiteenlopende situaties kunt gebruiken. Screen is een zogenaamde terminal multiplexer. Je kunt dit nog het beste omschrijven als een window manager voor je terminal. Screen laat je toe om binnen één terminal meerdere vensters aan te maken, die elk een eigen programma draaien. Toch is dat niet de belangrijkste reden om screen te gebruiken als sysadmin. Hét grote voordeel is dat screen de applicatie die erin draait, loskoppelt van de terminal op je desktop of laptop.

 

Netwerkproblemen

De netwerkverbinding tussen jouw machine en de server die je beheert, is niet altijd even betrouwbaar. Het clientnetwerk op kantoor is minder redundant opgebouwd dan dat in het datacenter, dus bij stroomproblemen valt je verbinding meteen weg. Ook VPN-verbindingen zijn soms instabiel, zeker als je bijvoorbeeld in de trein aan het werken bent. Dat is erg vervelend als je net bent ingelogd op een server en een langdurend commando hebt gestart. Zodra de verbinding tussen client en server wegvalt, wordt dat commando immers afgebroken. In veel gevallen kan je het commando daarna wel verder zetten, denk maar rsync of pvmove. Soms is dat echter niet mogelijk. In het ergste geval kom je dan in een situatie terecht die maar moeilijk te herstellen is. Screen is de ideale tool om zulke problemen te vermijden. Je start screen op de server op en voert je commando’s uit binnen een screen-sessie. Verbreekt de verbinding tussen je client en de server, dan blijven alle programma’s binnen die sessie draaien. Nadien verbind je je client opnieuw met de screen-sessie om verder te werken.

 

Eenvoudige sessies

Een nieuwe screen-sessie met een shell start je als volgt:

$ screen

Voer je in een andere terminal het commando “screen -ls” uit, dan zie je dat er een sessie actief is (Attached). Standaard geeft screen vrij lange namen aan de sessies. Je kiest zelf een kortere naam door de -S-optie toe te voegen wanneer je de sessie aanmaakt. Bijvoorbeeld:

 $ screen -S fsck

 

Wil je je terminal afkoppelen van de screen-sessie om later verder te werken? Gebruik daarvoor de sneltoets Ctrl-a-d (Ctrl ingedrukt houden en achtereenvolgens a en d typen). In de output van screen -ls staat de sessie nu als Detached gemarkeerd. Nadien koppel je de sessie op jouw pc of elders terug aan met volgend commando:

$ screen -r fsck

 

Wil je een screen-sessie aankoppelen die ergens anders nog actief is? Gebruik dan screen -dr om ze op de andere locatie af te koppelen en in jouw terminal aan te koppelen.

 

Gedeelde sessies

In bovenstaand voorbeeld is de screen-sessie slechts in één terminal tegelijk actief. Meestal wil je niet dat andere admins zich met jouw werk komen bemoeien, maar soms is dat net wél handig. Stel dat je aan een collega op een andere locatie bepaalde commando’s wilt tonen. Start dan een nieuwe sessie op en geef de naam ervan door aan je collega. Die kan de sessie dan als volgt aankoppelen zónder ze bij jou af te koppelen:

$ screen -x fsck

 

Dat werkt overigens alleen wanneer je allebei als dezelfde gebruiker bent ingelogd op de server (bijvoorbeeld root). Wil je een sessie van één gebruiker delen met een andere, dan moet je die toegang geven met het :acladd-commando in screen én moet de screen-binary suid root geïnstalleerd zijn. Meer informatie vind je in de manpage.

 

Scrollen

Nog een laatste tip: binnen screen kan je niet meer normaal scrollen in je terminaloutput. Daarvoor moet je eerst naar de zogenaamde copy- of scrollback-mode gaan met Ctrl-A, gevolgd door Escape. Scrollen doe je met de pijltjestoetsen, page up/down, het scrollwieltje van je muis of de bekende sneltoetsen uit vi (zie ook de commandline tips verder in dit nummer). Druk nogmaals Escape om de copy mode te verlaten en verder te werken in je terminal.