Articles

15 Linux Screen Command for Dealing Terminal Sessions

Posted on

Het screen of GNU screen is een terminal-multiplexer. Hiermee kunt u een willekeurig aantal console-gebaseerde toepassingen, interactieve commandoshells, cursus-gebaseerde toepassingen, enz. uitvoeren. Je kunt screen gebruiken om een programma te blijven draaien nadat je per ongeluk de terminal hebt gesloten, of zelfs nadat je bent uitgelogd en later weer verder gaat, waar je ook bent.

Een praktisch voorbeeld is wanneer je een taak uitvoert op een Linux machine op afstand waar je een ssh sessie op hebt. Vaak heb je gezien dat deze ssh-sessie werd beëindigd en je niet meer kunt werken. Hier komt het hulpprogramma screen om te helpen de sessies te hervatten.

Hoe werkt screen?

Wanneer screen wordt aangeroepen, creëert het een enkel venster met een commandoregel erin (of het opgegeven commando) en gaat dan uit de weg, zodat je het programma kunt gebruiken zoals je normaal zou doen. Vervolgens kunt u op elk gewenst moment nieuwe (schermvullende) vensters maken met andere programma’s erin (inclusief meer shells), het huidige venster doden, een lijst van actieve vensters bekijken, tekst kopiëren tussen vensters, schakelen tussen vensters, enz.

Screen beheert een sessie die bestaat uit een of meer vensters die elk een shell of ander programma bevatten. Verder kan screen een terminal display verdelen in meerdere regio’s, die elk de inhoud van een window weergeven. Alle vensters voeren hun programma’s volledig onafhankelijk van elkaar uit. Programma’s blijven lopen wanneer hun venster op dat moment niet zichtbaar is en zelfs wanneer de hele schermsessie wordt losgekoppeld van de terminal van de gebruiker. Dit is praktisch om onvrijwillige ssh time-out sessie te voorkomen.

Nu gaan we eens kijken hoe we dit hulpprogramma in Linux kunnen gebruiken.

1) Nieuwe vensters oproepen

Als het screen commando nog niet op uw systeem aanwezig is, kunt u het installeren met het onderstaande commando.

Op Debian

# apt-get install screen

Op Centos

# yum install screen

U kunt screen starten door gewoon screen te typen op de opdrachtprompt. Dit screen commando start een nieuw venster binnen het scherm.

# screen

U kunt een nieuw venster starten binnen het scherm en ook een naam geven aan het venster, bijvoorbeeld aloft. Het creëert een sessie met geïdentificeerd met die naam. De naam kan worden gebruikt om in een later stadium opnieuw te koppelen.

# screen -S aloft

Merk op dat u al uw werk kunt doen zoals u dat in de normale CLI omgeving doet.

2) Lijst van alle scherm processen

Nadat we in staat zijn om nieuwe vensters binnen het scherm te starten, is het mogelijk om de momenteel geopende schermen weer te geven, inclusief de schermen die op de achtergrond draaien. Het zal alle bestaande scherm sessies tonen.

# screen -lsThere is a screen on: 10437.aloft (Attached)1 Socket in /var/run/screen/S-root.

3) Hoofdcommando’s van het scherm

Het is mogelijk om met het scherm te werken door enkele commando’s te gebruiken. We zullen hieronder de belangrijkste commando’s opnoemen die het handigst zijn.

  • Ctrl-a gevolgd door c: maak een nieuw venster
  • Ctrl-a gevolgd door w: de lijst van alle momenteel geopende vensters weergeven
  • Ctrl-a gevolgd door A: de huidige vensters hernoemen. De naam zal verschijnen wanneer u de lijst van geopende vensters met Ctrl-a gevolgd door w.
  • Ctrl-a gevolgd door n: ga naar de volgende vensters
  • Ctrl-a gevolgd door p: ga naar de vorige vensters
  • Ctrl-a gevolgd door Ctrl-a: terug naar de laatst gebruikte vensters.
  • Ctrl-a gevolgd door een getal van 0 tot X: ga naar de vensters n° X.
  • Ctrl-a gevolgd door ": kies de vensters waarin verder moet worden gegaan.
  • Ctrl-a gevolgd door k: sluit de huidige vensters (kill)
  • Ctrl-a gevolgd door S: splits de huidige vensters horizontaal. Om tussen de vensters te wisselen, doet u Ctrl-a gevolgd door Tab.
  • Ctrl-a gevolgd door |: splits de huidige vensters verticaal
  • Ctrl-a gevolgd door d: een schermsessie loskoppelen zonder deze te stoppen
  • Ctrl-a gevolgd door r: een losgemaakte schermsessie opnieuw vastmaken
  • Ctrl-a gevolgd door : de gekopieerde texte plakken

