Sådan bruger du Linux’s skærmkommando

Med Linux-skærmkommandoen kan du skubbe kørende terminalapplikationer til baggrunden og trække dem frem, når du vil se dem. Det understøtter også skærme med delt skærm og fungerer over SSH-forbindelser, selv efter du har afbrudt og tilsluttet igen!

Hvad er skærmens kommando?

Skærmkommandoen er en terminal multiplexer, og det er absolut spækket med muligheder. At sige, at det kan gøre meget, er underdrivelsernes bedstefar. Mandsiden løber til over 4.100 linjer.

Følgende er de mest almindelige tilfælde, hvor du ville bruge skærmkommandoen, og vi vil dække disse yderligere i denne artikel:

Standardhandlingen er at oprette et nyt vindue med en shell i det, køre en kommando og derefter skubbe vinduet til baggrunden (kaldet “detaching”). Når du vil se, hvordan det går med din proces, kan du trække vinduet i forgrunden igen (“tilhæft igen”) og bruge det igen. Dette er fantastisk til lange processer, du ikke ønsker at afslutte ved et uheld ved at lukke terminalvinduet.
Når du har fået en skærmsession kørende, kan du oprette nye vinduer og køre andre processer i dem. Du kan nemt hoppe mellem vinduerne for at overvåge deres fremskridt. Du kan også opdele dit terminalvindue i lodrette eller vandrette områder og vise dine forskellige skærmvinduer i ét vindue.
Du kan oprette forbindelse til en fjernmaskine, starte en skærmsession og starte en proces. Du kan afbryde forbindelsen til fjernværten, oprette forbindelse igen, og din proces vil stadig køre.
Du kan dele en skærmsession mellem to forskellige SSH-forbindelser, så to personer kan se det samme i realtid.

Installation af skærm

For at installere skærmen på ubuntu, brug denne kommando:

sudo apt-get install screen

Det

For at installere skærmen på Manjaro skal du bruge følgende kommando:

sudo pacman -Sy screen

Det

På Fedora skriver du følgende:

sudo dnf install screen

Det

Kom godt i gang med skærmen

For at starte skærmen skal du blot skrive det som vist nedenfor og trykke på Enter:

screen

Det

Du vil se en side med licensoplysninger. Du kan trykke på mellemrumstasten for at læse den anden side eller Enter for at vende tilbage til kommandoprompten.

Det

Du står tilbage ved kommandoprompten, og der ser ikke ud til at være sket meget. Men du kører nu en shell inde i en multiplekset terminalemulator. Hvorfor er det en god ting? Nå, lad os starte en proces, der kommer til at tage lang tid at fuldføre. Vi downloader kildekoden til den seneste Linux-kerne og omdirigerer den til en fil kaldet latest_kernel.zip.

For at gøre det skriver vi følgende:

curl https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.5.9.tar.xz > latest_kernel.zip

Det latest_kernel.zip” kommando i et terminalvindue.’ width=”646″ højde=”77″ onload=”pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);” onerror=”this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);”>

Vores download begynder, og krølleoutput viser os fremskridtet.

Outputtet fra latest_kernel.zip” kommando i et terminalvindue.’ width=”646″ højde=”247″ onload=”pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);” onerror=”this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);”>

Vi kan ikke vise dig et billede af den næste bit, fordi det er en tastetryksekvens. Du skriver Ctrl+A, slipper disse taster og trykker derefter på d for at frakoble skærmen.

  Sådan installeres JetBrains RubyMine på Linux

Downloadprocessen kører stadig, men vinduet, der viser overførslen, er fjernet. Du vender tilbage til terminalvinduet, hvorfra du startede skærmsessionen. En meddelelse fortæller dig, at et skærmvindue mærket 23167.pts-0.wdzwdz er blevet frakoblet.

Du skal bruge nummeret fra starten af ​​vinduesnavnet for at vedhæfte det igen. Hvis du glemmer det, kan du altid bruge valgmuligheden -ls (liste), som vist nedenfor, for at få en liste over de løsrevne vinduer:

screen -ls

Det

Når du er klar, kan du bruge muligheden -r (genvedhæft) og nummeret på sessionen til at vedhæfte det igen, sådan:

screen -r 23167

Det

Vinduet, der har arbejdet væk i baggrunden, bringes nu tilbage til dit terminalvindue, som om det aldrig var forladt.

Hvis det er en proces, der vil løbe igennem til sin afslutning, vil den i sidste ende fuldføres. Hvis det er en kontinuerlig proces, vil du til sidst ønsker at afslutte den. Uanset hvad, når processen slutter, kan du skrive exit for at afslutte fra skærmen. Alternativt kan du trykke på Ctrl+A og derefter K for at dræbe et vindue med magt.

Skriv følgende kommando:

exit

Det

