Skjermen kan ikke rulles av terminalemulatoren i ubuntu. Omvendt tekstrulling i linux-konsollen. Kobler til skjermen


Fri oversettelse: Alexey Dmitriev
Overføringsdato 19. november 2007

Vi snakker om GNU/Linux-tekstkonsollen her - ikke det som vises i terminalvinduet, eller X-window manager, eller skrivebordet. Det er så mye forvirring rundt dette at jeg trivielt må si: - "Hvis du trykker "Alt-Ctrl-F1" (eller "F2", etc.) mens du er i grafikkmodus, så kommer du inn i tekstkonsollen" .

0. Hva handler det om?

Datamaskinen laster inn. Du er i en tekstkonsoll og ser på at teksten ruller raskt nedover. Du vil se en del av denne teksten som allerede har blinket forbi. Du trykker "Shift-PgUp" eller "Shift-PgDn", og hvis du allerede har endret standard hurtigtaster (nei-nei, ikke X-tastaturoppsettet), så noen andre taster. Med disse tastene får du teksten til å bevege seg opp og ned på skjermen. Du bruker for øyeblikket tilbakerullingsbufferen (la oss kalle det tilbakerullingsbufferen for kort).

Når du begynner å bruke denne bufferen med makt og hoved, blir to ting klart veldig snart:
Bare en del av teksten som følger med nedlastingen kan returneres.
Filen "/var/log/messages" fanger opp mye mindre enn det du ønsket å se.

Du begynner å lete på nettet, og snart dukker foreløpige resultater opp: innleggene på scrollback i Linux er veldig eldgamle og kan spores tilbake til tidlig på 90-tallet. Alt før 2.6.x-kjernen bør imidlertid glemmes.

Faktisk bør du være selektiv i det du leser: de fleste rådene som gjelder versjoner før 2.6.x vil sannsynligvis forvirre deg og føre deg på villspor. Stol på meg, jeg har kastet bort mye tid på denne saken. Tilbakerullingsadferd er definert i "vc.c"-filen, en ellers liten fil i kjernekildene, med "vc" som står for "virtuell konsoll".

Merk at når du bytter konsoll, går rullebufferen tapt - så hele mengden av denne bufferen er tilgjengelig i gjeldende konsoll. (Det er spesielt mye informasjonssøppel her fra tiden før 2.6.x-kjernen).

Som standard er bufferstørrelsen 32K. Dette er nok for 4 omvendte rulletaster - hvert trykk ruller halve skjermen, 25 linjer per skjerm. Det kommer ut til ca 50 linjer. Og du får ikke mer, selv om du har 30 eller 50 linjer per skjerm. Jeg må si at 50 linjer er en liten brøkdel av det som flyr over skjermen under lasting. I forbindelse med ovenstående dukker det opp to spørsmål:

Hvordan øke rullebufferen?

Hvorfor fanger ikke loggene opp noen av meldingene du så under nedlastingen?

1. Hvordan øke tilbakerullingsbufferen?

Den første løsningen er å øke standard (standard) bufferstørrelse i kjernekildene og kompilere den på nytt. La meg anta at du er like motvillig til å gjøre dette som meg og ser etter et mer fleksibelt medium.

Og det er et slikt verktøy, men det kalles "framebuffer console", for kort "fbcon". Denne enheten har en dokumentasjonsfil "fbcon.txt"; hvis du installerte dokumentasjonen for kjernen, så har du den. Se etter det et sted i "/usr/share"-grenen (jeg kan ikke gi den nøyaktige banen på grunn av distribusjonsforskjeller). Du kan alltid laste den ned som en enkelt fil.

På dette tidspunktet beklager jeg: vi må avvike litt og snakke litt om rammebufferen.

Videobufferen er en buffer mellom skjermen og videoadapteren. Dens skjønnhet er at den kan manipuleres: den tillater triks som ikke ville fungere hvis adapteren var koblet direkte til skjermen.

Et slikt triks er relatert til rullebufferen; viser seg at du kan "be" videobufferen om å allokere mer minne til rullebufferen. Dette oppnås gjennom oppstartsparametrene til kjernen. Først trenger du en framebuffer (videobuffer); Da ber du om en større rullebuffer.

Følgende eksempel er for GRUB, men kan enkelt tilpasses til LILO. I GRUB-konfigurasjonsfilen - "menu.lst" - finn linjen som tilsvarer kjernen, og deretter:
Fjern alternativet "vga=xxx" hvis det finnes.
Legg til alternativet "video=vesabf" eller hva som passer til maskinvaren din.
Legg til alternativet "fbcon=scrollback:128".
Etter denne prosedyren skal kjerneparameterlinjen se omtrent slik ut:
"kernel /vmlinuz root=/dev/sdb5 video=radeonfb fbcon=scrollback:128".

Spørsmålet er hvorfor fjerne "vga=xxx"-alternativet? På grunn av mulige konflikter med videoalternativet. På ATI-adapteren min kan jeg ikke endre rullebufferen hvis "vga=xxx" er oppført. Kanskje er dette ikke tilfelle i ditt tilfelle. Hvis alternativene ovenfor fungerer - bra; men hva om du vil øke antall linjer, eller sette en mindre skrift på skjermen? Du gjorde det alltid med "vga=xxx"-alternativet - og det var det som forsvant. Ikke bekymre deg - det samme kan oppnås ved å endre fbcon-parametrene som beskrevet i filen "fbcon.txt" (men ikke beskrevet i denne artikkelen). På Ubuntu og Debian er det en mer praktisk måte: "dpkg-reconfigure console-setup". Denne kommandoen er også verdt å bruke fordi den også oppdaterer "initrd" til de nye innstillingene dine.

2. Presse grenser