4) Toon schermparameter

U kunt alle schermparameters opnoemen voor hulp. Om dit te doen, type Ctrl-a gevolgd door het teken ?. Er verschijnt een lijst met alle commando’s.

5) Loskoppelen sessie

Het grootste voordeel van het screen commando is de mogelijkheid om een schermsessie los te koppelen. Je kunt een schermsessie starten op een computer op kantoor, de sessie loskoppelen van de lokale terminal, naar huis gaan, op afstand inloggen op onze computer op kantoor en de schermsessie opnieuw koppelen aan de terminal van onze computer thuis. In de tussenliggende tijd zijn alle opdrachten op de computer op kantoor gewoon doorgegaan met uitvoeren. Deze functie wordt gebruikt om het verlies van gegevens te voorkomen die plotseling optreden tijdens een verbroken ssh verbinding.

Om goed te begrijpen waar we het over hebben, laten we een voorbeeld nemen. We starten een installatieproces.

Nu maken we het scherm los met Ctrl-a gevolgd door d. We kunnen dit controleren met het onderstaande commando.

# screen -lsThere is a screen on: 12449.win (Detached)1 Socket in /var/run/screen/S-root.

Het is mogelijk om het scherm te ontkoppelen met screen -d commando gevolgd door het scherm id of de naam ervan. Dit betekent dat je een ander venster of console moet openen om de sessie los te koppelen als de huidige console een proces heeft lopen. U moet eerst een lijst maken van het huidige aangesloten scherm.

# screen -lsThere is a screen on: 13686.win200 (Attached)1 Socket in /var/run/screen/S-root.

Nu op een nieuwe terminal, voert u het onderstaande commando in.

# screen -d 13686

of u kunt de naam gebruiken

# screen -d win200

U krijgt een uitvoer zoals hieronder die aangeeft dat het scherm werd losgekoppeld.


6) Een sessie opnieuw vastmaken

Nadat u het scherm hebt losgemaakt, is het mogelijk om het opnieuw vast te maken met het commando. Normaal gesproken werkt uw schermsessie nog steeds, dus al uw processen worden niet gestopt. Voordat u een sessie opnieuw kunt vastmaken, moet u de sessie opnoemen zoals hierboven, en dan de sessie kiezen die u opnieuw wilt vastmaken.

# screen -r 13686

of u kunt

# screen -r win200

U kunt zien dat na het opnieuw vastmaken van de sessie, de vensters het einde van het proces laten zien dat is voltooid. Dit betekent dat u kunt werken aan ssh en een sessie kunt ontkoppelen die u thuis weer kunt koppelen om verder te gaan met uw werkproces zonder iets te verliezen.

7) Maak een nieuwe interactieve shell

Als u wat werk te doen hebt en u wilt uw werk niet verliezen, dan is het mogelijk om een nieuwe interactieve shell te maken. U kunt gemakkelijk een aantal interactieve shells (genummerd van 0 tot X) open hebben in één terminal venster. Als je een nieuwe sessie start, zit je in shell 0.

Om dit te doen, moet je nieuwe vensters maken binnen bestaande vensters met Ctrl-a gevolgd door c. U krijgt dan iets als hieronder.

U kunt bovenaan in de schermafbeelding scherm 3 zien staan, wat aangeeft dat we ons op het derde scherm bevinden. Onderaan zien we ook 3

8) Schakelen tussen schermvensters

Wanneer u meer dan één schermvenster hebt geopend, drukt u, om tussen elk venster te schakelen, op Control-a gevolgd door space of het nummer van de shell. Om bijvoorbeeld naar shell nummer 1 te gaan, drukt u op Control-a en vervolgens op 1. Als voorbeeld gaan we naar het eerste scherm.

De boven- en onderkant van de schermafbeelding laten zien dat we op het eerste scherm zijn.

9) Vensters splitsen