Du vender tilbage til dit forrige terminalvindue, som stadig vil vise den kommando, du brugte til at vedhæfte vinduet igen. Fordi vi lukkede vores eneste fritstående vindue, får vi en besked om, at skærmen lukker.

Det

Brug af navngivne skærmsessioner

Du kan bruge muligheden -S (sessionsnavn) til at navngive din skærmsession. Hvis du bruger et mindeværdigt navn i stedet for sessionens numeriske identitet, er det mere praktisk at genoprette forbindelsen til en session. Vi skriver følgende for at navngive vores session “bigfile”:

screen -S bigfile

Det

Når skærmen starter vores session, ser vi et tomt vindue med en kommandoprompt. Vi skal downloade en stor fil, så vi kan bruge en langvarig proces som eksempel.

Vi skriver følgende:

curl http://ipv4.download.thinkbroadband.com/1GB.zip > bigfile.zip

Det bigfile.zip” kommandoen i et terminalvindue.’ width=”646″ højde=”77″ onload=”pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);” onerror=”this.onerror=null;pagespeed.lazyLoadImages.loadIfVisibleAndMaybeBeacon(this);”>

Når overførslen starter, trykker vi på Ctrl+A og trykker derefter på D for at afbryde sessionen. Vi skriver følgende for at bruge indstillingen -ls (liste) med skærm for at se detaljerne i vores løsrevne session:

screen -ls

Det

Bag den numeriske identifikator (23266) ser vi navnet på vores session (bigfile). Vi skriver følgende, inklusive sessionens navn, for at vedhæfte det igen:

screen -r bigfile

Det

Vi har genoprettet forbindelsen til vores downloadvindue og kan se, at den lange download stadig er i gang.

Når overførslen er færdig, skriver vi exit for at lukke sessionsvinduet.

Brug af skærm med flere vinduer

Indtil videre har vi brugt skærm til at placere en enkelt proces i baggrunden i et løsrevet vindue. Skærmen er dog i stand til meget mere end det. Dernæst vil vi køre nogle få processer, der giver os mulighed for at overvåge nogle aspekter af vores computer.

Vi skriver følgende for at starte en skærmsession kaldet “monitor”:

screen -S monitor

Det

Ved kommandoprompten i vores nye vinduessession starter vi dmesg og bruger mulighederne -H (læselig for mennesker) og -w (vent på nye beskeder). Dette vil vise kernebuffermeddelelserne; nye beskeder vises, efterhånden som de opstår.

  Sådan skifter du fra Bash til ZSH på Linux

Vi skriver følgende:

dmesg -H -w

Det

De eksisterende meddelelser vises. Vi vender ikke tilbage til kommandoprompten, fordi dmseg venter på nye beskeder og vil vise dem, når de ankommer.

Det

Vi vil gerne køre en anden applikation, så vi har brug for et nyt skærmvindue. Vi trykker på Ctrl+A og derefter C for at oprette et nyt vindue. Vi skal bruge ur til løbe gentagne gange vmstat, så vi får en ofte opdateret visning af den virtuelle hukommelsesbrug på vores computer.

Ved den nye kommandoprompt skriver vi følgende:

watch vmstat

Det

Vmstat-outputtet vises og opdateres hvert andet sekund.

Det

Vores to processer kører nu. For at hoppe mellem skærmvinduerne skal du trykke på Ctrl+A og nummeret på vinduet. Det første, vi oprettede, er vindue nul (0), det næste er vindue 1, og så videre. For at hoppe til det første vindue (dmesg), trykker vi på Ctrl+A og 0.

Vender tilbage til

Hvis vi trykker på Ctrl+A og 1, fører det os tilbage til vmstat-vinduet.

Vender tilbage til

Det er ret smart! Vi kan trykke på Ctrl+A og derefter D for at løsrive os fra denne session; vi kan vedhæfte igen senere. Begge sessioner vil stadig køre. Igen, for at skifte mellem vinduerne, trykker vi på Ctrl+A og tallet (0 eller 1) på det vindue, vi vil skifte til.

Lad os gå til næste trin og se begge skærme i ét vindue. Når du gør dette, vil du strække dit terminalvindue til en størrelse, der gør dette trin nyttigt. Vores eksempler er begrænset til størrelsen af ​​vores skærmbilleder, så vores vinduer vil se lidt trange ud.

For at gøre dette trykker vi på Ctrl+A og derefter Shift+S (et stort “S” er påkrævet).

Vinduet opdeles i to “regioner”.

EN

Det øverste område viser stadig vmstat, og det nederste område er tomt. Markøren er fremhævet på skærmbilledet nedenfor. For at flytte det til det nederste område, trykker vi på Ctrl+A og derefter Tab.

EN

Markøren flytter til det nederste område, som egentlig bare er et tomt rum. Det er ikke en skal, så vi kan ikke skrive noget i den. For at få en nyttig visning, trykker vi på Ctrl+A og trykker derefter på “0” for at vise dmesg-vinduet i dette område.

Det

Dette giver os begge live-output i et opdelt vindue. Hvis vi trykker på Ctrl+A og D for at løsne vinduet og derefter sætter det fast igen, mister vi visningen med delt rude. Vi kan dog gendanne det med følgende tastaturgenveje:

Ctrl+A, S: Del vinduet vandret.
Ctrl+A, Tab: Flyt til det nederste område.
Ctrl+A, 0: Vis vinduet nul i det nederste område.

Vi kan tage tingene endnu et skridt videre. Vi opdeler nu den nederste rude lodret og tilføjer en tredje proces til skærmen. Med markøren i det nederste område trykker vi på Ctrl+A og C for at oprette et nyt vindue med en skal i. Den nederste region viser det nye vindue og giver os en kommandoprompt.

EN

Dernæst kører vi kommandoen df til kontrollere brugen af ​​filsystemet:

df

EN

Når vi ser df køre, trykker vi Ctrl+A og rørtegnet (|). Dette opdeler den nedre region lodret. Vi trykker på Ctrl+A og Tab for at flytte til det nye område. Dernæst trykker vi på Ctrl+A og 0 for at vise dmesg-vinduet.

  Sådan installeres SABnzbd på Linux

EN

Du kan også flytte fra område til område og tilføje flere lodrette eller vandrette opdelinger. Her er nogle flere nyttige tastekombinationer:

Ctrl+A: Hop frem og tilbage mellem den nuværende og tidligere region.
Ctrl+A, Q: Luk alle områder undtagen den nuværende.
Ctrl+A, X: Luk det aktuelle område.

Bruger skærm over SSH

Med skærm kan du starte en vinduessession, frakoble den, så den stadig kører i baggrunden, logge af eller ind igen og vedhæfte sessionen igen.

Lad os lave en SSH forbindelse til vores computer fra en anden med kommandoen ssh. Vi skal oplyse navnet på den konto, som vi skal oprette forbindelse til, og adressen på fjerncomputeren.

For vores eksempel skriver vi følgende:

ssh [email protected]

Det

Efter at vi har godkendt på fjerncomputeren og logget på, skriver vi følgende for at starte en skærmsession kaldet “ssh-geek”:

screen -S ssh-geek

Det

Til demonstrationsformål kører vi øverst i skærmvinduet, men du kan starte enhver langvarig eller endeløs proces.

Vi skriver følgende:

top

Det

Når toppen kører i vinduet, trykker vi Ctrl+A og derefter D for at afmontere vinduet.

Det

Vi er vendt tilbage til det originale fjernterminalvindue.

Hvis vi skriver exit, som vist nedenfor, afbryder det SSH-sessionen, og vi er tilbage på vores lokale computer:

exit

Det

Vi skriver følgende for at genoprette forbindelsen:

ssh [email protected]

Det

Når vi har fået forbindelse igen og logget på, kan vi skrive følgende for at vedhæfte skærmsessionen igen:

screen -r ssh-geek

Det

Vi har nu genoprettet forbindelse til vores stadig kørende forekomst af top.

Det

Dette er fantastisk, hvis du vil starte en proces på én maskine og derefter fortsætte, hvor du end slap på en anden.

Deling af en skærmsession

Du kan også bruge en skærmsession til at give to personer mulighed for at se og interagere med det samme vindue. Lad os sige, at nogen, der kører Fedora på sin computer, vil oprette forbindelse til vores Ubuntu-server.

Han ville skrive følgende:

ssh [email protected]

Det

Efter at han er tilsluttet, starter han en skærmsession kaldet “ssh-geek” ved at bruge -S (sessionsnavn) muligheden. Han bruger også mulighederne -d (frigør) og -m (tvungen oprettelse) til at oprette en ny skærmsession, der allerede er frakoblet.

Han skriver følgende:

screen -d -m -S ssh-geek

Det

Han skriver følgende ved at bruge -X (multiscreen mode) mulighed for at vedhæfte sessionen:

screen -X ssh-geek

Det

På en Manjaro-computer opretter en anden person forbindelse til Ubuntu-computeren med de samme kontooplysninger, som vist nedenfor:

ssh [email protected]

Det

Når hun er tilsluttet, skriver hun skærmkommandoen og bruger -X (multiscreen mode) mulighed for at deltage i den samme vinduessession, sådan:

screen -X ssh-geek

Det

Nu, alt hvad enten person skriver, vil den anden se. For eksempel, når en person udsteder datokommandoen, ser de begge den, mens den er skrevet, såvel som dens output.

Det

Output fra

Begge personer deler nu en skærmsession, der kører på en ekstern Ubuntu-computer.

For et stykke software, der først så dagens lys i 1987, pakker skærmen stadig en god produktivitet. At sætte dig ind i det vil være tid givet godt ud!