Alternativet "fbcon=scrollback:128" gir deg muligheten til å navigere mellom 12-13 skjermer i rullebufferen. Det er omtrent 150 linjer - ikke dårlig, men sannsynligvis ikke nok til å se alle oppstartsmeldingene. Er det mulig å satse mer enn 128, si 256? Grensen på 128 er i "vc.c". Hvis du vil ha mer, rediger og kompiler. For meg selv bestemte jeg meg for at spillet ikke er verdt lyset.

Akkurat da jeg bestemte meg for at jeg hadde nådd den høyeste grensen - siterer jeg fra "fbcon.txt":
fbcon=scrollback: [k]
...
"k"-suffikset er valgfritt, og vil multiplisere "verdien" med 1024.
(Suffikset "k" er valgfritt, og vil multiplisere "verdi" med 1024 ganger).
Jeg skyndte meg å sjekke ... og uansett hva forfatteren mente om dette, var han overbevist om at 128 og 128k gir nøyaktig samme resultat. Standardgrensen er 128KB minne, det er hele historien.

Merk til slutt at bruk av den utvidede rullebufferen bruker både grafikkortminne og en buffer i RAM. Hvis du er fornøyd med standard 32KB, bruker du kun skjermkortets minne. I praksis merket jeg imidlertid ikke den minste nedbremsing.

3. Hva mangler i loggene?

På Ubuntu og Debian og andre distribusjoner lagres alle systemmeldinger i filen "/var/log/messages". Dette gjelder selv om loggdemonen ikke er den gamle "syslog" men "syslog-ng" ("ng": "ny generasjon").

I begge tilfeller kan du se meldingene ved å skrive "dmesg" på kommandolinjen. Det hjelper ikke: du så tydelig meldinger mens du lastet inn som ikke er i utdataene til "dmesg"-kommandoen. Hvordan det?

Dette er en funksjon, ikke en feil! Meldingene som er logget til filen kommer fra forskjellige OS-undersystemer. Undersystemene som sender meldinger til loggfilen blir i syslog-terminologien referert til som "fasiliteter" ("midler" eller "tjenester"), det er bare 8 av dem. Under nedlastingsprosessen fungerer programmer og skript som kanskje ikke tilhører noen av de 8 "verktøyene". Vi ser meldingene deres rulle over skjermen, men ingenting vil bli registrert i loggfilen!

For eksempel vil du ikke se meldinger fra "loadkeys" (openSUSE) eller "consolechars" (Ubuntu og Debian) programmer når du laster et tastaturoppsett under systemoppstart. Et annet eksempel: når du bruker et konsollbasert tekstredigeringsprogram, kan du rulle skjermen bakover (inkludert farger) mens du bruker rullebufferen. Men det redaktøren produserer vil aldri komme inn i noen systemprotokoll. Grunnen er selvfølgelig at verken "loadkeys", eller "consolechars", eller editoren tilhører noen av de 8 "tools".

Er det mulig å endre situasjonen? Selvfølgelig - "bare" remake og rekompilere de applikasjonene du vil logge. Legg til eller omskriv oppstartsskript. Eller få systemet til å fange opp meldinger fra utenfor de 8 system-"verktøyene".

Jeg vedder på at du ikke vil gjøre det. Og jeg vet til og med ditt sannsynlige svar:
"Ingenting mangler i loggene mine." Ja, selvfølgelig...

Hvis du likte denne artikkelen, del den med vennene dine:

Emnet for nyttige metoder for å jobbe i Linux-terminalen er uuttømmelig. Det ser ut til at alt er ordnet veldig enkelt: en shell-melding og kommandoer som legges inn fra tastaturet. Men i denne enkelheten ligger en avgrunn av ikke-åpenbare, men nyttige muligheter. Det er derfor vi regelmessig publiserer materiale om funksjonene ved å jobbe i Linux-kommandolinjen. Spesielt i dag vil det være en oversettelse av en artikkel hvis forfatter brenner for å spare tid gjennom å øke produktiviteten.

Hvis du er interessert i å jobbe med Linux-kommandolinjen - her er noen av materialene våre om dette emnet:

  • [ +114 ] Mest nyttige Linux-kommandolinjeteknikker
  • [ +70 ] 10 Linux-terminaltriks som få mennesker vet om
  • [+65 ] Overraskende nyttig verktøy: lsof
  • [ +32 ] Linux: omdirigering
  • [ +29 ] PDF-versjon av artikler om Bash-skript

Linux kommandolinjetriks og tidsbesparelser

Har du noen gang sett en kollega bruke noen enkle Linux-kommandoer for å løse problemer som tar deg flere linjer å løse? Det må være at når noe slikt skjedde, var alt du kunne si til deg selv: «Wow! Jeg visste ikke at det kunne gjøres så lett."

I denne artikkelen skal jeg vise deg noen profesjonelle Linux-kommandolinjetriks som vil spare deg for mye tid og i noen tilfeller bli kvitt dårlig humør. Ikke bare det, vennene dine eller kollegene dine vil si: "Vel, wow!", Ser på deg. Disse triksene vil også hjelpe deg å øke din personlige produktivitet, ettersom du må skrive inn færre kommandoer og til og med foreta færre museklikk.

Dette er ikke å si at disse Linux-tipsene bare er for nybegynnere. Det er godt mulig at selv erfarne brukere vil finne noe nyttig her som de ikke visste om til tross for at de har brukt Linux i mange år. Linux læres av erfaring. Det er her din egen erfaring og andre menneskers erfaring spiller inn.

Før vi begynner, vil jeg merke at noen av metodene som presenteres her avhenger av konfigurasjonen av skallet.

0. Autofullfør-kommandoer ved å bruke tabulatortasten

Jeg starter med noe veldig åpenbart, men veldig viktig: autofullfør kommandoer ved å bruke Tab-tasten.

Når du begynner å skrive i Linux-terminalen, kan du trykke på Tab-tasten, som vil få opp et verktøytips som inneholder et sett med alternativer for å fortsette å skrive, og starter med tegnene du nettopp skrev.

Hvis du for eksempel skal kopiere en fil som heter my_best_file_1.txt , kan du ganske enkelt skrive cp m og trykke Tab for å se alternativene for å fortsette kommandoen.


Bruke Tab-tasten for å autofullføre inndata

Tab-tasten kan også brukes til å autofullføre kommandoer.

1. Bytt til siste arbeidskatalog

Tenk deg at du jobbet i en katalog som ikke er så lett å komme til, og deretter flyttet til en annen katalog som ligger et helt annet sted. Så innså du at du må gå tilbake til forrige katalog. I dette tilfellet bruker du bare følgende kommando:

CD-
Det vil tillate deg å være i den siste arbeidskatalogen. Nå, i situasjoner som dette, trenger du ikke lenger å angi lange baner, eller bruke kopier og lim inn.


Enkelt å bytte mellom kataloger

2. Gå tilbake til hjemmekatalogen

Denne tilnærmingen er også veldig åpenbar. Du kan bruke følgende kommando for å gå tilbake til hjemmekatalogen din fra hvor som helst:

CD~
Du kan imidlertid gå tilbake til hjemmekatalogen enda raskere med cd-kommandoen.

I de fleste moderne Linux-distribusjoner er skallet forhåndskonfigurert til å behandle cd-kommandoen på denne måten. Dette vil spare deg for et par tastetrykk på tastaturet.


Den raskeste måten å bytte til hjemmekatalogen på

3. Vise innholdet i en katalog

Du lurer kanskje på hva som er subtiliteten ved å bruke en kommando for å liste innholdet i en katalog. Alle vet at ls -l-kommandoen tjener dette formålet.

Men det er hele poenget. Nesten alle bruker kommandoen ls -l for å liste innholdet i kataloger, mens det samme kan gjøres med følgende kommando:

Ll
Funksjonaliteten til denne kommandoen avhenger av Linux-distribusjonen og av skalloppsettet ditt, men det er høyst sannsynlig at du vil kunne bruke den på de fleste distribusjoner.


Bruke ll-kommandoen i stedet for ls -l-kommandoen

4. Ringe opp flere kommandoer på én linje

Tenk deg at du må utføre flere kommandoer i rekkefølge. Sannsynligvis skriver du inn én kommando, venter på at den skal fullføres, og skriver deretter inn den neste?

I en slik situasjon vil en kommandoseparator være nyttig; (semikolon). Med denne tilnærmingen kan du legge inn flere kommandoer på samme linje. I dette tilfellet, i motsetning til den vanlige inngangen av kommandoer, for å utføre den neste kommandoen, trenger du ikke å vente på fullføringen av den forrige.

Kommando_1; kommando_2; kommando_3

5. Utførelse av flere kommandoer på én linje og en betingelse for vellykket gjennomføring av forrige kommando

Vi har nettopp sett på en måte å kalle flere kommandoer på en enkelt linje. Dette sparer tid. Men hva hvis du vil si, når du kaller to kommandoer, slik at den neste kommandoen blir utført bare hvis den forrige fullføres uten feil?

Tenk deg at du vil bygge koden og så, hvis byggingen var vellykket, ring make ?

I en slik situasjon kan du bruke skilletegnet && . Denne avgrensningen sikrer at neste kommando kun blir utført hvis den forrige lykkes.

Kommando_1 && kommando_2
Her er et godt eksempel på bruk av && :

sudo apt oppdatering && sudo apt oppgradering

6. Enkelt søk og bruk av tidligere angitte kommandoer

Tenk deg at du for et par minutter eller et par timer siden skrev inn en lang kommando, og du trenger denne kommandoen igjen. Dessuten er problemet at du ikke kan huske nøyaktig denne kommandoen.

I en slik situasjon vil et omvendt søk redde deg. Denne teknikken lar deg søke i kommandohistorikken etter et nøkkelord. Her er det nok å bruke tastekombinasjonen Ctrl + R for å starte et omvendt søk og skrive inn noe relatert til kommandoen. Systemet vil se gjennom kommandohistorikken og vise kommandoene som samsvarer med den angitte spørringen.

Ctrl+R søkeord
Som standard vil bare ett resultat vises. For å se flere resultater som samsvarer med søket ditt, må du bruke hurtigtasten Ctrl + R igjen og igjen. For å gå ut av omvendt oppslagsmodus, trykk Ctrl + C .


Omvendt kommandohistorikksøk

Merk at i noen Bash-skall kan du bruke Page Up- og Page Down-tastene for å bla gjennom søkeresultatene.

7. Låse opp terminalen etter å ha trykket på Ctrl + S ved et uhell

Du er kanskje vant til å bruke hurtigtasten Ctrl + S for å lagre filer. Men hvis du trykker på disse tastene i Linux-terminalen, vil du låse den.

Hvis du tidligere, for å rette opp situasjonen, ble tvunget til å lukke og starte terminalen på nytt - nå kan du puste lett, du trenger ikke å gjøre dette lenger. For å bringe terminalen til en fungerende tilstand, bruk bare tastekombinasjonen Ctrl + Q .

8. Flytt til begynnelsen eller slutten av en linje

Tenk deg at du skriver inn en lang kommando og et sted i midten skjønner du at du må endre noe i begynnelsen av den. Du bruker sannsynligvis piltastene for først å flytte til begynnelsen av linjen og deretter tilbake til slutten.

Selvfølgelig, i en slik situasjon, kan du bruke Home- og End-tastene, men som et alternativ, ved å bruke tastekombinasjonen Ctrl + A kan du gå til begynnelsen av linjen, og ved å bruke kombinasjonen Ctrl + E - til slutt.


Flytt til begynnelsen eller slutten av en linje

Jeg synes denne måten er mer praktisk enn å bruke Home- og End-tastene, spesielt når jeg jobber på en bærbar datamaskin.

9. Les loggfiler i sanntid

Når du trenger å analysere loggfiler som en kjørende applikasjon skriver til under parsing, kan du bruke tail-kommandoen med -f-alternativet.

Tail -f path_to_Log
Alternativt kan du bruke grep-kommandoen i normal form for å vise bare linjene du er interessert i:

Tail -f path_to_log | grep søketerm
Du kan også bruke F-alternativet her. Dette vil føre til at haleverktøyet fortsetter å kjøre selv om loggfilen som vises, blir slettet. Med denne tilnærmingen, hvis denne filen opprettes på nytt, vil tail fortsette å skrive ut data fra den til skjermen.

10. Lese komprimerte loggfiler uten å dekomprimere dem

Serverlogger komprimeres vanligvis med gzip for å spare diskplass. Dette kan føre til noen ulemper når du analyserer logger av utviklere eller systemadministratorer. Det kan hende du må bruke scp-kommandoen for å kopiere filen til din lokale katalog, og deretter trekke ut filen fra arkivet for å se den, siden du kanskje ikke har skrivetillatelse til hvor filen du er interessert i er lagret.

Her kommer vi til hjelp for en gruppe kommandoer hvis navn begynner med bokstaven "z". Disse kommandoene er et alternativ til de vanlige kommandoene som brukes til å jobbe med loggfiler. Blant dem er mindre , cat , grep og andre.

Så ved å bruke kommandoene zless , zcat , zgrep og lignende, trenger du ikke eksplisitt å dekomprimere komprimerte filer. Detaljer om disse kommandoene kan sees.

Forresten, da jeg fortalte en kollega om disse "hemmelige" kommandoene, fikk jeg en kopp kaffe.

11. Bruke mindre kommando for å lese filer

Hvis du trenger å se en fil, spesielt en stor, kan du prøve cat , men det er mye bedre å se andre steder. Faktum er at katten vil vise hele filen på skjermen, noe som ikke er så praktisk.

Du kan bruke en editor som Vi eller Vim i en terminal for å vise filer, men hvis du bare trenger å lese en fil, kommer den mindre kommandoen godt med.

Mindre bane_til_fil
Under en økt med mindre kan du søke etter de ønskede tekstfragmentene etter nøkkelord, navigere gjennom sider, vise data med linjenummer og så videre.

12. Gjenbruk det siste elementet fra forrige kommando med !$

I mange situasjoner er det veldig nyttig å kunne bruke argumentet til den forrige kommandoen.

Anta at du må opprette en katalog, og deretter gå til den. Her kan du bruke !$-alternativet ved å skrive inn hoppkommandoen etter kommandoen for katalogoppretting.


Bruk!$ for å bruke siste kommando-argument

Enda bedre, det samme gjøres ved å bruke hurtigtasten Alt +. (punktum). Prikken kan brukes flere ganger for å iterere over alternativene til den siste kommandoen.

13. Bruke forrige kommando i gjeldende kommando med!!

Via!! du kan ringe hele forrige kommando. Dette trikset er spesielt nyttig når du trenger å utføre en kommando og det viser seg at du trenger superbrukerrettigheter for å utføre den. For eksempel viser figuren nedenfor en situasjon der sudo !! lar deg spare mye tid.


Utnytte!!! for å erstatte den siste kommandoen som et argument

14. Bruke aliaser for å fikse skrivefeil

Du er kanskje allerede kjent med alias-kommandoen. Den kan brukes til å rette feil i innlagte kommandoer.

Det kan for eksempel hende at du ofte skriver gerp i stedet for grep . Hvis du ikke kan stoppe den dårlige vanen, legg til et alias til bashrc-filen din slik:

Alias ​​​​gerp=grep
Nå trenger du ikke å skrive inn denne kommandoen på nytt hvis du skriver inn navnet feil.

15. Kopier og lim inn i Linux-terminalen

Dette rådet er noe tvetydig da det avhenger av Linux-distribusjonen og på terminalen.

Men vanligvis kan kopier og lim-kommandoene startes slik:

  • Marker teksten du vil kopiere og høyreklikk for å lime den inn (fungerer i Putty og andre Windows SSH-klienter).
  • Marker teksten du vil kopiere, og klikk deretter på den midtre museknappen (rullehjulet) for å lime den inn.
  • Bruk hurtigtastene Ctrl + Shift + C for å kopiere, og Ctrl + Shift + V for å lime inn.

16. Avslutt et team eller en prosess

Kanskje det jeg vil gi råd her er ganske åpenbart, men jeg vil fortelle deg om det uansett. Hvis en kommando kjører i forgrunnen og du vil avslutte den, kan du trykke Ctrl + C for å stoppe den.

17. Bruke yes-kommandoen til å automatisere interaktive kommandoer eller skript

Hvis du må jobbe med noen kommandoer eller skript som involverer brukerinteraksjon, og du vet at du vil skrive Y for hvert spørsmål i programmet, kan du automatisere denne prosessen med yes-kommandoen. Det gjøres slik:

Ja | kommando_eller_skript

18. Slette innholdet i en fil uten å slette selve filen

Hvis du vil slette innholdet i en tekstfil uten å slette selve filen, kan du bruke følgende kommando:

> filnavn

19. Finne ut om en katalog inneholder filer som inneholder bestemt tekst

Linux-kommandolinjen støtter mange måter å finne informasjon på. Men hvis du bare vil finne ut om det er filer i en katalog som inneholder bestemt tekst, kan du bruke denne kommandoen:

Grep -Pri Search_Term path_to_directory
Jeg råder imidlertid alle som trenger å søke på Linux å få hodet rundt finne-kommandoen.

20. Ringe hjelp for enhver kommando

Jeg vil avslutte dette materialet med et veldig åpenbart, men likevel veldig viktig "triks", som er å ringe hjelpen for et kommando- eller kommandolinjeverktøy.

Nesten alle kommandolinjeverktøy inneholder hjelpeinformasjon som avslører særegenhetene ved bruken deres. Vanligvis hjelper lesehjelp deg å forstå det grunnleggende om en kommando. Du kan ringe hjelp slik:

Command_tool --help

Jeg har bevisst ikke inkludert kommandoer som fuck i dette innlegget, fordi de ikke er den typen standard ting du finner bokstavelig talt overalt. Det jeg har beskrevet her kan være nyttig for å jobbe med nesten alle Linux-distribusjoner og kommandolinjeskall uten å måtte installere nye programmer.

Skjerm er et veldig hendig program hvis du ofte jobber i konsollen ved å koble til serveren via SSH. I dette tilfellet skjerm lar deg beholde flere forskjellige skjermer i én konsoll, og enkelt bytte mellom dem.

Skjerm lar deg koble fra SSH mens du lagrer oppgaver som kjører på en ekstern server.

For å installere på Ubuntu må du kjøre kommandoen

$ sudo apt-get installscreen

Etter det må du kjøre skjermen:

$ skjerm

Etter å ha startet, vil du se enten en kommandolinje eller en "velkomstskjerm" ved å trykke MELLOMROM eller ENTER der du også vil bli tatt til skallet. I dette tilfellet vil alle kommandoer bli lansert allerede "inne" på skjermen.

For å gå ut av skjermen (avslutt, ikke koble fra), er det nok å avslutte alle skjell som er åpne i den, eller, alternativt, trykk på tastekombinasjonen Ctl-a \, og svar "y" på spørsmålet "vil du virkelig å gå ut".

Du kan koble fra gjeldende skjermbilde uten å lukke eller avslutte økten ved å trykke Ctrl-a d.

Kobler til skjermen

Hvis det allerede kjører en skjermøkt på maskinen og du vil koble til den, så

  1. hvis det bare er én økt, er en enkel kommando nok: $ screen –x
  2. hvis det er flere økter, så: du kan se listen over kjørende skjermer med screen -ls kommandoen: $ screen -ls Det er skjermer på: 2762.pts-0.debian (Detached) 2743.pts-0.debian ( Frittliggende) 2 Stikkontakter i /var/run/screen/S-diesel.

    Vi velger skjermen vi trenger, og blir med:

    Skjerm -x 2762.pts-0.debian

    Navnene på øktene er som standard lite informative - bare prosessnummer, hvis du vil kjøre og bruke flere skjermøkter til forskjellige oppgaver, kan du finne på mer fornuftige navn. Vi kommer opp med et navn, så starter vi en ny skjerm som dette:

    $ skjerm -S "jobb1"

    hvor jobb1 er navnet på vår "navngitte" økt. Nå i -ls vil vi se mye klarere:

    $ skjerm -ls Det er skjermer på: 2762.pts-0.debian (Detached) 2795.job1 (Detached) 2743.pts-0.debian (Detached) 3 Sockets i /var/run/screen/S-diesel.

    og vi kan koble til jobb1-økten ved å spesifisere navnet:

    $ skjerm -x jobb1

Bytte mellom skjermer

Som du allerede har forstått, lagres økter selv når du er koblet fra serveren, og alt som kjører i dem fortsetter å bli utført. Skjermens muligheter er imidlertid ikke begrenset til dette. Noen ganger, når jeg jobber via ssh, vil jeg virkelig ha flere terminaler åpne på en gang, mens det å koble til flere ganger er en bummer - spesielt hvis du trenger å koble til gjennom flere servere. Skjerm kan også hjelpe med dette. Bare trykk Ctrl - a c og et annet skall åpnes. Du kan flytte mellom åpne skjell enten gjennom Ctrl - a<Цифра>, hvor<Цифра>- åpent skallnummer, fra null, eller Ctrl - a n / Ctrl - a p - forover bakover. Du kan få en liste over åpne "vinduer" - konsoller (og bytte til ønsket), ved å bruke tastekombinasjonen Ctrl - en "; for å gi et normalt navn (og ikke bare kjedelig "bash") for en tråd i vinduet, gå til den og trykk Ctrl - en A (skiller mellom store og små bokstaver), og skriv inn et navn ved ledeteksten som vises.

Overvåking av kommandoutførelse

Hvis du har flere vinduer åpne, kan det være nyttig å overvåke aktiviteten i ett av dem. For eksempel hvis du kjører en "langvarig" kommando og er interessert i å vite når den vil fullføres. Vi går til vinduet med denne kommandoen, trykker Ctrl - a m, vi ser en inskripsjon som dette: "Vindu 0 (bash) overvåkes nå for all aktivitet". Når noe endres i et vindu, vil skjermen pipe og vinduslisten vil vise en "@" etter nummeret.

Skjermrulling i skjermen

For å se resultatet av en kommando som har gått over vinduets grenser, må du trykke Ctrl-a [

Dette vil bytte skjermen til kopieringsmodus. For å gå ut av denne modusen, trykk ganske enkelt Esc.

skjermkonfigurasjon

Skjermen konfigureres ved å bruke ~/.screenrc-filen i hjemmekatalogen din. Du kan for eksempel skrive der:

Bildetekst alltid "%(= 45)%(+bw)Skjerm: %n | %h %=%t %c" hardstatus always lastline "%-Lw%(= BW)%50>%n%f* %t%( -)%+Lw%<"

Dette vil gi deg en alltid synlig liste over åpne vinduer, og annen nyttig informasjon nederst på skjermen.

Når Screen startes, blir kommandoer fra /etc/screenrc-filen og .screenrc-filen fra brukerens hjemmekatalog også utført. Mange av kommandoene som kan brukes i konfigurasjonsfiler er omtalt i tabellene ovenfor i feltet "Tekstkommando". Nedenfor er et eksempel på skjermkonfigurasjon fra en .screenrc-fil:

# Deaktiver visning av lisensinformasjon ved oppstart Skjerm startup_message off # Åpne et skall for å kjøre chdir-skjerm -t Arbeid # Åpne et skall for å administrere konfigurasjon chdir /etc-skjerm -t Konfigurasjon # Åpne et skall for å se logger chdir /var/log-skjerm -t Logger # Velg første vindu etter start velg 0

Denne ganske enkle konfigurasjonsfilen åpner tre vinduer som heter henholdsvis Arbeid, Konfigurasjon, Logger i brukerens hjemmekatalog, i /etc-katalogen og i /var/log-katalogen. Etter lansering vil det første vinduet med navnet Work være på skjermen. Figur 1 viser et eksempel på hvordan Screen fungerer med denne konfigurasjonsfilen.

Fullføringsskjerm

Hvis skjermøkten av en eller annen grunn slutter å svare, kan du avslutte den. For å gjøre dette må du koble til ønsket økt, trykk deretter Ctrl - a og skriv inn kommandoen ":quit".

Skjermen avslutter denne økten, og lukker alle vinduer med makt.

Arbeid med skjerm

En av Screens hovedfunksjoner er opprettelsen og administrasjonen av flere konsollvinduer, eller tekstbaserte applikasjoner, i et enkelt terminalvindu. På en gang kan bare ett av vinduene være på terminalskjermen (det kan være flere av dem bare hvis de deler terminalskjermen i deler). Skjerm lar deg raskt bytte mellom vinduer, lagre og senere gå tilbake til en tekstøkt og dele den med andre brukere. I tillegg lar Screen deg gi Windows-titler, holde styr på aktiviteten i hvert vindu og dele innholdet i vinduene ved å kopiere og lime inn. Og i tillegg lar Screen deg tilordne nøkler på nytt, administrere terminalemuleringsinnstillinger og gjøre mange andre små tekstboksoppgaver som kanskje ikke er et konstant behov, men som kan hjelpe deg med å utføre administrativt arbeid på bestemte tidspunkter.

Figuren viser en Skjerm med tre navngitte vinduer (Arbeid, Konfigurasjon, Logger) og tekstredigereren Vim åpnet i den, med et eksempel på konfigurasjonsfilen Skjerm.

Første start

Skjerm kan startes med skjermkommandoen, men sjekk først om Skjerm er installert på systemet ditt med følgende kommando:

$ hvilken skjerm /usr/bin/skjerm

Hvis kommandoen returnerer banen som i eksemplet ovenfor, kan du begynne å bruke den med en gang, ellers kan Screen installeres ved å bruke standardpakkestøtteverktøyene til operativsystemet ditt, eller lastes ned fra den offisielle nettsiden http://www.gnu. org/software/screen/ .

Nå kan vi kjøre Screen ved å skrive:

$ skjerm

Etter lansering kan informasjon om versjonen og lisensen vises på skjermen (når vi vurderer konfigurasjonen, vil vi vurdere hvordan vi kan avbryte visningen av denne meldingen), og i dette tilfellet må du trykke på "Mellomrom" eller "Enter"-tasten, hvoretter vi ved første øyekast kommer inn i den vanlige , en tekstomslag. Det skal bemerkes at på kommandolinjen kan du umiddelbart spesifisere en kommando for å starte en spesifikk applikasjon, for eksempel for å starte toppen, må du skrive:

$ skjerm øverst

Ok, nå kjører Screen, men ved første øyekast er det ingen eksterne endringer - vi kan jobbe i et løpende skall, eller bruke topp. Trikset er at mens du kjører, sender Screen alle tastetrykk direkte til applikasjonen, men (som standard ) etterlater seg kontrollkommandoer som begynner med tastekombinasjonen Ctrl + a .

Denne kontrolltastkombinasjonen kan endres gjennom konfigurasjonsfilene (som vi vil diskutere nedenfor), men i alle eksemplene vil bare standardkonfigurasjonen bli vurdert. Dermed består alle skjermtastaturkommandoer av to tastekombinasjoner - kontrolltasten Ctrl + a og selve tasten, eller en tastekombinasjon som representerer kommandoen. Nesten hver kommando har også sin tekstmotpart, som kan utføres enten gjennom en konfigurasjonsfil eller ved å kjøre følgende kommando:

I dette tilfellet må vi utføre to hurtigtaster ved først å trykke Ctrl + a og deretter kolontasten. I dette tilfellet vil Screen vise en ledetekst i form av et kolon nederst på skjermen. Den samme kommandoen som vi nettopp utførte med en tastatursnarvei, kan kjøres gjennom konfigurasjonsfilen ved å bruke kolon-tekstkommandoen, som for eksempel kan være nødvendig for å vise en ledetekst ved oppstart, eller tilordne tastekombinasjonen som forårsaker denne ledeteksten. Nedenfor, som i eksemplet ovenfor, vil jeg for hver tastekombinasjon skrive nøkkelordene som tilsvarer dem, som kan brukes i konfigurasjonsfiler, eller legges inn med Ctrl + a og:.

Et legitimt spørsmål kan dukke opp her - hva om applikasjonen trenger å direkte passere tastekombinasjonen Ctrl + a , som allerede brukes i Screen som en tjenestenøkkel? For eksempel brukes den samme kombinasjonen av readline-komfor å hoppe til begynnelsen av en linje. For dette tilfellet gir Screen følgende kommando:

Vindushåndtering

I forrige seksjon lærte vi hvordan du kjører Screen og lærte den grunnleggende malen for alle tastaturkommandoer. Det er på tide å håndtere kommandoene for å administrere vinduer. Når Screen starter, oppretter den et enkelt vindu (med mindre konfigurasjonen spesifiserer å opprette flere vinduer samtidig) og tildeler det nummeret 0. Et nytt kommandoskallvindu kan opprettes med kommandoen nedenfor:

TASTATUR TEKSTKOMMANDO BESKRIVELSE
ctrl+a c skjerm Opprett et nytt vindu

I dette tilfellet vil Screen opprette et nytt vindu og tildele det neste nummer i rekkefølge. I vårt tilfelle vil det nye vinduet være vindu nummer 1.

Nå har vi allerede to tekstvinduer, hvorav det nyopprettede vindu nummer 1 er det nåværende, og vindu nummer 0 er i bakgrunnen. Men det skal bemerkes at selv om vinduet er i bakgrunnen, kan det oppfatte utdataene fra applikasjonen som kjører i det, som om det var det gjeldende. For eksempel kan vi starte en prosess i vindu 0 som sender ut tilleggsinformasjon med jevne mellomrom (for eksempel kan dette være kommandoen tail -f) og deretter bytte til vindu 1 for å fungere i et tekstredigeringsprogram. Etter en stund, hvis vi vil se hva som skjer i vindu 0, kan vi bytte til dette vinduet og se all utdata fra prosessen som kjører der. Du kan deretter bytte tilbake til redigeringsvinduet.

I forrige avsnitt beskrev jeg et eksempel med å bytte mellom vinduer, men sa ennå ikke hvilke kommandoer som brukes til dette. La oss se nærmere på de mest brukte kommandoene for å administrere vinduer:

TASTATUR TEKSTKOMMANDO BESKRIVELSE
ctrl+a w vinduer Viser tallene og titlene til alle vinduene på nederste linje på skjermen
ctrl+a « vindusliste Viser en interaktiv liste over numre og titler for alle vinduer som du kan velge et vindu å bytte fra
ctrl+a vindu nummer plukke ut Velg vindu etter nummer. For eksempel gjør kommandoen Ctrl + a og 0 det gjeldende vinduet til 0
Ctrl+a n neste Bytt til neste vindu i rekkefølge, eller til det første vinduet hvis vi var i det siste vinduet
ctrl+a s forrige Bytt til forrige vindu i rekkefølge, eller til siste vindu hvis vi var i det første vinduet
ctrl+a plukke ut Vis en melding om å angi vindusnummeret for å bytte
ctrl+a ctrl+a annen Bytt til sist brukte vindu
ctrl+a N Nummer Vis gjeldende vindusnummer og tittel
ctrl+a EN tittel Angi tittelen på det gjeldende vinduet
ctrl+a k drepe Tving lukke vinduet, for eksempel hvis applikasjonen ikke kan lukkes på vanlig måte

Når et av vinduene lukkes, endres ikke tallene på andre vinduer, og det kommer "hull" i nummereringen, som senere kan fylles med nye vinduer Selv om Screen har en kommando for å endre vindusnummer, vurderes det ikke. her og er overlatt til selvstendig studie. Hvis alle vinduer er lukket, avsluttes skjermen og viser en melding:

Arbeid med tekst

Ovenfor lærte vi hvordan du starter Skjerm og administrerer vinduer - oppretter dem, bytter fra vindu til vindu, tildeler navn og lukk dem. La oss nå se på å jobbe med innholdet i vinduer - kopiere og lime inn tekstinnholdet i ett vindu i et annet, overvåke vinduer, lagre en tekstkopi av skjermen og andre lignende oppgaver:

TASTATUR TEKSTKOMMANDO BESKRIVELSE
ctrl+a M Observere Aktiver/deaktiver aktivitetsovervåking for gjeldende vindu. Når overvåking er aktivert og tekst vises i et vindu i bakgrunnen, vises informasjon om aktivitet i servicelinjen.
stillhet Aktiver/deaktiver inaktivitetsovervåking for det gjeldende vinduet. Når overvåking er aktivert og ingen tekst vises i et vindu som er i bakgrunnen i en viss tidsperiode, vises informasjon om manglende aktivitet i tjenestelinjen.
ctrl+a h papirkopi Skriv et tekstbilde av det gjeldende vinduet til filen hardcopy.window_number i skjermkatalogen som standard.
ctrl+a H Logg Aktiver/deaktiver sporing av teksten i det gjeldende vinduet til filen screenlog.window_number i skjermkatalogen som standard.
ctrl+a [ kopiere Gå inn i kopieringsmodus. Ytterligere kommandoer for denne modusen er beskrevet nedenfor.
ctrl+a ] lim inn Lim inn tekst i vinduet fra standardregisteret (hvor den tidligere ble kopiert ved hjelp av kommandoen ovenfor).

I kopieringsmodus starter Screen et tekstredigeringsprogram som ligner på Vi-redigeringsprogrammet. De mest brukte redigeringskommandoene er:

  • Markørtastene flytter markøren over skjermbufferen;
  • Mellomromstasten markerer starten og slutten av kopiområdet. Ved å trykke mellomrom en gang til, kopieres den merkede teksten til standard store og små bokstaver, og Screen avslutter kopieringsmodusen.

Flere vinduer på skjermen

Som standard lar Screen bare ett logisk vindu være synlig på skjermen, men om ønskelig er det et ekstra alternativ for å dele opp terminalskjermen i horisontale områder. Dermed er det mulig å vise flere vinduer samtidig på en terminalskjerm. La oss se nærmere på kommandoene for å jobbe med skjermområder:

Figur 2 viser en skjerm med tre navngitte vinduer (Arbeid, Konfigurasjon, Logger) og en skjerm delt inn i to regioner. I den øvre regionen er Work-vinduet åpent med Vim-tekstredigering og et eksempel på skjermkonfigurasjonsfil. I den nedre regionen, konfigurasjonsvinduet med en del av den generelle konfigurasjonsfilen /etc/screenrc.

Konsolløkter

Til slutt skal vi se på en av de mest populære funksjonene til Screen.Se for deg følgende situasjon: en systemadministrator logger seg på en ekstern server mens han er hjemme, åpner flere vinduer, starter de nødvendige oppgavene, lukker deretter forbindelsen og går til arbeid. På jobb går han igjen til den samme serveren og gjenoppretter vinduene som er åpne hjemme med resultatene av oppgavene som er utført. Høres det litt fantastisk ut? Ikke i noe tilfelle! Skjermkonsolløktene er designet for å gjøre nettopp det. De lar deg koble fra den gjeldende skjermøkten med alle vinduer og kjørende applikasjoner fra terminalen og deretter koble den til igjen når som helst. Samtidig vil alle applikasjoner som kjører under Skjerm fortsette å fungere og bruke vinduene sine til å vise informasjon. I tillegg kan det være flere konsolløkter, men i denne artikkelen vil vi ikke dvele ved dette i detalj.

Tenk på kommandoene for å koble fra en konsolløkt fra en terminal:

TASTATUR TEKSTKOMMANDO BESKRIVELSE
ctrl+a d løsne Koble fra konsolløkten og la den kjøre i bakgrunnen. Samtidig skriver Screen:
ctrl+a D D pow_detach Koble fra konsolløkten, la den kjøre i bakgrunnen, og send foreldreskjermprosessen et HANGUP-signal. Når du kjører Screen fra en ekstern terminal, betyr dette at du kobler fra Screen og deretter lukker forbindelsen. Samtidig skriver Screen:
ctrl+a z utsette Koble fra konsolløkten og la den kjøre som en bakgrunnsprosess for det overordnede skallet. I dette tilfellet, i tillegg til kommandoene beskrevet nedenfor, kan standardkommandoer for å administrere bakgrunnsprosesser av skallet brukes til å gjenopprette økten.
ctrl+a ctrl + slutte Lukk alle sesjonsvinduer og avslutt skjermbildet. Det skal bemerkes at mange distribusjoner omdefinerer tastekombinasjonen for denne kommandoen, men tekstkommandoen kan brukes uansett

For å koble til en frakoblet økt, eller for å se listen over tilgjengelige økter, må du starte Screen med en av følgende brytere:

Hva blir det neste?

Skjermen har et stort antall forskjellige funksjoner og det er nesten umulig å beskrive dem alle i én artikkel, så noe av funksjonaliteten ble liggende bak kulissene. Her er noen skjermfunksjoner/innstillinger som ikke ble dekket ovenfor, og som er overlatt til uavhengig undersøkelse:

  • Kommandoer for å sette opp terminalemulering;
  • Multiuser konsoll økter;
  • Tilordning eller omdisponering av tastatursnarveier til kommandoer;
  • Hjelpealternativer for tekstkommandoer. For eksempel alternativet -t til skjermkommandoen, som brukes i eksempelkonfigurasjonsfilen;
  • Sjelden brukte kommandoer, for eksempel kommandoer som kan brukes når du setter opp lanseringen av Skjerm - ekko og dvale;
  • Miljøvariabler som kan være nyttige når du konfigurerer Screen;
  • Ytterligere starttaster Skjerm;

skjermalternativer

Screen er et program med en lang historie, det bør bemerkes at den første versjonen dukket opp i 1987. For øyeblikket legges nesten ingen nye funksjoner til Screen (en av årsakene kan være tilstedeværelsen av et stort antall av dem for øyeblikket), og i utgangspunktet er det bare feilrettinger. Hvis noen ikke liker den relative "aldringen" til Screen, eller ikke trenger et så stort antall funksjoner, kan du gå til et av følgende programmer:

  • dtach () - hovedvekten i utviklingen av dette programmet er på kompakthet. I likhet med Screen støtter den muligheten til å jobbe med konsolløkter, men har ikke andre Skjerm-funksjoner.
  • SplitVT (http://www.devolution.com/~slouken/projects/splitvt/) - lar deg dele terminalskjermen i to halvdeler og jobbe med to programskall samtidig.
  • Tmux() - Tmux bruker en klient-server-modell for å jobbe med konsolløkter.
  • Twin (http://linuz.sns.it/~max/twin/) - et forsøk på å lage et tekstbasert vindusgrensesnitt som ligner på grafiske motstykker.

161 Jane Doh

Jeg forstår at Opp/Ned vil gi deg kommandohistorikk. Men hvordan ser du på tidligere resultater ved å bla opp og ned?

Jeg har brukt Shift + Page Up / Page Down , Alt + Shift + Up / Down og Page Up / Page Down , men ingen av disse ser ut til å fungere.

Dette er Redhat Linux-boksen.

linux terminal rhel

14 svar

SHIFT+Page Up og SHIFT+Page Down. Hvis det ikke fungerer, prøv dette, og så bør det:

Gå til terminalprogrammet og sørg for at Rediger/Profilinnstillinger/Rulling/Rull tilbake/Ubegrenset
sjekket.

Den nøyaktige plasseringen av dette alternativet kan være et annet sted, men jeg ser at du bruker Redhat.

SHIFT+Page Up og SHIFT+Page Down er de riktige tastene for å fungere på virtuell konsoll, men vmware-konsollen har ikke disse terminalinnstillingene. Den virtuelle konsollen har en fast størrelse for å rulle tilbake, det ser ut som den er begrenset av størrelsen på videominnet i henhold til denne linux-dokumentasjonen for den virtuelle konsollen.

ALTERNATIV FOR LINJE-TIL-LINJE BEHANDLING

Ctrl + Shift + Pil opp eller Pil ned

I motsetning til Shift + Page Up eller Page Down , som ruller hele siden, vil dette hjelpe med jevn lineær rulling, som er akkurat det jeg var ute etter.

Et annet alternativ som kanskje allerede er installert på systemet ditt er å bruke GNU-skjold:

# Dette startskjermbildet som legger til grunnleggende vindusadministrasjon i terminalskjermen # Dette starter kopieringsmodusen du kan bruke til å rulle [ # Bruk nå pilene for å rulle # For å avslutte kopieringsmodus, gjør

Se mannskjermen for flere nyttige alternativer (flere vinduer,...)...

Det ser ikke ut til å være lett mulig: Arch Linux Wiki viser ikke måter å gjøre dette på på en konsoll (selv om det lett er mulig på en virtuell terminal).

Ctrl - b , deretter [ , så kan du bruke vanlige navigasjonstaster for å bla (som Pil opp eller PgDn). Trykk på q for å gå ut av rullemodus.