Om een globaal overzicht van uw werk te hebben, kunt u uw vensters splitsen in plaats van meerdere vensters te hebben. Ctrl-a gevolgd door S of | splitst uw scherm horizontaal of verticaal. Het is mogelijk om de operatie te herhalen zonder limiet. Om een ander venster te verplaatsen, gebruikt u Ctrl-a gevolgd door Tab.

Wanneer de cursor op de onderste vensters staat, kunt u een nieuw venster maken (Ctrl-a gevolgd door c) of een bestaand venster oproepen (Ctrl-a gevolgd door een getal).

Om een gesplitst venster te sluiten, gebruikt u Ctrl-a gevolgd door X (let op: het is het hoofdletterteken).

10) Maak opnieuw verbinding met een verbroken ssh-sessie

Wanneer u zich voor het eerst aanmeldt,

  • voer screen uit om een schermsessie te starten. U krijgt een andere commandoregel, waarin u opdrachten kunt uitvoeren.
# screen -S remote_session
  • Wanneer u klaar bent, ontkoppel dan de schermsessie en meld u af bij de ssh

  • U kunt alle schermsessies eerst op een rijtje zetten
  • Maak opnieuw verbinding met uw schermsessie en ga verder met uw werk
# screen -d -r remote_ression

Het commando screen wordt het meest gebruikt voor ssh-sessies omdat het helpt om door te gaan met je werk na een verbroken verbinding zonder de huidige processen te verliezen.

11) Scroll omhoog in screen vensters

Omdat screen het beheer van uw programma’s op afstand overneemt, kunt u de scroll-functies van uw terminal emulator niet gebruiken terwijl screen draait. U moet de Screen commando’s gebruiken om toegang te krijgen tot de scrollback buffer.

  • Gebruik Ctrl-a gevolgd door escape
  • Druk op de Up en Down pijltjestoetsen of de PgUp en PgDn toetsen om door de vorige uitvoer te bladeren.

Je kunt op de schermafbeelding zien waar mijn cursor staat. Elke virtuele terminal heeft zijn eigen scrollback buffer.

12) Bekijk de eigenaar van elke scherm sessie

De screen -ls of screen -list commando’s laten je alleen je eigen scherm sessies zien, zelfs voor root. Voor zover ik weet is dat zo goed als het wordt voor scherm zelf.

Als je wilt zien welke scherm sessies zijn gestart door welke gebruikers kijk dan in elke gebruikers directory in /var/run/screen/.

13) Een schermsessie delen met één account

Er kunnen twee mensen zijn ingelogd op hetzelfde account vanaf locaties op afstand. Ze kunnen eenvoudig een schermsessie delen (dus wat de een typt ziet de ander en vice versa). U doet dit als volgt:

  • Maak een schermsessie met naam aan:
# screen -d -m -S share_session
  • Maak verbinding met de schermsessie in je terminalvenster
# screen -x share_session
  • Laat de andere persoon (ingelogd op dezelfde account) ook aan de schermsessie koppelen
# screen -x share_session

u krijgt exact dezelfde uitvoer te zien op de andere locatie. Alles wat op jouw terminal verschijnt, verschijnt ook op de terminal van de andere gebruiker.

14) Scherm sessie vergrendelen

Het is mogelijk om scherm sessie te vergrendelen zonder je normale sessie gebruiker te vergrendelen. Dit betekent dat u uw computer kunt verlaten en er zeker van kunt zijn dat niemand ongeoorloofde handelingen uitvoert. Om dit te doen, gebruik het commando Ctrl-a gevolgd door x (Merk op dat het een kleine letter is).

Screen used by root <root> on centos-01.Password:

15) Beëindig scherm sessie

Wanneer u klaar bent en u wilt scherm sessie beëindigen, kunt u het commando Ctrl-a gevolgd door k gebruiken. U wordt gevraagd om een bevestiging.

U kunt ook het commando exit gebruiken. Als u uw lopende proces wilt bewaren, kunt u uw schermsessie gewoon loskoppelen voordat u de sessie beëindigt.

Conclusie

Het schermhulpprogramma kan een venster controleren op activiteit of inactiviteit. Dit is handig als je grote bestanden aan het downloaden bent, aan het compileren bent, of aan het wachten bent op uitvoer. Op dat moment kunt u, indien nodig, zelfs een of ander proces van een computer starten met het screen commando en het loskoppelen als u klaar bent.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *