Skærmen kan ikke rulles af terminalemulatoren i ubuntu. Omvendt tekstrulning i linux-konsollen. Tilslutning til skærm


Gratis oversættelse: Alexey Dmitriev
Overførselsdato 19. november 2007

Vi taler om GNU/Linux-tekstkonsollen her - ikke det, der vises i terminalvinduet, eller X-window-manageren eller skrivebordet. Der er så meget forvirring om dette, at jeg trivielt må sige: - "Hvis du trykker på "Alt-Ctrl-F1" (eller "F2" osv.) mens du er i grafiktilstand, så kommer du ind i tekstkonsollen" .

0. Hvad handler det om?

Computeren indlæses. Du er i en tekstkonsol og ser teksten rulle hurtigt ned. Du vil se et stykke af denne tekst, der allerede er forbi. Du trykker på "Shift-PgUp" eller "Shift-PgDn", og hvis du allerede har ændret standardtastaturgenvejene (nej, nej, ikke X-tastaturlayoutet), så nogle andre taster. Med disse taster får du teksten til at bevæge sig op og ned på skærmen. Du bruger i øjeblikket scrollback-bufferen (lad os kort kalde det scrollback-bufferen).

Når du begynder at bruge denne buffer med magt og hoved, bliver to ting klart meget snart:
Kun en del af teksten, der følger med download, må returneres.
Filen "/var/log/messages" fanger meget mindre end det, du ønskede at se.

Du begynder at gennemsøge nettet, og snart dukker de foreløbige resultater op: indlæggene på scrollback i Linux er meget ældgamle og kan spores tilbage til begyndelsen af ​​90'erne. Alt før 2.6.x-kernen bør dog glemmes.

Faktisk bør du være selektiv i det, du læser: de fleste af de råd, der gælder for versioner før 2.6.x, vil sandsynligvis forvirre dig og føre dig på afveje. Tro mig, jeg har spildt meget tid på denne sag. Scrollback-adfærd er defineret i filen "vc.c", en ellers lille fil i kernekilderne, hvor "vc" står for "virtuel konsol".

Bemærk, at når du skifter konsol, går rullebufferen tabt - så den fulde mængde af denne buffer er tilgængelig i den aktuelle konsol. (Der er især meget informationsskrald her fra tiden før 2.6.x kernen).

Som standard er bufferstørrelsen 32K. Dette er nok til 4 omvendte rulletaster - hvert tryk ruller halvdelen af ​​skærmen, 25 linjer pr. skærm. Det kommer ud til omkring 50 linjer. Og du får ikke mere, selvom du har 30 eller 50 linjer pr. skærm. Jeg må sige, at 50 linjer er en lille brøkdel af, hvad der flyver hen over skærmen under lastning. I forbindelse med ovenstående rejser to spørgsmål sig:

Hvordan øger man rullebufferen?

Hvorfor fanger logfilerne ikke nogle af de meddelelser, du så under overførslen?

1. Hvordan øger man scrollback-bufferen?

Den første løsning er at øge standard (standard) bufferstørrelsen i kernekilderne og kompilere den igen. Lad mig antage, at du er lige så tilbageholdende med at gøre dette, som jeg er, og leder efter et mere fleksibelt medie.

Og der er sådan et værktøj, men det hedder "framebuffer console", for kort "fbcon". Denne enhed har en dokumentationsfil "fbcon.txt"; hvis du har installeret dokumentationen til kernen, så har du den. Se efter det et sted i "/usr/share"-grenen (jeg kan ikke give den nøjagtige sti på grund af distributionsforskelle). Du kan altid downloade den som en enkelt fil.

På dette tidspunkt undskylder jeg: vi er nødt til at gå lidt ud og tale lidt om framebufferen.

Videobufferen er en buffer mellem skærmen og videoadapteren. Dens skønhed er, at den kan manipuleres: den tillader tricks, der ikke ville fungere, hvis adapteren var tilsluttet direkte til skærmen.

Et sådant trick er relateret til rullebufferen; viser sig, at du kan "bede" videobufferen om at allokere mere hukommelse til rullebufferen. Dette opnås gennem opstartsparametrene for kernen. Først skal du bruge en framebuffer (videobuffer); Så anmoder du om en større rullebuffer.

Følgende eksempel er til GRUB, men kan nemt tilpasses til LILO. I GRUB-konfigurationsfilen - "menu.lst" - find den linje, der svarer til kernen, og derefter:
Fjern "vga=xxx", hvis den er til stede.
Tilføj muligheden "video=vesabf" eller hvad der passer til din hardware.
Tilføj muligheden "fbcon=scrollback:128".
Efter denne procedure skulle kerneparameterlinjen se nogenlunde sådan ud:
"kernel /vmlinuz root=/dev/sdb5 video=radeonfb fbcon=scrollback:128".

Spørgsmålet er, hvorfor fjerne "vga=xxx"-indstillingen? På grund af mulige konflikter med videoindstillingen. På min ATI-adapter kan jeg ikke ændre rullebufferen, hvis "vga=xxx" er angivet. Måske er dette ikke tilfældet i dit tilfælde. Hvis ovenstående muligheder virker - godt; men hvad hvis du vil øge antallet af linjer, eller indstille en mindre skrifttype på skærmen? Du gjorde det altid med "vga=xxx" muligheden - og det var det, der forsvandt. Bare rolig - det samme kan opnås ved at ændre fbcon-parametrene som beskrevet i filen "fbcon.txt" (men ikke beskrevet i denne artikel). På Ubuntu og Debian er der en mere bekvem måde: "dpkg-reconfigure console-setup". Denne kommando er også værd at bruge, fordi den også opdaterer "initrd" til dine nye indstillinger.

2. At skubbe grænser

Indstillingen "fbcon=scrollback:128" giver dig mulighed for at navigere i rullebufferen på 12-13 skærme. Det er omkring 150 linjer - ikke dårligt, men sandsynligvis ikke nok til at se alle opstartsmeddelelserne. Er det muligt at satse mere end 128, f.eks. 256? Grænsen på 128 er i "vc.c". Hvis du vil have mere, så rediger og kompilér. For mig selv besluttede jeg, at spillet ikke er stearinlyset værd.

Lige da jeg besluttede, at jeg havde nået den højeste grænse - citerer jeg fra "fbcon.txt":
fbcon=scrollback: [k]
...
Suffikset "k" er valgfrit og vil gange "værdien" med 1024.
(Suffikset "k" er valgfrit og vil gange "værdi" med 1024 gange).
Jeg skyndte mig at tjekke ... og uanset hvad forfatteren mente om dette, var han overbevist om, at 128 og 128k giver præcis det samme resultat. Standardgrænsen er 128 KB hukommelse, det er hele historien.

Bemærk endelig, at brug af den udvidede rullebuffer bruger både grafikkorthukommelse og en buffer i RAM. Hvis du er tilfreds med standard 32KB, bruger du kun videoadapterens hukommelse. I praksis mærkede jeg dog ikke den mindste opbremsning.

3. Hvad mangler der i logfilerne?

På Ubuntu og Debian og andre distributioner gemmes alle systemmeddelelser i filen "/var/log/messages". Dette gælder, selvom logningsdæmonen ikke er den gamle "syslog", men "syslog-ng" ("ng": "ny generation").

I begge tilfælde kan du se beskederne ved at skrive "dmesg" på kommandolinjen. Det hjælper ikke: du så tydeligt beskeder under indlæsning, som ikke er i outputtet af "dmesg"-kommandoen. Hvordan det?

Dette er en funktion, ikke en fejl! Meddelelserne, der logges til filen, kommer fra forskellige OS-undersystemer. De undersystemer, der udsender beskeder til logfilen, omtales i syslog-terminologien som "faciliteter" ("midler" eller "tjenester"), der er kun 8 af dem. Under download-processen fungerer programmer og scripts, som måske ikke hører til nogen af ​​de 8 "værktøjer". Vi ser deres beskeder rulle hen over skærmen, men intet vil blive registreret i logfilen!

For eksempel vil du ikke se beskeder fra programmerne "loadkeys" (openSUSE) eller "consolechars" (Ubuntu og Debian), når du indlæser et tastaturlayout under systemstart. Et andet eksempel: Når du bruger en konsolbaseret teksteditor, kan du rulle displayet bagud (inklusive farver), mens du bruger rullebufferen. Men det, som redaktøren producerer, kommer aldrig ind i nogen systemprotokol. Årsagen er selvfølgelig, at hverken "loadkeys", eller "consolechars" eller editoren hører til nogen af ​​de 8 "værktøjer".

Er det muligt at ændre situationen? Selvfølgelig - "bare" genskabe og kompilere de applikationer, som du vil logge. Tilføj eller omskriv opstartsscripts. Eller få systemet til at fange beskeder uden for de 8 system "værktøjer".

Jeg vil vædde på, at du ikke gør det. Og jeg kender endda dit sandsynlige svar:
"Der mangler ikke noget i mine logfiler." Ja selvfølgelig...

Hvis du kunne lide denne artikel, så del den med dine venner:

Emnet for nyttige metoder til at arbejde i Linux-terminalen er uudtømmeligt. Det ser ud til, at alt er arrangeret meget enkelt: en shell-prompt og kommandoer indtastet fra tastaturet. Men i denne enkelthed ligger en afgrund af ikke-oplagte, men nyttige muligheder. Det er derfor, vi regelmæssigt udgiver materialer om funktionerne ved at arbejde i Linux-kommandolinjen. Især vil det i dag være en oversættelse af en artikel, hvis forfatter brænder for at spare tid ved at øge produktiviteten.

Hvis du er interesseret i at arbejde på Linux-kommandolinjen - her er nogle af vores materialer om dette emne:

  • [ +114 ] Mest nyttige Linux-kommandolinjeteknikker
  • [ +70 ] 10 Linux-terminaltricks, som få mennesker kender til
  • [+65 ] Overraskende nyttigt værktøj: lsof
  • [ +32 ] Linux: omdirigering
  • [ +29 ] PDF-version af artikler om Bash-scripts

Linux kommandolinje tricks og tidsbesparelser

Har du nogensinde set en kollega bruge nogle simple Linux-kommandoer til at løse problemer, der tager dig flere linjer at løse? Det må være, at når noget som dette skete, var alt, hvad du kunne sige til dig selv, "Wow! Jeg vidste ikke, at det kunne gøres så nemt."

I denne artikel vil jeg vise dig nogle professionelle Linux-kommandolinjetricks, der vil spare dig for en masse tid og i nogle tilfælde slippe af med dårligt humør. Ikke nok med det, dine venner eller kolleger vil sige: "Nå, wow!", ser på dig. Disse tricks vil også hjælpe dig med at øge din personlige produktivitet, da du bliver nødt til at skrive færre kommandoer og endda foretage færre museklik.

Dette betyder ikke, at disse Linux-tip kun er for begyndere. Det er meget muligt, at selv erfarne brugere vil finde noget nyttigt her, som de ikke vidste om på trods af at de har brugt Linux i mange år. Linux læres af erfaring. Det er her din egen erfaring og andre menneskers erfaringer kommer i spil.

Før vi begynder, vil jeg gerne bemærke, at nogle af metoderne, der præsenteres her, afhænger af konfigurationen af ​​skallen.

0. Autofuldførelseskommandoer ved hjælp af tabulatortasten

Jeg starter med noget meget indlysende, men meget vigtigt: autofuldførelseskommandoer ved hjælp af Tab-tasten.

Når du begynder at skrive i Linux-terminalen, kan du trykke på Tab-tasten, som viser et værktøjstip, der indeholder et sæt muligheder for at fortsætte med at skrive, begyndende med de tegn, du lige har skrevet.

For eksempel, hvis du vil kopiere en fil med navnet my_best_file_1.txt , kan du blot skrive cp m og trykke på Tab for at se mulighederne for at fortsætte kommandoen.


Brug af tabulatortasten til automatisk at fuldføre input

Tabulatortasten kan også bruges til autofuldførelse af kommandoer.

1. Skift til den sidste arbejdsmappe

Forestil dig, at du arbejdede i en mappe, der ikke er så nem at komme til, og derefter flyttede til en anden mappe, der ligger et helt andet sted. Så indså du, at du skal vende tilbage til den forrige mappe. I dette tilfælde skal du blot bruge følgende kommando:

CD-
Det vil tillade dig at være i den sidste arbejdsmappe. Nu, i situationer som denne, behøver du ikke længere at indtaste lange stier eller bruge copy and paste.


Nemt at skifte mellem mapper

2. Vend tilbage til hjemmebiblioteket

Denne tilgang er også meget indlysende. Du kan bruge følgende kommando til at vende tilbage til din hjemmemappe hvor som helst:

CD~
Du kan dog vende tilbage til din hjemmemappe endnu hurtigere med cd-kommandoen.

I de fleste moderne Linux-distributioner er skallen prækonfigureret til at behandle cd-kommandoen på denne måde. Dette vil spare dig for et par tastetryk på dit tastatur.


Den hurtigste måde at skifte til din hjemmemappe

3. Visning af indholdet af en mappe

Du undrer dig måske over, hvad der er det fine ved at bruge en kommando til at liste indholdet af en mappe. Alle ved, at ls -l kommandoen tjener dette formål.

Men det er hele pointen. Næsten alle bruger kommandoen ls -l til at liste indholdet af mapper, mens det samme kan gøres med følgende kommando:

Ll
Funktionaliteten af ​​denne kommando afhænger af Linux-distributionen og din shell-opsætning, men det er højst sandsynligt, at du vil være i stand til at bruge den på de fleste distributioner.


Brug af ll-kommandoen i stedet for ls -l-kommandoen

4. Kald flere kommandoer på én linje

Forestil dig, at du skal udføre flere kommandoer i rækkefølge. Sandsynligvis indtaster du én kommando, venter på, at den er fuldført, og så indtaster du den næste?

I en sådan situation vil en kommandoseparator være nyttig; (semikolon). Med denne tilgang kan du indtaste flere kommandoer på samme linje. I dette tilfælde, i modsætning til den sædvanlige input af kommandoer, for at udføre den næste kommando, behøver du ikke vente på færdiggørelsen af ​​den forrige.

Kommando_1; kommando_2; kommando_3

5. Udførelse af flere kommandoer på én linje og en betingelse for vellykket gennemførelse af den foregående kommando

Vi har lige set på en måde at kalde flere kommandoer på en enkelt linje. Dette sparer tid. Men hvad hvis du vil sige, når du kalder to kommandoer, så den næste kommando kun udføres, hvis den forrige fuldfører uden fejl?

Forestil dig, at du vil bygge koden og så, hvis opbygningen lykkedes, kalder make ?

I en sådan situation kan du bruge afgrænsningstegnet && . Denne afgrænsning sikrer, at den næste kommando kun vil blive udført, hvis den forrige lykkes.

Kommando_1 && kommando_2
Her er et godt eksempel på brug af && :

sudo apt opdatering && sudo apt opgradering

6. Nem søgning og brug af tidligere indtastede kommandoer

Forestil dig, at du for et par minutter eller et par timer siden indtastede en lang kommando, og du skal bruge denne kommando igen. Desuden er problemet, at du ikke kan huske præcis denne kommando.

I en sådan situation vil en omvendt søgning redde dig. Denne teknik giver dig mulighed for at søge i kommandohistorikken efter et nøgleord. Her er det nok at bruge tastekombinationen Ctrl + R til at starte en omvendt søgning og indtaste noget relateret til kommandoen. Systemet vil gennemse historikken for kommandoer og vise de kommandoer, der matcher den indtastede forespørgsel.

Ctrl+R søgeord
Som standard vil kun ét resultat blive vist. For at se flere resultater, der matcher din forespørgsel, skal du bruge tastaturgenvejen Ctrl + R igen og igen. Tryk på Ctrl + C for at afslutte omvendt opslagstilstand.


Omvendt kommandohistoriksøgning

Bemærk, at i nogle Bash-skaller kan du bruge Page Up- og Page Down-tasterne til at bladre gennem søgeresultaterne.

7. Oplåsning af terminalen efter at have trykket på Ctrl + S ved et uheld

Du er måske vant til at bruge tastaturgenvejen Ctrl + S til at gemme filer. Men hvis du trykker på disse taster i Linux-terminalen, låser du den.

Hvis du tidligere, for at rette op på situationen, blev tvunget til at lukke og genstarte terminalen - nu kan du trække vejret roligt, du behøver ikke at gøre dette mere. For at bringe terminalen til en fungerende tilstand, skal du blot bruge tastekombinationen Ctrl + Q .

8. Flyt til begyndelsen eller slutningen af ​​en linje

Forestil dig, at du indtaster en lang kommando og et sted i midten indser du, at du skal ændre noget i begyndelsen af ​​den. Du bruger sandsynligvis piletasterne til først at flytte til begyndelsen af ​​linjen og derefter tilbage til slutningen.

Selvfølgelig kan du i en sådan situation bruge Home- og End-tasterne, men alternativt kan du ved at bruge tastekombinationen Ctrl + A gå til begyndelsen af ​​linjen og bruge kombinationen Ctrl + E - til slutningen.


Flyt til begyndelsen eller slutningen af ​​en linje

Jeg finder denne måde mere praktisk end at bruge Home- og End-tasterne, især når jeg arbejder på en bærbar computer.

9. Læs logfiler i realtid

Når du har brug for at parse logfiler, som en kørende applikation skriver til under parsing, kan du bruge tail-kommandoen med -f-indstillingen.

Tail -f path_to_log
Alternativt kan du bruge grep-kommandoen i sin normale form til kun at vise de linjer, du er interesseret i:

Tail -f path_to_log | grep søgeterm
Du kan også bruge F-muligheden her. Dette vil få hale-værktøjet til at fortsætte med at køre, selvom logfilen, der vises, slettes. Med denne fremgangsmåde, hvis denne fil oprettes igen, vil tail fortsætte med at udskrive data fra den til skærmen.

10. Læsning af komprimerede logfiler uden at dekomprimere dem

Serverlogfiler komprimeres normalt med gzip for at spare diskplads. Dette kan føre til nogle besvær, når udviklere eller systemadministratorer analyserer logfiler. Du skal muligvis bruge scp-kommandoen til at kopiere filen til dit lokale bibliotek og derefter udpakke filen fra arkivet for at se den, da du muligvis ikke har skrivetilladelse til, hvor filen du er interesseret i er gemt.

Her kommer vi til hjælp for en gruppe kommandoer, hvis navn begynder med bogstavet "z". Disse kommandoer er et alternativ til de sædvanlige kommandoer, der bruges til at arbejde med logfiler. Blandt dem er less , cat , grep og andre.

Så ved at bruge kommandoerne zless , zcat , zgrep og lignende, behøver du ikke eksplicit at dekomprimere komprimerede filer. Detaljer om disse kommandoer kan ses.

Forresten, da jeg fortalte en kollega om disse "hemmelige" kommandoer, fik jeg en kop kaffe.

11. Brug af den mindre kommando til at læse filer

Hvis du har brug for at se en fil, især en stor, kan du prøve cat , men det er meget bedre at se andre steder. Faktum er, at kat vil vise hele filen på skærmen, hvilket ikke er så praktisk.

Du kan bruge en editor som Vi eller Vim i en terminal til at se filer, men hvis du bare skal læse en fil, er den mindre kommando praktisk.

Mindre path_to_file
Under en session med mindre kan du søge efter de ønskede fragmenter af tekst ved hjælp af nøgleord, navigere gennem sider, vise data med linjenumre og så videre.

12. Genbrug det sidste element fra den forrige kommando med !$

I mange situationer er det meget nyttigt at kunne bruge argumentet fra den forrige kommando.

Antag, at du skal oprette en mappe og derefter gå til den. Her kan du bruge muligheden !$ ved at indtaste jump-kommandoen efter kommandoen til oprettelse af mappe.


Brug!$ til at bruge sidste kommando-argument

Endnu bedre, det samme gøres ved at bruge tastaturgenvejen Alt +. (prik). Prikken kan bruges flere gange til at gentage indstillingerne for den sidste kommando.

13. Brug af den forrige kommando i den aktuelle kommando med!!

Via!! du kan kalde hele den forrige kommando. Dette trick er især nyttigt, når du skal udføre en kommando, og det viser sig, at du har brug for superbrugerrettigheder for at udføre den. For eksempel viser figuren nedenfor en situation, hvor sudo !! giver dig mulighed for at spare en masse tid.


Udnytte!!! at erstatte den sidste kommando som et argument

14. Brug af aliaser til at rette skrivefejl

Du er måske allerede bekendt med alias-kommandoen. Det kan bruges til at rette fejl i indtastede kommandoer.

For eksempel kan det ske, at du ofte skriver gerp i stedet for grep . Hvis du ikke kan stoppe den dårlige vane, skal du tilføje et alias til din bashrc-fil som dette:

Alias ​​​​gerp=grep
Nu behøver du ikke at indtaste denne kommando igen, hvis du indtaster dens navn forkert.

15. Kopier og indsæt i Linux-terminal

Dette råd er noget tvetydigt, da det afhænger af Linux-distributionen og af terminalen.

Men normalt kan kopierings- og indsæt-kommandoerne fremkaldes sådan:

  • Fremhæv den tekst, du vil kopiere, og højreklik for at indsætte den (fungerer i Putty og andre Windows SSH-klienter).
  • Fremhæv den tekst, du vil kopiere, og klik derefter på den midterste museknap (rullehjul) for at indsætte den.
  • Brug tastaturgenvejene Ctrl + Shift + C for at kopiere, og Ctrl + Shift + V for at indsætte.

16. Afslut et team eller en proces

Måske er det, jeg vil rådgive her, ret indlysende, men jeg fortæller dig om det alligevel. Hvis en kommando kører i forgrunden, og du vil afslutte den, kan du trykke på Ctrl + C for at stoppe den.

17. Brug af yes-kommandoen til at automatisere interaktive kommandoer eller scripts

Hvis du skal arbejde med nogle kommandoer eller scripts, der involverer brugerinteraktion, og du ved, at du vil skrive Y for hvert spørgsmål i programmet, kan du automatisere denne proces med yes-kommandoen. Det gøres sådan her:

Ja | kommando_eller_script

18. Rydning af indholdet af en fil uden at slette selve filen

Hvis du vil rydde indholdet af en tekstfil uden at slette selve filen, kan du bruge følgende kommando:

> filnavn

19. At finde ud af, om en mappe indeholder filer, der indeholder bestemt tekst

Linux-kommandolinjen understøtter mange måder at finde information på. Men hvis du bare vil finde ud af, om der er filer i en mappe, der indeholder bestemt tekst, kan du bruge denne kommando:

Grep -Pri Search_Term path_to_directory
Jeg råder dog alle, der har brug for at søge på Linux, at få hovedet omkring find-kommandoen.

20. Ring til hjælp for enhver kommando

Jeg vil afslutte dette materiale med et meget åbenlyst, men ikke desto mindre meget vigtigt "trick", som er at kalde hjælpen til et kommando- eller kommandolinjeværktøj.

Næsten alle kommandolinjeværktøjer indeholder hjælpeoplysninger, der afslører de særlige kendetegn ved deres brug. Normalt hjælper læsehjælp dig med at forstå det grundlæggende i en kommando. Du kan ringe til hjælp sådan her:

Command_tool --hjælp

Jeg har bevidst ikke inkluderet kommandoer som fuck i dette indlæg, fordi de ikke er den slags standardting, du finder bogstaveligt talt overalt. Det, jeg har beskrevet her, kan være nyttigt til at arbejde med næsten alle Linux-distributioner og kommandolinjeskaller uden at skulle installere nye programmer.

Screen er et meget praktisk program, hvis du ofte arbejder i konsollen ved at oprette forbindelse til serveren via SSH. I dette tilfælde skærmen giver dig mulighed for at beholde flere forskellige skærme i én konsol, og nemt skifte mellem dem.

Skærm giver dig mulighed for at afbryde forbindelsen til SSH, mens du gemmer opgaver, der kører på en ekstern server.

For at installere på Ubuntu skal du køre kommandoen

$ sudo apt-get installscreen

Derefter skal du køre skærmen:

$ skærm

Efter start vil du se enten en kommandolinjeprompt eller en "velkomstskærm" ved at trykke på MELLEMRUM eller ENTER, hvor du også bliver ført til skallen. I dette tilfælde vil alle kommandoer blive lanceret allerede "inde i" skærmen.

For at forlade skærmen (afslut, ikke afbryde), er det nok at forlade alle skaller åbne i den, eller alternativt trykke på tastekombinationen Ctl-a \ og svare "y" på spørgsmålet "vil du virkelig at forlade".

Du kan koble fra den aktuelle skærm uden at lukke eller afslutte sessionen ved at trykke på Ctrl-a d.

Tilslutning til skærm

Hvis der allerede kører en skærmsession på maskinen, og du vil oprette forbindelse til den, så

  1. hvis der kun er én session, er en simpel kommando nok: $ screen –x
  2. hvis der er flere sessioner, så: kan du se listen over kørende skærme med screen -ls kommandoen: $ screen -ls Der er skærme på: 2762.pts-0.debian (detached) 2743.pts-0.debian ( Fritstående) 2 Stikkontakter i /var/run/screen/S-diesel.

    Vi vælger den skærm, vi har brug for, og slutter os til den:

    Skærm -x 2762.pts-0.debian

    Navnene på sessionerne er som standard ikke særlig informative - bare procesnumre, hvis du vil køre og bruge flere skærmsessioner til forskellige opgaver, kan du finde på mere fornuftige navne. Vi finder på et navn, så starter vi en ny skærm som denne:

    $ skærm -S "job1"

    hvor job1 er navnet på vores "navngivne" session. Nu i -ls vil vi se meget klarere:

    $ screen -ls Der er skærmbilleder på: 2762.pts-0.debian (detached) 2795.job1 (detached) 2743.pts-0.debian (detached) 3 stik i /var/run/screen/S-diesel.

    og vi kan oprette forbindelse til job1-sessionen ved blot at angive dens navn:

    $ skærm -x job1

Skift mellem skærme

Som du allerede har forstået, gemmes sessioner, selv når du er afbrudt fra serveren, og alt, hvad der kører i dem, bliver ved med at blive udført. Dog er mulighederne for skærm ikke begrænset til dette. Nogle gange, når jeg arbejder via ssh, vil jeg virkelig gerne have flere terminaler åbne på én gang, mens det er en nederlag at forbinde flere gange - især hvis du skal oprette forbindelse gennem flere servere. Skærm kan også hjælpe med dette. Bare tryk på Ctrl - en c og en anden skal åbnes. Du kan flytte mellem åbne skaller enten gennem Ctrl - a<Цифра>, hvor<Цифра>- åbent skalnummer, startende fra nul, eller Ctrl - a n / Ctrl - a p - fremad baglæns. Du kan få en liste over åbne "vinduer" - konsoller (og skifte til den ønskede), ved at bruge tastekombinationen Ctrl - a "; for at give et normalt navn (og ikke bare kedeligt "bash") for en tråd i vinduet, skal du gå til det og trykke på Ctrl - en A (forskel på store og små bogstaver), og indtast derefter et navn ved prompten, der vises.

Overvågning af kommandoudførelse

Hvis du har flere vinduer åbne, kan det være nyttigt at overvåge aktiviteten i et af dem. For eksempel, hvis du kører en "langvarig" kommando og er interesseret i at vide, hvornår den er færdig. Vi går til vinduet med denne kommando, tryk Ctrl - a m, vi ser en inskription som denne: "Vindue 0 (bash) overvåges nu for al aktivitet". Når noget ændrer sig i et vindue, vil skærmen bippe, og vindueslisten vil vise et "@" efter nummeret.

Skærmen ruller i skærmen

For at se outputtet af en kommando, der er gået over vinduesgrænserne, skal du trykke Ctrl-a [

Dette skifter skærmen til kopitilstand. For at forlade denne tilstand skal du blot trykke på Esc.

skærmkonfiguration

Skærm konfigureres ved hjælp af filen ~/.screenrc i dit hjemmebibliotek. Du kan for eksempel skrive der:

Billedtekst altid "%(= 45)%(+bw)Skærm: %n | %h %=%t %c" hardstatus always lastline "%-Lw%(= BW)%50>%n%f* %t%( -)%+Lw%<"

Dette vil give dig en alle tiders synlig liste over åbne vinduer og andre nyttige oplysninger nederst på skærmen.

Når Screen startes, udføres som standard kommandoer fra filen /etc/screenrc og .screenrc-filen fra brugerens hjemmemappe. Mange af de kommandoer, der kan bruges i konfigurationsfiler, er blevet diskuteret i tabellerne ovenfor i feltet "Tekstkommando". Nedenfor er et eksempel på skærmkonfiguration fra en .screenrc-fil:

# Deaktiver visning af licensoplysninger ved opstart Skærm startup_message off # Åbn en shell for at køre chdir skærm -t Arbejde # Åbn en shell for at administrere konfiguration chdir /etc screen -t Konfiguration # Åbn en shell for at se logfiler chdir /var/log screen -t Logs # Vælg første vindue efter start vælg 0

Denne ret enkle konfigurationsfil åbner tre vinduer med navnene henholdsvis Work, Configuration, Logs i brugerens hjemmemappe, i /etc-mappen og i /var/log-mappen. Efter lanceringen vil det første vindue med navnet Work være på skærmen. Figur 1 viser et eksempel på, hvordan Screen fungerer med denne konfigurationsfil.

Fuldførelsesskærm

Hvis skærmsessionen af ​​en eller anden grund holder op med at reagere, kan du afslutte den. For at gøre dette skal du oprette forbindelse til den ønskede session, derefter trykke på Ctrl - a og indtaste kommandoen ":quit".

Skærm vil afslutte denne session, og tvangslukke alle vinduer.

Arbejde med skærm

En af Screens hovedfunktioner er oprettelsen og styringen af ​​flere konsolvinduer eller tekstbaserede applikationer i et enkelt terminalvindue. På én gang kan kun et af vinduerne være på terminalskærmen (der kan kun være flere af dem, hvis de deler terminalskærmen op i dele). Skærm giver dig mulighed for hurtigt at skifte mellem vinduer, gemme og senere vende tilbage til en tekstsession og dele den med andre brugere. Derudover giver Screen dig mulighed for at give vinduer titler, holde styr på aktiviteten i hvert vindue og dele indholdet af vinduer ved at kopiere og indsætte. Og derudover giver Screen dig mulighed for at omdanne nøgler, administrere terminalemuleringsindstillinger og udføre mange andre små tekstboksopgaver, som måske ikke er et konstant behov, men som kan hjælpe med administrativt arbejde på bestemte tidspunkter.

Figuren viser en skærm med tre navngivne vinduer (Work, Configuration, Logs) og teksteditoren Vim åbnet i den, med et eksempel på en konfigurationsfil Screen.

Første start

Skærm kan startes med skærmkommandoen, men tjek først, om skærm er installeret på dit system med følgende kommando:

$ hvilken skærm /usr/bin/skærm

Hvis kommandoen returnerer stien som i eksemplet ovenfor, kan du begynde at bruge den med det samme, ellers kan Screen installeres ved hjælp af standardpakkesupportværktøjerne i dit operativsystem eller downloades fra den officielle hjemmeside http://www.gnu. org/software/skærm/ .

Nu kan vi køre Screen ved blot at skrive:

$ skærm

Efter lanceringen kan oplysninger om version og licens vises på skærmen (når vi overvejer konfigurationen, vil vi overveje, hvordan du kan annullere visningen af ​​denne meddelelse), og i dette tilfælde skal du trykke på "mellemrum" eller "Enter"-tasten , hvorefter vi ved første øjekast kommer ind på den sædvanlige , en tekstindpakning. Det skal bemærkes, at du på kommandolinjen straks kan angive en kommando for at starte en specifik applikation, for eksempel for at starte toppen, skal du skrive:

$ skærm top

Okay, nu kører Screen, men ved første øjekast er der ingen eksterne ændringer - vi kan arbejde i en kørende shell, eller bruge top. Tricket er, at under kørsel sender Screen alle tastetryk direkte til applikationen, men (ved at default) efterlader sig selv kontrolkommandoer, der begynder med tastekombinationen Ctrl + a .

Denne kontroltastkombination kan ændres gennem konfigurationsfilerne (som vi vil diskutere nedenfor), men i alle eksempler vil kun standardkonfigurationen blive taget i betragtning. Således består alle skærmtastaturkommandoer af to tastkombinationer - kontroltasten Ctrl + a og selve tasten, eller en tastkombination, der repræsenterer kommandoen. Næsten hver kommando har også sin tekstmodstykke, som kan udføres enten gennem en konfigurationsfil eller ved at køre følgende kommando:

I dette tilfælde skal vi udføre to tastaturgenveje ved først at trykke på Ctrl + a og derefter kolon-tasten. I dette tilfælde vil Screen vise en kommandoprompt i form af et kolon nederst på skærmen. Den samme kommando, som vi lige har kørt med en tastaturgenvej, kan køres gennem konfigurationsfilen ved hjælp af kolon-tekstkommandoen, som for eksempel kan være nødvendig for at vise en kommandoprompt ved opstart, eller ommap den tastekombination, der forårsager denne prompt. Nedenfor, som i eksemplet ovenfor, vil jeg for hver tastekombination skrive de nøgleord, der svarer til dem, som kan bruges i konfigurationsfiler eller indtastes ved hjælp af Ctrl + a og:.

Et legitimt spørgsmål kan opstå her - hvad nu hvis applikationen skal direkte passere tastekombinationen Ctrl + a , som allerede bruges i Screen som en servicenøgle? For eksempel bruges den samme kombination af readline-komtil at springe til begyndelsen af ​​en linje. I dette tilfælde giver Screen følgende kommando:

Vinduesstyring

I det forrige afsnit lærte vi at køre Screen og lærte den grundlæggende skabelon for alle tastaturkommandoer. Det er tid til at beskæftige sig med kommandoerne til styring af vinduer. Når Screen starter, opretter den et enkelt vindue (medmindre konfigurationen specificerer at oprette flere vinduer på én gang) og tildeler det nummeret 0. Et nyt kommandoskalvindue kan oprettes med kommandoen nedenfor:

TASTATUR TEKSTKOMMANDO BESKRIVELSE
ctrl+a c skærmen Opret et nyt vindue

I dette tilfælde vil Screen oprette et nyt vindue og tildele det det næste nummer i rækkefølge. I vores tilfælde vil det nye vindue være vindue nummer 1.

Nu har vi allerede to tekstvinduer, hvoraf det nyoprettede vindue nummer 1 er det nuværende, og vindue nummer 0 er i baggrunden. Men det skal bemærkes, at selvom vinduet er i baggrunden, kan det opfatte outputtet fra applikationen, der kører i det, som om det var det nuværende. For eksempel kunne vi starte en proces i vindue 0, der udsender yderligere information med regelmæssige intervaller (det kunne f.eks. være kommandoen tail -f) og derefter skifte til vindue 1 for at arbejde i en teksteditor. Efter et stykke tid, hvis vi vil se, hvad der sker i vindue 0, kan vi skifte til dette vindue og se alt output fra processen, der kører der. Du kan derefter skifte tilbage til redigeringsvinduet.

I det foregående afsnit beskrev jeg et eksempel med skift mellem vinduer, men sagde endnu ikke, hvilke kommandoer der bruges til dette. Lad os se nærmere på de mest almindeligt anvendte kommandoer til styring af vinduer:

TASTATUR TEKSTKOMMANDO BESKRIVELSE
ctrl+a w vinduer Viser numrene og titlerne på alle vinduer på nederste linje af skærmen
ctrl+a « vinduesliste Viser en interaktiv liste over numre og titler på alle vinduer, hvorfra du kan vælge et vindue at skifte fra
ctrl+a vinduesnummer Vælg Vælg vindue efter nummer. For eksempel gør kommandoen Ctrl + a og 0 det aktuelle vindue til 0
Ctrl+a n Næste Skift til det næste vindue i rækkefølge, eller til det første vindue, hvis vi var i det sidste vindue
ctrl+a s forrige Skift til det forrige vindue i rækkefølge, eller til det sidste vindue, hvis vi var i det første vindue
ctrl+a Vælg Vis en prompt for at indtaste vinduesnummeret for at skifte
ctrl+a ctrl+a Andet Skift til sidst brugte vindue
ctrl+a N nummer Vis det aktuelle vindues nummer og titel
ctrl+a EN titel Indstil titlen på det aktuelle vindue
ctrl+a k dræbe Tving til at lukke vinduet, for eksempel, hvis applikationen ikke kan lukkes på den sædvanlige måde

Når et af vinduerne lukkes, ændres antallet af andre vinduer ikke, og der opstår "huller" i nummereringen, som senere kan udfyldes med nye vinduer Selvom Screen har en kommando til at ændre vinduesnummeret, regnes det ikke med her og efterlades til selvstændig undersøgelse. Hvis alle vinduer er lukkede, lukkes Screen og viser en meddelelse:

Arbejd med tekst

Ovenfor lærte vi, hvordan man starter Screen og administrerer vinduer - opret dem, skift fra vindue til vindue, tildeler navne og luk dem. Lad os nu se på at arbejde med indholdet af vinduer - kopiere og indsætte tekstindholdet i et vindue i et andet, overvåge vinduer, gemme en tekstkopi af skærmen og andre lignende opgaver:

TASTATUR TEKSTKOMMANDO BESKRIVELSE
ctrl+a M overvåge Aktiver/deaktiver aktivitetsovervågning for det aktuelle vindue. Når overvågning er aktiveret og tekst vises i et vindue i baggrunden, vises information om aktivitet i servicelinjen.
stilhed Aktiver/deaktiver inaktivitetsovervågning for det aktuelle vindue. Når overvågning er aktiveret, og der ikke vises nogen tekst i et vindue, der er i baggrunden i en vis periode, vises information om den manglende aktivitet i servicelinjen.
ctrl+a h papirkopi Skriv et tekstbillede af det aktuelle vindue til filen hardcopy.window_number i mappen Screen som standard.
ctrl+a H log Aktiver/deaktiver sporing af teksten i det aktuelle vindue til filen screenlog.window_number i mappen Sccreen som standard.
ctrl+a [ kopi Gå ind i kopitilstand. Yderligere kommandoer til denne tilstand er beskrevet nedenfor.
ctrl+a ] sæt ind Indsæt tekst i vinduet fra standardregistret (hvor den tidligere blev kopieret ved hjælp af kommandoen ovenfor).

I kopitilstand starter Screen en teksteditor, der ligner Vi-editoren. De mest brugte editor-kommandoer er:

  • Markørtasterne flytter markøren hen over skærmbufferen;
  • Mellemrumstasten markerer starten og slutningen af ​​kopiområdet. Hvis du trykker på mellemrumstasten en anden gang, kopieres den markerede tekst til standard store og små bogstaver, og Screen afslutter sin kopitilstand;

Flere vinduer på skærmen

Som standard efterlader Screen kun ét logisk vindue synligt på skærmen, men hvis det ønskes, er der en ekstra mulighed for at opdele terminalskærmen i vandrette områder. Det er således muligt at vise flere vinduer på én gang på en terminalskærm. Lad os se nærmere på kommandoerne til at arbejde med skærmområder:

Figur 2 viser en skærm med tre navngivne vinduer (Work, Configuration, Logs) og en skærm opdelt i to regioner. I det øverste område er vinduet Work åbent med Vim-teksteditoren og et eksempel på en skærmkonfigurationsfil. I det nederste område, konfigurationsvinduet med en del af den generelle konfigurationsfil /etc/screenrc.

Konsol sessioner

Til sidst vil vi se på en af ​​de mest populære funktioner i Screen.Forstil dig følgende situation: en systemadministrator logger på en ekstern server, mens han er hjemme, åbner flere vinduer, starter de nødvendige opgaver, lukker derefter forbindelsen og går til arbejde. På arbejdet går han igen til den samme server og gendanner vinduerne åbne derhjemme med resultaterne af de udførte opgaver. Lyder det lidt fantastisk? I intet tilfælde! Skærmkonsolsessionerne er designet til at gøre netop det. De giver dig mulighed for at afbryde forbindelsen til den aktuelle skærmsession med alle vinduer og kørende programmer fra terminalen og derefter tilslutte den igen til enhver tid. Samtidig vil alle programmer, der kører under Screen, fortsætte med at arbejde og bruge deres vinduer til at vise information. Derudover kan der være flere konsolsessioner, men i denne artikel vil vi ikke dvæle ved dette i detaljer.

Overvej kommandoerne til at afbryde en konsolsession fra en terminal:

TASTATUR TEKSTKOMMANDO BESKRIVELSE
ctrl+a d løsrive Afmonter konsolsessionen, og lad den køre i baggrunden. Samtidig skriver Screen:
ctrl+a D D pow_detach Afmonter konsolsessionen, lad den køre i baggrunden, og send et HANGUP-signal til forældreskærmen. Når du kører Screen fra en fjernterminal, betyder det at afbryde Screen og derefter lukke forbindelsen. Samtidig skriver Screen:
ctrl+a z suspendere Afmonter konsolsessionen, og lad den køre som en baggrundsproces for forældreskallen. I dette tilfælde, ud over kommandoerne beskrevet nedenfor, kan standardkommandoer til styring af baggrundsprocesser for skallen bruges til at gendanne sessionen.
ctrl+a ctrl + Afslut Luk alle sessionsvinduer og afslut skærmen. Det skal bemærkes, at mange distributioner omdefinerer tastekombinationen for denne kommando, men tekstkommandoen kan bruges alligevel

For at tilslutte til en afbrudt session igen, eller for at se listen over tilgængelige sessioner, skal du starte Screen med en af ​​følgende kontakter:

Hvad er det næste?

Screen har et stort antal forskellige funktioner, og det er næsten umuligt at beskrive dem alle i én artikel, så noget af funktionaliteten blev efterladt bag kulisserne. Her er nogle skærmfunktioner/indstillinger, der ikke blev dækket ovenfor og er overladt til uafhængig undersøgelse:

  • Kommandoer til opsætning af terminalemulering;
  • Multibruger konsol sessioner;
  • Tildeling eller omfordeling af tastaturgenveje til kommandoer;
  • Hjælpemuligheder for tekstkommandoer. For eksempel muligheden -t for skærmkommandoen, som bruges i eksempelkonfigurationsfilen;
  • Sjældent brugte kommandoer, for eksempel kommandoer, der kan bruges ved opsætning af lanceringen af ​​Screen - ekko og dvale;
  • Miljøvariabler, der kan være nyttige ved konfiguration af Screen;
  • Yderligere starttaster Skærm;

skærmalternativer

Screen er et program med en lang historie, det skal bemærkes, at den første version dukkede op i 1987. I øjeblikket tilføjes næsten ingen nye funktioner til Screen (en af ​​årsagerne kan være tilstedeværelsen af ​​et stort antal af dem i øjeblikket), og i bund og grund laves der kun fejlrettelser. Hvis nogen ikke kan lide den relative "alderdom" af Screen, eller ikke har brug for et så stort antal funktioner, kan du henvende dig til et af følgende programmer:

  • dtach () - hovedvægten i udviklingen af ​​dette program er på kompakthed. I lighed med Screen understøtter den muligheden for at arbejde med konsolsessioner, men den har ikke andre skærmfunktioner.
  • SplitVT (http://www.devolution.com/~slouken/projects/splitvt/) - giver dig mulighed for at opdele terminalskærmen i to halvdele og arbejde med to programskaller på én gang.
  • Tmux() - Tmux bruger en klient-servermodel til at arbejde med konsolsessioner.
  • Twin (http://linuz.sns.it/~max/twin/) - et forsøg på at skabe en tekstbaseret vinduesgrænseflade, der ligner grafiske modstykker.

161 Jane Doh

Jeg forstår, at Op/Ned vil give dig kommandohistorik. Men hvordan ser du på tidligere resultater ved at scrolle op og ned?

Jeg har brugt Shift + Page Up / Page Down , Alt + Shift + Up / Down og Page Up / Page Down , men ingen af ​​disse virker tilsyneladende.

Dette er Redhat Linux-boks.

linux terminal rhel

14 svar

SHIFT+Page Up og SHIFT+Page Down. Hvis det ikke virker, prøv dette, og så skal det:

Gå til dit terminalprogram og sørg for at Rediger/Profilpræferencer/Rulning/Rul tilbage/Ubegrænset
kontrolleret.

Den nøjagtige placering af denne mulighed kan være et andet sted, men jeg kan se, at du bruger Redhat.

SHIFT+Page Up og SHIFT+Page Down er de korrekte taster til at fungere på virtuel konsol, men vmware-konsollen har ikke disse terminalindstillinger. Den virtuelle konsol har en fast størrelse til at rulle tilbage, det ser ud til, at den er begrænset af størrelsen på videohukommelsen i henhold til denne virtuelle konsol linux scrollback dokumentation.

ALTERNATIV TIL LINJE-TIL-LINE BEHANDLING

Ctrl + Shift + Pil op eller Pil ned

I modsætning til Shift + Page Up eller Page Down , som ruller hele siden, vil dette hjælpe med jævn lineær rulning, hvilket er præcis, hvad jeg ledte efter.

Et andet alternativ, der muligvis allerede er installeret på dit system, er at bruge GNU shield:

# Denne startskærm, som tilføjer grundlæggende vinduesstyring i terminalskærmen # Dette starter kopitilstanden, du kan bruge til at rulle [ # Brug nu pilene til at rulle # Gør det for at afslutte kopieringstilstand

Se man-skærmen for flere nyttige muligheder (flere vinduer,...)...

Det ser ikke ud til at være let muligt: ​​Arch Linux Wiki angiver ikke måder at gøre dette på en konsol (selvom det nemt er muligt på en virtuel terminal).

Ctrl - b , derefter [ , så kan du bruge normale navigationstaster til at rulle (såsom Pil op eller PgDn). Tryk på q for at forlade rulletilstand.