Sådan bruges Linux skærmkommando

Med Linux- screen
kommandoen kan du skubbe kørende terminalapplikationer til baggrunden og trække dem fremad, når du vil se dem. Det understøtter også skærme med delt skærm og fungerer via SSH-forbindelser, selv efter at du afbryder og tilslutter igen!
Hvad er skærmkommandoen?
Den screen
kommando er en terminal multiplexer, og det er absolut pakket med muligheder. At sige, at det kan gøre meget, er bedstefaderen til underdrivelse. Mandsiden løber til over 4.100 linjer.
Følgende er de mest almindelige tilfælde, hvor du vil bruge screen
kommandoen, og vi vil dække disse yderligere i denne artikel:
- Standardoperationen er at oprette et nyt vindue med en skal i, køre en kommando og derefter skubbe vinduet til baggrunden (kaldet "løsrivelse"). Når du vil se, hvordan din proces klarer sig, kan du trække vinduet til forgrunden igen ("sæt igen") og bruge det igen. Dette er fantastisk til lange processer, som du ikke ved et uheld vil afslutte ved at lukke terminalvinduet.
- Når du har en
screen
session, der kører, kan du oprette nye vinduer og køre andre processer i dem. Du kan nemt hoppe mellem vinduer for at overvåge deres fremskridt. Du kan også opdele dit terminalvindue i lodrette eller vandrette områder og vise dine forskelligescreen
vinduer i et vindue. - Du kan oprette forbindelse til en ekstern maskine, starte en
screen
session og starte en proces. Du kan afbryde forbindelsen til den eksterne vært, oprette forbindelse igen, og din proces kører stadig. - Du kan dele en
screen
session mellem to forskellige SSH-forbindelser, så to personer kan se det samme i realtid.
Installerer skærm
For at installere screen
på ubuntu skal du bruge denne kommando:
sudo apt-get installationsskærm
For at installere screen
på Manjaro skal du bruge følgende kommando:
sudo pacman -Sy skærm
På Fedora skriver du følgende:
sudo dnf installationsskærm
Kom godt i gang med skærmen
For at starte screen
skal du blot skrive det som vist nedenfor og trykke på Enter:
skærm
Du får vist en side med licensoplysninger. Du kan trykke på mellemrumstasten for at læse den anden side eller Enter for at vende tilbage til kommandoprompten.
Du er tilbage ved kommandoprompten, og intet meget ser ud til at være sket. Men du kører nu en shell inde i en multiplex terminalemulator. Hvorfor er dette en god ting? Lad os starte en proces, der vil tage lang tid at gennemføre. Vi downloader kildekoden til den nyeste Linux-kerne og omdirigerer den til en fil, der hedder latest_kernel.zip
.
For at gøre det skriver vi følgende:
krølle //cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.5.9.tar.xz> latest_kernel.zip
Vores download begynder, og curl
output viser os fremskridtene.
Vi kan ikke vise dig et billede af den næste bit, fordi det er en tastetrykssekvens. Du skriver Ctrl + A, slipper disse taster og trykker derefter på d for at frigøre skærmen.
Downloadprocessen kører stadig, men det vindue, der viser download, fjernes. Du kommer tilbage til terminalvinduet, hvorfra du startede screen
sessionen. En meddelelse fortæller dig, at et screen
vindue, der er mærket, 23167.pts-0.howtogeek
er blevet løsrevet.
Du har brug for nummeret fra starten af vinduesnavnet for at vedhæfte det igen. Hvis du glemmer det, kan du altid bruge indstillingen -ls
(liste), som vist nedenfor, for at få en liste over de løsrevne vinduer:
skærm-ls
Når du er klar, kan du bruge indstillingen -r
(vedhæft) og nummeret på sessionen til at vedhæfte den igen som sådan:
skærm -r 23167
Vinduet, der har arbejdet væk i baggrunden, bringes nu tilbage til dit terminalvindue, som om det aldrig havde forladt.
Hvis det er en proces, der vil løbe igennem til dens konklusion, vil den til sidst blive afsluttet. Hvis det er en kontinuerlig proces, vil du til sidst gerne afslutte den. Uanset hvad, når processen slutter, kan du skrive for exit
at afslutte screen
. Alternativt kan du trykke på Ctrl + A og derefter K for at dræbe et vindue med magt.
Skriv følgende kommando:
Afslut
Du kommer tilbage til dit forrige terminalvindue, som stadig viser den kommando, du brugte til at fastgøre vinduet igen. Fordi vi lukkede vores eneste løsrevne vindue, får vi en besked, screen
der afsluttes.
RELATERET: Sådan bruges curl til at downloade filer fra Linux-kommandolinjen
Brug af navngivne skærmsessioner
Du kan bruge indstillingen -S
(sessionsnavn) til at navngive din screen
session. Hvis du bruger et mindeværdigt navn i stedet for den numeriske identitet på sessionen, er det mere praktisk at oprette forbindelse til en session igen. Vi skriver følgende for at navngive vores session "bigfile":
skærm -S storfil
Når vi screen
starter vores session, ser vi et tomt vindue med en kommandoprompt. Vi downloader en stor fil, så vi kan bruge en langvarig proces som et eksempel.
Vi skriver følgende:
krølle //ipv4.download.thinkbroadband.com/1GB.zip> bigfile.zip
Når download starter, trykker vi på Ctrl + A og derefter på D for at løsne sessionen. Vi skriver følgende for at bruge indstillingen -ls
(liste) med for screen
at se detaljerne i vores løsrevne session:
skærm-ls
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:
skærm -r bigfile
Vi forbindes igen til vores downloadvindue og ser, at den lange download stadig er i gang.
Når download er afsluttet, skriver vi for exit
at lukke sessionsvinduet.
Brug af skærm med flere Windows
Indtil videre har vi brugt screen
til at placere en enkelt proces i baggrunden i et fritliggende vindue. Men screen
er i stand til at gøre meget mere end det. Dernæst kører vi et par 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”:
skærm -S skærm
Ved kommandoprompten i vores nye vinduesession starter vi dmesg
og bruger valgmulighederne -H
(som kan læses af mennesker) og -w
(vent på nye meddelelser). Dette viser kernebufferbeskederne; nye meddelelser vises, når de opstår.
Vi skriver følgende:
dmesg -H -w
De eksisterende meddelelser vises. Vi vender ikke tilbage til kommandoprompten, fordi vi dmseg
venter på nye beskeder og viser dem, når de ankommer.
RELATERET: Sådan bruges dmesg-kommandoen på Linux
Vi ønsker at køre en anden applikation, så vi har brug for et nyt screen
vindue. Vi trykker på Ctrl + A og derefter C for at oprette et nyt vindue. Vi skal bruge watch
til at gentagne gange køre vmstat
, så vi får en ofte opdateret visning af den virtuelle hukommelsesforbrug på vores computer.
Ved den nye kommandoprompt skriver vi følgende:
se vmstat
Den vmstat
output vises, og opdateringer hvert andet sekund.
Vores to processer kører nu. For at hoppe mellem screen
vinduerne skal du trykke på Ctrl + A og nummeret på vinduet. Den første, vi oprettede, er vindue nul (0), den næste er vindue 1 osv. For at hoppe til det første vindue (det dmesg
ene) trykker vi på Ctrl + A og 0.
Hvis vi trykker på Ctrl + A og 1, tager det os tilbage til vmstat
vinduet.
Det er ret smukt! Vi kan trykke på Ctrl + A og derefter på D for at løsne os fra denne session; vi kan vedhæfte igen senere. Begge sessioner kører stadig. Igen, for at skifte mellem vinduerne skal vi trykke på Ctrl + A og nummeret (0 eller 1) for det vindue, vi vil skifte til.
Lad os gå til næste trin og se begge skærme i et vindue. Når du gør dette, strækker du dit terminalvindue til en størrelse, der gør dette trin nyttigt. Vores eksempler er begrænset til størrelsen på vores skærmbilleder, så vores vinduer ser lidt trange ud.
For at gøre dette skal vi trykke på Ctrl + A og derefter Shift + S (et stort "S" kræves).
Vinduet opdeles i to "regioner".
Den øverste region vises stadig vmstat
, og den nederste region er tom. Markøren er fremhævet i nedenstående skærmbillede. For at flytte det til det nederste område skal vi trykke på Ctrl + A og derefter på Tab.
Markøren bevæger sig til det nederste område, som virkelig bare er et tomt rum. Det er ikke en skal, så vi kan ikke skrive noget i den. For at få et nyttigt display skal vi trykke på Ctrl + A og derefter trykke på "0" for at få vist dmesg
vinduet i denne region.
Dette giver os begge live-output i et delt vindue. Hvis vi trykker på Ctrl + A og D for at løsne vinduet og derefter vedhæfte det igen, mister vi visningen i delt rude. Vi kan dog gendanne det med følgende tastaturgenveje:
- Ctrl + A, S: Opdel vinduet vandret.
- Ctrl + A , Tab: Flyt til det nederste område.
- Ctrl + A, 0: Displayvindue nul i det nederste område.
Vi kan tage tingene endnu et skridt videre. Vi deler nu den nederste rude lodret og tilføjer en tredje proces til skærmen. Med markøren i det nedre 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.
Dernæst kører vi df
kommandoen for at kontrollere filsystembrug:
df
Når vi ser df
køre, rammer vi Ctrl + A og rørkarakteren (|)
. Dette opdeler det nedre område lodret. Vi trykker på Ctrl + A og Tab for at flytte til den nye region. Dernæst trykker vi på Ctrl + A og 0 for at få vist dmesg
vinduet.
Du kan også flytte fra region til region og tilføje flere lodrette eller vandrette opdelinger. Her er nogle mere nyttige tastekombinationer:
- Ctrl + A: Hop frem og tilbage mellem de nuværende og tidligere regioner.
- Ctrl + A, Q: Luk alle regioner undtagen den aktuelle.
- Ctrl + A, X: Luk den aktuelle region.
Brug af skærm over SSH
Med screen
kan du starte en vinduesession, fjerne den, så den stadig kører i baggrunden, logge ud eller igen, og tilslut sessionen igen.
Lad os oprette en SSH-forbindelse til vores computer fra en anden med ssh
kommandoen. Vi er nødt til at angive navnet på den konto, som vi skal oprette forbindelse til, og adressen på den eksterne computer.
For vores eksempel skriver vi følgende:
ssh [email protected]
Når vi har godkendt på fjerncomputeren og logget ind, skriver vi følgende for at starte en screen
session kaldet “ssh-geek”:
skærm -S ssh-nørd
Til demonstrationsformål løber vi top
i screen
vinduet, men du kan starte enhver langvarig eller endeløs proces.
Vi skriver følgende:
top
Når først top
kører i vinduet, rammer vi Ctrl + A og derefter D for at løsne vinduet.
Vi returneres til det originale, eksterne terminalvindue.
Hvis vi skriver exit
, som vist nedenfor, afbryder den SSH-sessionen, og vi er tilbage på vores lokale computer:
Afslut
Vi skriver følgende for at oprette forbindelse igen:
ssh [email protected]
Når vi har oprettet forbindelse og er logget ind igen, kan vi skrive følgende for at genoprette screen
sessionen:
skærm -r ssh-nørd
Vi er nu forbundet igen med vores stadig kørende forekomst af top
.
Dette er fantastisk, hvis du vil starte en proces på en maskine og derefter fortsætte, uanset hvor du slap på en anden.
RELATERET: Sådan oprettes og installeres SSH-nøgler fra Linux Shell
Deling af en skærmsession
Du kan også bruge en screen
session til at lade to personer 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]
Når han har oprettet forbindelse, starter han en skærmsession kaldet “ssh-geek” ved hjælp af -S (sessionsnavn). Han bruger også valgmulighederne -d
(løsne) og -m
(håndhævet oprettelse) til at oprette en ny screen
session, der allerede er løsrevet.
Han skriver følgende:
skærm -d -m -S ssh-nørd
Han skriver følgende ved hjælp af muligheden -X
(multiskærmtilstand) for at vedhæfte sessionen:
skærm -X ssh-nørd
På en Manjaro-computer opretter en anden person forbindelse til Ubuntu-computeren med de samme kontooplysninger som vist nedenfor:
ssh [email protected]
Når hun er tilsluttet, skriver hun screen
kommandoen og bruger indstillingen -X (multiskærmtilstand) til at deltage i samme vinduesession som sådan:
skærm -X ssh-nørd
Nu, alt hvad en person skriver, vil den anden se. For eksempel, når en person udsteder datokommandoen, ser de begge den, som den er skrevet, såvel som dens output.
Begge mennesker deler nu en screen
session, der kører på en ekstern Ubuntu-computer.
For et stykke software, der først så dagens lys i 1987, indeholder det screen
stadig en god produktivitetsmønstring. At blive fortrolig med det vil være tid brugt!
RELATERET: 37 vigtige Linux-kommandoer, du bør kende