Het scherm scrolt niet in de terminalemulator in ubuntu. Omgekeerd scrollen van tekst in de Linux-console. Scherm verbinding


Gratis vertaling: Alexey Dmitriev
Datum van vertaling 19 november 2007

We hebben het hier over de GNU / Linux-tekstconsole - niet wat er in het terminalvenster, of de X-window-manager of het bureaublad verschijnt. Er is zoveel verwarring hierover dat ik triviaal moet zeggen: - "Als je in de grafische modus op" Alt-Ctrl-F1 "(of" F2 ", enz.) drukt, dan kom je bij de tekst troosten" ...

0. Waar hebben we het over?

De computer start op. U bevindt zich in de tekstconsole en ziet de tekst snel naar beneden stromen. U wilt het reeds geflitste stuk van deze tekst bekijken. U drukt op "Shift-PgUp" of "Shift-PgDn", en als u eerder de standaard sneltoetsen hebt gewijzigd (nee, nee, niet de toetsenbordindeling in X), dan enkele andere toetsen. Met deze toetsen laat je de tekst op en neer over het scherm bewegen. U gebruikt momenteel een terugrolbuffer (laten we het voor de duidelijkheid de terugrolbuffer noemen).

Wanneer je deze buffer met man en macht gaat gebruiken, worden al snel twee dingen duidelijk:
Slechts een deel van de tekst bij de download kan worden geretourneerd.
Het bestand "/ var / log / messages" legt veel minder vast dan wat je wilde zien.

Je begint het internet af te speuren en al snel verschijnen de voorlopige resultaten: de Linux-publicaties die achteruit scrollen zijn erg oud en gaan terug tot het begin van de jaren 90. Alles wat vóór de 2.6.x-kernel kwam, moet echter worden vergeten.

Je moet inderdaad selectief zijn in wat je leest: de meeste adviezen met betrekking tot versies ouder dan 2.6.x zullen je waarschijnlijk in verwarring brengen en je op het verkeerde pad brengen. Geloof me - ik heb hier veel tijd aan besteed. Het terugscrollgedrag wordt gedefinieerd in het bestand "vc.c", anders een klein bestand in de kernelbronnen, waarbij "vc" staat voor "virtuele console".

Merk op dat bij het wisselen van console de scrollbuffer verloren gaat - dus de volledige grootte van deze buffer is beschikbaar op de huidige console. (Er is hier een bijzonder grote hoeveelheid informatieafval van de dagen vóór de 2.6.x-kernel).

Standaard is de buffergrootte 32K. Dit is voldoende voor 4 keer drukken op de terug-scroll-toetsen - met elke druk wordt het halve scherm geschoven, 25 regels per scherm. Er zijn ongeveer 50 lijnen. En meer krijg je niet, ook niet als je 30 of 50 lijnen per scherm hebt. Ik moet zeggen dat 50 lijnen een kleine fractie is van wat er tijdens het laden over het scherm vliegt. In verband met het bovenstaande rijzen twee vragen:

Hoe vergroot ik de scrollbuffer?

Waarom leggen de logboeken geen enkele van de berichten vast die u tijdens het laden hebt gezien?

1. Hoe kan ik de scrollback-buffer vergroten?

De eerste oplossing is om de standaard (standaard) buffergrootte in de kernelbronnen te vergroten en deze opnieuw te compileren. Laat me aannemen dat u net zo terughoudend bent om dit te doen als ik, en zoek naar een meer flexibele remedie.

En er is zo'n tool, en het wordt "framebuffer console" genoemd, afgekort "fbcon". Dit apparaat heeft een documentatiebestand "fbcon.txt"; als je de kerneldocumentatie hebt geïnstalleerd, heb je die. Zoek het ergens in de "/ usr / share" branch (ik kan je het exacte pad niet geven vanwege het verschil in distributies). Je kunt het altijd als een enkel bestand downloaden.

Op dit punt bied ik mijn excuses aan: we moeten een beetje afdwalen en een beetje praten over de framebuffer.

Een videobuffer is een buffer tussen het beeldscherm en de videoadapter. Het mooie is dat het kan worden gemanipuleerd: het maakt trucs mogelijk die niet zouden werken als de adapter rechtstreeks op het scherm was aangesloten.

Eén zo'n truc heeft te maken met de schuifbuffer; het blijkt dat je de videobuffer kunt "vragen" om meer geheugen toe te wijzen aan de scrollbuffer. Dit wordt bereikt door middel van kernel-opstartparameters. Eerst heb je een framebuffer nodig; Dan vraag je om een ​​grotere scrollbuffer.

Het volgende voorbeeld is voor GRUB, maar kan eenvoudig worden aangepast aan LILO. Zoek in het GRUB-configuratiebestand - "menu.lst" - de regel die overeenkomt met de kernel en dan:
Verwijder de optie "vga = xxx" indien aanwezig.
Voeg de optie "video = vesabf" toe of wat dan ook overeenkomt met uw hardware.
Voeg de optie "fbcon = scrollback: 128" toe.
Na deze procedure zou de kernelparameterregel er ongeveer zo uit moeten zien:
"kernel / vmlinuz root = / dev / sdb5 video = radeonfb fbcon = terugbladeren: 128".

Waarom de optie "vga = xxx" verwijderen? Vanwege mogelijke conflicten met de video-optie. Op mijn ATI-adapter kan ik de schuifbuffer niet wijzigen als "vga = xxx" wordt vermeld. Wellicht is dit in jouw geval niet het geval. Als bovenstaande opties goed werken; maar wat als u het aantal regels wilt vergroten of een kleiner lettertype op het scherm wilt instellen? Je deed het altijd met de optie "vga = xxx" - en het verdween. Maak je geen zorgen - hetzelfde kan worden bereikt door de fbcon-parameters te wijzigen zoals beschreven in het bestand "fbcon.txt" (maar niet behandeld in dit artikel). Ubuntu en Debian hebben een handiger manier: "dpkg-reconfigure console-setup". Het is ook de moeite waard om dit commando te gebruiken omdat het ook de "initrd" overschrijft naar je nieuwe instellingen.

2. Grenzen verleggen

De "fbcon = scrollback: 128" optie geeft je de mogelijkheid om door de scrollbuffer 12-13 schermen te bewegen. Dat zijn ongeveer 150 regels - best goed, maar misschien nog niet genoeg om alle opstartberichten te zien. Kan ik er meer dan 128 plaatsen, zeg 256? De limiet is 128 in "vc.c". Als je meer wilt, bewerk en compileer dan. Voor mezelf heb ik besloten dat het spel de kaars niet waard is.

Toen ik volledig besloot dat ik de hoogste limiet had bereikt, citeer ik uit "fbcon.txt":
fbcon = terugbladeren: [k]
...
Het achtervoegsel "k" is optioneel en vermenigvuldigt de "waarde" met 1024.
(Het achtervoegsel "k" is optioneel en zal de "waarde" met 1024 keer vermenigvuldigen).
Ik haastte me om te controleren .. en wat de auteur hiervan ook dacht, ik was ervan overtuigd dat 128 en 128k precies hetzelfde resultaat geven. De standaardlimiet is 128 KB geheugen, dat is het hele verhaal.

Merk ten slotte op dat het gebruik van de uitgebreide schuifbuffer zowel het grafische geheugen als de buffer in RAM gebruikt. Als u tevreden bent met de standaard 32 KB, gebruikt u alleen het videokaartgeheugen. In de praktijk merkte ik echter niet de minste vertraging.

3. Wat ontbreekt er in de logs?

Op Ubuntu en Debian en andere distributies worden alle systeemberichten opgeslagen in het bestand "/ var / log / messages". Dit is zelfs van toepassing als de logservice (daemon) niet de oude "syslog" is maar "syslog-ng" ("ng": "nieuwe generatie" / nieuwe generatie /).

In beide gevallen kunt u de berichten bekijken door "dmesg" te typen op de opdrachtregel. Dit helpt niet: je zag tijdens het laden duidelijk de berichten die niet in de uitvoer van het "dmesg"-commando staan. Hoezo dat?

Dit is een eigenschap, geen bug! De berichten die in het bestand zijn vastgelegd, zijn afkomstig van verschillende OS-subsystemen. Subsystemen die berichten naar het logbestand sturen, worden in de syslog-terminologie "faciliteiten" genoemd, er zijn er slechts 8. Tijdens het laadproces worden programma's en scripts uitgevoerd, die mogelijk niet tot een van de 8 "tools" behoren. We zien hun berichten over het scherm scrollen, maar er wordt niets opgenomen in het logbestand!

U ziet bijvoorbeeld geen berichten van "loadkeys" (openSUSE) of "consolechars" (Ubuntu en Debian) wanneer de toetsenbordindeling tijdens het opstarten wordt geladen. Nog een voorbeeld: wanneer u een consoleteksteditor gebruikt, kunt u achteruit bladeren in het scherm (inclusief kleuren) met behulp van de schuifbuffer. Maar wat de redacteur produceert, zal nooit in een systeemprotocol vallen. De reden is natuurlijk dat noch "loadkeys" noch "consolechars" noch de editor tot een van de 8 "tools" behoren.

Kan de situatie veranderd worden? Natuurlijk - "gewoon" de applicaties die u wilt loggen opnieuw uitvoeren en opnieuw compileren. Bootscripts toevoegen of herschrijven. Of dwing het systeem om berichten van buiten de 8 systeem-"tools" vast te leggen.

Ik wed dat je dit niet zult doen. En ik weet zelfs je waarschijnlijke antwoord:
- "Er verdwijnt niets uit mijn logs." Ja natuurlijk...

Als je het artikel leuk vond, deel het dan met je vrienden:

Het onderwerp van handige trucs voor het werken in de Linux-terminal is eindeloos. Het lijkt erop dat alles heel eenvoudig is geregeld: de shell-prompt en de opdrachten die via het toetsenbord worden ingevoerd. In deze eenvoud ligt echter een afgrond van niet voor de hand liggende, maar bruikbare mogelijkheden. Daarom publiceren we regelmatig materiaal over de bijzonderheden van het werken in de Linux-opdrachtregel. In het bijzonder zal het vandaag een vertaling zijn van een artikel waarvan de auteur erop gebrand is tijd te besparen door de arbeidsproductiviteit te verhogen.

Als je geïnteresseerd bent in het werken op de Linux-opdrachtregel, zijn hier enkele van onze bronnen over dit onderwerp:

  • [ +114 ] Meest bruikbare Linux-opdrachtregeltrucs
  • [ +70 ] 10 Linux Terminal-trucs die maar weinigen kennen
  • [+65 ] Een verbazingwekkend handig hulpmiddel: lsof
  • [ +32 ] Linux: omleiden
  • [ +29 ] PDF-versie van artikelen over Bash-scripts

Linux-opdrachtregeltechnieken en tijdbesparing

Heb je ooit een collega een paar eenvoudige Linux-commando's zien gebruiken om problemen op te lossen waarvoor je een paar regels nodig hebt om op te lossen? Het moet zijn toen dit gebeurde, je kon alleen maar tegen jezelf zeggen: "Nou, laat maar! Ik wist niet dat het zo makkelijk kon."

In dit bericht laat ik je enkele professionele Linux-opdrachtregeltrucs zien die je veel tijd zullen besparen en, in sommige gevallen, je slechte humeur zullen wegnemen. Niet alleen dat, je vrienden of collega's zullen zeggen: "Nou, je moet!", kijkend naar jou. Deze technieken zullen u ook helpen uw persoonlijke productiviteit te verhogen, aangezien u minder opdrachten hoeft te typen en zelfs minder muisklikken hoeft te doen.

Dit wil niet zeggen dat deze Linux-tips alleen voor beginners zijn. Het is mogelijk dat zelfs ervaren gebruikers hier iets nuttigs zullen vinden dat ze niet wisten, ondanks dat ze al vele jaren Linux gebruiken. Linux leer je door ervaring. Zowel uw eigen ervaring als de ervaring van andere mensen is voldoende.

Voordat we beginnen, wil ik erop wijzen dat sommige van de hier getoonde methoden shell-specifiek zijn.

0. Opdracht voltooien met de Tab-toets

Ik zal beginnen met iets heel voor de hand liggends, maar heel belangrijks: het voltooien van opdrachten met de Tab-toets.

Wanneer u iets begint te typen in de Linux-terminal, kunt u op de Tab-toets drukken, waarna een prompt wordt weergegeven met een reeks vervolgopties, beginnend met de tekens die u zojuist hebt ingevoerd.

Als u bijvoorbeeld op het punt staat een bestand met de naam my_best_file_1.txt te kopiëren, typt u eenvoudig cp m en drukt u op Tab om de opties voor de opdracht te zien om door te gaan.


De Tab-toets gebruiken voor automatisch aanvullen

De Tab-toets kan ook worden gebruikt voor het voltooien van opdrachten.

1. Ga naar de laatste werkdirectory

Stel je voor dat je in een directory werkte die niet gemakkelijk te bereiken is, en dan naar een andere directory op een heel andere plaats ging. Toen realiseerde je je dat je terug moet naar de vorige map. In dit geval is het voldoende om de volgende opdracht te gebruiken:

cd-
Het brengt u naar de laatste werkdirectory. In dergelijke situaties hoeft u nu geen lange paden meer in te voeren of te kopiëren en te plakken.


Eenvoudig schakelen tussen mappen

2. Keer terug naar homedirectory

Deze techniek is ook vrij duidelijk. U kunt de onderstaande opdracht gebruiken om overal naar uw thuismap terug te keren:

cd ~
U kunt echter nog sneller terugkeren naar uw homedirectory met het cd-commando.

In de meeste moderne Linux-distributies is de shell vooraf geconfigureerd om het cd-commando op deze manier te accepteren. Dit bespaart u een paar toetsaanslagen op uw toetsenbord.


De snelste manier om naar uw thuismap te gaan

3. De inhoud van de directory weergeven

U vraagt ​​zich misschien af ​​wat de subtiliteit is van het gebruik van de opdracht om de inhoud van een map weer te geven. Iedereen weet dat het ls -l commando dit doel dient.

Maar dat is het hele punt. Bijna iedereen gebruikt de opdracht ls -l om de inhoud van mappen weer te geven, terwijl hetzelfde kan worden gedaan met de volgende opdracht:

Ll
Dit commando hangt af van je Linux-distributie en shellconfiguratie, maar het is zeer waarschijnlijk dat je het op de meeste distributies kunt gebruiken.


Het ll-commando gebruiken in plaats van het ls -l-commando

4. Meerdere commando's op één regel oproepen

Stel je voor dat je verschillende opdrachten achter elkaar moet uitvoeren. Waarschijnlijk voert u een opdracht in, wacht u tot deze is voltooid en voert u vervolgens de volgende in?

Een opdrachtscheidingsteken is in deze situatie handig; (puntkomma). Met deze aanpak kunt u meerdere opdrachten op één regel invoeren. Tegelijkertijd is het, in tegenstelling tot de gebruikelijke invoer van opdrachten, om de volgende opdracht uit te voeren niet nodig om te wachten op de voltooiing van de vorige.

Commando_1; commando_2; opdracht_3

5. Uitvoering van meerdere commando's op één regel en de voorwaarde voor de succesvolle voltooiing van het vorige commando

We hebben net gekeken naar een manier om meerdere commando's op één regel aan te roepen. Dit bespaart tijd. Maar wat als u bijvoorbeeld twee opdrachten nodig hebt, zodat de volgende opdracht alleen wordt uitgevoerd als de vorige zonder fouten wordt voltooid?

Stel je voor dat je de code wilt bouwen, en als de build is gelukt, bel je make?

In deze situatie kunt u het && scheidingsteken gebruiken. Dit scheidingsteken zorgt ervoor dat de volgende opdracht alleen wordt uitgevoerd als de vorige slaagt.

Command_1 && commando_2
Hier is een goed voorbeeld van het gebruik van &&:

Sudo apt update && sudo apt upgrade

6. Eenvoudig zoeken en gebruiken van eerder ingevoerde opdrachten

Stel je voor dat je een paar minuten of een paar uur geleden een lang commando hebt ingevoerd en dat commando weer nodig hebt. Bovendien is het probleem dat u deze opdracht niet meer precies kunt onthouden.

In een dergelijke situatie zal een omgekeerde zoekopdracht u redden. Met deze techniek kunt u de opdrachtgeschiedenis op trefwoord doorzoeken. Hier volstaat het om de toetsencombinatie Ctrl + R te gebruiken om een ​​omgekeerde zoekopdracht te starten en iets in te voeren dat verband houdt met de opdracht. Het systeem zal de opdrachtgeschiedenis bekijken en de opdrachten tonen die overeenkomen met het ingevoerde verzoek.

Ctrl + R zoekterm
Standaard wordt er maar één resultaat getoond. Om meer resultaten te zien die overeenkomen met uw zoekopdracht, moet u de sneltoets Ctrl + R steeds opnieuw gebruiken. Om de omgekeerde zoekmodus te verlaten, drukt u op Ctrl + C.


Geschiedenis van zoekopdrachten omkeren

Merk op dat u in sommige Bash-shells de toetsen Page Up en Page Down kunt gebruiken om door de zoekresultaten te bladeren.

7. De terminal ontgrendelen nadat u per ongeluk op Ctrl + S . hebt gedrukt

U bent misschien gewend om de sneltoets Ctrl + S te gebruiken om bestanden op te slaan. Maar als u op deze toetsen drukt in de Linux-terminal, blokkeert u deze.

Als u eerder, om de situatie te corrigeren, de terminal moest sluiten en opnieuw opstarten - nu kunt u rustig ademhalen, u hoeft dit niet opnieuw te doen. Om de terminal in werkende staat te brengen, gebruikt u gewoon de toetsencombinatie Ctrl + Q.

8. Ga naar het begin of einde van een regel

Stel je voor dat je een lang commando invoert en ergens in het midden realiseer je je dat je in het begin iets moet veranderen. U gebruikt waarschijnlijk de pijltoetsen om eerst naar het begin van de regel te gaan en dan terug naar het einde.

Natuurlijk kunt u in een vergelijkbare situatie de Home- en End-toetsen gebruiken, maar als alternatief kunt u met de toetsencombinatie Ctrl + A naar het begin van de regel gaan en met de toetsencombinatie Ctrl + E naar de einde.


Naar het begin of einde van een regel gaan

Ik vind deze methode handiger dan het gebruik van de Home- en End-toetsen, vooral als ik op een laptop werk.

9. Logbestanden in realtime lezen

Als u logbestanden moet analyseren waarnaar sommige actieve toepassingen tijdens de analyse gegevens schrijven, kunt u het tail-commando gebruiken met de optie -f.

Staart -f path_to_Log
Als alternatief kunt u het grep-commando in zijn gebruikelijke vorm gebruiken om alleen de regels weer te geven die u interesseren:

Staart -f path_to_log | grep zoekterm
U kunt hier ook optie F gebruiken. Dit zorgt ervoor dat het tail-hulpprogramma blijft draaien, zelfs als het logbestand dat wordt bekeken, wordt verwijderd. Met deze aanpak, als dit bestand opnieuw wordt gemaakt, zal tail de gegevens ervan op het scherm blijven weergeven.

10. Gecomprimeerde logbestanden lezen zonder ze uit te pakken

Serverlogboeken worden meestal gegzipt om schijfruimte te besparen. Dit kan tot enig ongemak leiden bij het analyseren van de logs door ontwikkelaars of systeembeheerders. Mogelijk moet u het scp-commando gebruiken om het bestand naar uw lokale map te kopiëren en het bestand vervolgens uit het archief te extraheren om het te kunnen bekijken, aangezien u mogelijk geen schrijfrechten hebt voor waar het bestand waarin u geïnteresseerd bent, is opgeslagen.

Hier komt een groep commando's ons te hulp, waarvan de naam begint met de letter "z". Deze opdrachten zijn een alternatief voor de reguliere opdrachten die worden gebruikt voor het werken met logbestanden. Onder hen zijn minder, kat, grep en anderen.

Dus door de commando's zless, zcat, zgrep en dergelijke te gebruiken, hoef je gecomprimeerde bestanden niet expliciet uit te pakken. Details over deze commando's zijn te vinden.

Trouwens, toen ik mijn collega vertelde over deze "geheime" commando's, kreeg ik een kopje koffie.

11. Het less-commando gebruiken om bestanden te lezen

Als je een bestand moet bekijken, vooral een groot bestand, kun je cat proberen, maar het is veel beter om ergens anders te kijken. Het punt is dat kat het hele bestand op het scherm laat zien, wat niet zo handig is.

U kunt editors zoals Vi of Vim in de terminal gebruiken om de bestanden te bekijken, maar als u alleen een bestand hoeft te lezen, is minder een geweldige opdracht.

Minder pad_naar_bestand
Tijdens een werksessie met minder kunt u op trefwoorden zoeken naar de benodigde tekstfragmenten, door pagina's bladeren, gegevens weergeven met regelnummers, enzovoort.

12. Hergebruik het laatste item van het vorige commando met $

In veel situaties is het erg handig om het argument van het vorige commando te kunnen gebruiken.

Stel dat u een map moet maken en er vervolgens naartoe moet navigeren. Hier kunt u de!$-optie gebruiken door het sprongcommando achter het commando in te voeren om een ​​directory aan te maken.


$ gebruiken om het laatste opdrachtargument te gebruiken

Beter nog, doe hetzelfde met de Alt + sneltoets. (punt). De punt kan meerdere keren worden gebruikt om de opties van de laatste opdracht te herhalen.

13. Gebruik het vorige commando in het huidige commando met !!

Via!! je kunt het hele vorige commando oproepen. Deze techniek is vooral handig wanneer je een commando moet uitvoeren en het blijkt dat je superuser-privileges nodig hebt om het uit te voeren. De onderstaande figuur toont bijvoorbeeld een situatie waarin de sudo !! scheelt veel tijd.


Profiteer !!! om het laatste commando als argument te vervangen

14. Aliassen gebruiken om typefouten te corrigeren

U bent misschien al bekend met het alias-commando. Het kan worden gebruikt om fouten in ingevoerde opdrachten te herstellen.

Zo kan het voorkomen dat je vaak gerp typt in plaats van grep. Als je een slechte gewoonte niet aankunt, schrijf je de alias als volgt naar je bashrc-bestand:

Alias ​​​​gerp = grep
Nu hoeft u deze opdracht niet opnieuw te typen als u de naam verkeerd invoert.

15. Kopieer en plak in Linux-terminal

Dit advies is enigszins controversieel, omdat het afhangt van de Linux-distributie en de terminal.

Maar meestal kunnen de kopieer- en plakopdrachten als volgt worden aangeroepen:

  • Selecteer de tekst die moet worden gekopieerd en klik met de rechtermuisknop om deze te plakken (werkt in Putty en andere Windows SSH-clients).
  • Selecteer de te kopiëren tekst en klik vervolgens met de centrale muisknop (scrollwiel) om deze te plakken.
  • Gebruik de sneltoetsen Ctrl + Shift + C om te kopiëren en Ctrl + Shift + V om te plakken.

16. Een opdracht of proces beëindigen

Wat ik hier wil adviseren ligt misschien voor de hand, maar ik zal je er toch over vertellen. Als een opdracht op de voorgrond wordt uitgevoerd en u deze wilt verlaten, kunt u op Ctrl + C drukken om deze te stoppen.

17. De opdracht yes gebruiken om interactieve opdrachten of scripts te automatiseren

Als u met sommige opdrachten of scripts moet werken waarbij gebruikersinteractie betrokken is, en u weet dat u Y zult invoeren als antwoord op elke programmavraag, dan kunt u dit proces automatiseren met de opdracht yes. Dit wordt als volgt gedaan:

Ja | opdracht_of_script

18. De inhoud van een bestand wissen zonder het bestand zelf te verwijderen

Als u de inhoud van een tekstbestand wilt wissen zonder het bestand zelf te verwijderen, kunt u de volgende opdracht gebruiken:

> bestandsnaam

19. Uitzoeken of de map bestanden bevat die bepaalde tekst bevatten

De Linux-opdrachtregel ondersteunt vele manieren om informatie te vinden. Als u echter alleen wilt weten of er bestanden in een map zijn die bepaalde tekst bevatten, kunt u deze opdracht gebruiken:

Grep -Pri Search_Term path_to_directory
Mijn advies aan iedereen die op zoek is naar Linux-zoekopdrachten, is echter om de opdracht find onder de knie te krijgen.

20. Hulp bellen voor elk commando

Ik wil dit materiaal afsluiten met een zeer voor de hand liggende, maar niettemin zeer belangrijke "truc", namelijk om hulp in te roepen voor een opdracht- of opdrachtregelprogramma.

Bijna alle opdrachtregelprogramma's bevatten hulpinformatie waarin wordt uitgelegd hoe ze kunnen worden gebruikt. Gewoonlijk zal het lezen van de Help u helpen de basisprincipes van de opdracht te begrijpen. U kunt de hulp als volgt bellen:

Command_tool --help

Ik heb bewust commando's als fuck in dit materiaal weggelaten, omdat het geen standaardtools zijn die letterlijk overal te vinden zijn. Wat ik hier zojuist heb besproken, kan nuttig zijn bij het werken met bijna alle Linux-distributies en opdrachtregelshells zonder nieuwe programma's te hoeven installeren.

Screen is een heel handig programma als je vaak in de console werkt door via SSH verbinding te maken met de server. In dit geval scherm stelt u in staat om meerdere verschillende schermen in één console te houden en gemakkelijk tussen deze te schakelen.

Met Screen kunt u de verbinding met SSH verbreken terwijl u de taken opslaat die op de externe server worden uitgevoerd.

Om op Ubuntu te installeren, moet u de opdracht uitvoeren:

$ sudo apt-get installatiescherm

Daarna moet u het scherm uitvoeren:

$ scherm

Na het starten ziet u ofwel een opdrachtregelprompt of een "welkomstscherm" door op SPACE of ENTER te drukken, waarin u ook naar de shell wordt geleid. In dit geval worden alle opdrachten al "binnen" het scherm gestart.

Om het scherm te verlaten (afsluiten en niet los te koppelen), volstaat het om alle open shells erin te verlaten, of druk op de toetsencombinatie Ctl-a \, en antwoord "y" op de vraag "wil je echt afsluiten " ...

U kunt de verbinding met het huidige scherm verbreken zonder de sessie te sluiten of te beëindigen door op Ctrl-a d te drukken.

Scherm verbinding

Als de machine al een actieve schermsessie heeft en u er verbinding mee wilt maken, dan

  1. als er maar één sessie is, is alleen het commando voldoende: $ screen –x
  2. als er meerdere sessies zijn, dan: u kunt de lijst met actieve schermen bekijken met het commando screen -ls: $ screen -ls Er zijn schermen op: 2762.pts-0.debian (Detached) 2743.pts-0.debian ( Vrijstaand) 2 Stopcontacten in/var/run/screen/S-diesel.

    Selecteer het scherm dat we nodig hebben en voeg het eraan toe:

    Scherm -x 2762.pts-0.debian

    Sessienamen zijn standaard niet erg informatief - verwerk gewoon nummers, als u meerdere schermsessies voor verschillende taken wilt starten en gebruiken, kunt u meer zinnige namen bedenken. We bedenken een naam en starten dan een nieuw scherm als volgt:

    $ scherm -S "job1"

    waarbij job1 de naam is van onze benoemde sessie. Nu zullen we in -ls veel duidelijker zien:

    $ screen -ls Er zijn schermen op: 2762.pts-0.debian (Detached) 2795.job1 (Detached) 2743.pts-0.debian (Detached) 3 Sockets in / var / run / screen / S-diesel.

    en we kunnen verbinding maken met de job1-sessie door simpelweg de naam op te geven:

    $ scherm -x taak1

Schakelen tussen schermen

Zoals je al hebt begrepen, worden sessies opgeslagen, zelfs als je geen verbinding hebt met de server, en alles wat erop wordt uitgevoerd, blijft draaien. De mogelijkheden van het scherm zijn hier echter niet toe beperkt. Soms, als ik via ssh werk, wil ik echt dat meerdere terminals tegelijk open zijn, terwijl meerdere keren verbinding maken een spelbreker is - vooral als je verbinding moet maken via meerdere servers. Scherm kan hier ook bij helpen. Druk gewoon op Ctrl - a c, en een andere shell zal openen. U kunt tussen open shells wisselen via Ctrl - a<Цифра>, waar<Цифра>- het nummer van de open shell, beginnend bij nul, of Ctrl - a n / Ctrl - a p - vooruit achteruit. U kunt een lijst met open "vensters" - consoles krijgen (en overschakelen naar degene die u nodig hebt) door op Ctrl - a "; om een ​​normale naam (niet alleen saaie "bash") voor een vensterthread te geven, ga ernaartoe en druk op Ctrl - a A (case matters), voer vervolgens de naam in bij de prompt die verschijnt.

Bewaking van de uitvoering van opdrachten

Als er meerdere vensters geopend zijn, kan het handig zijn om de activiteit in één ervan te kunnen volgen. Als u bijvoorbeeld een "langlopend" commando uitvoert en u zich afvraagt ​​wanneer het zal eindigen. Ga naar het venster met dit commando, druk op Ctrl - a m, we zien een inscriptie als deze: "Window 0 (bash) wordt nu gecontroleerd op alle activiteit". Als er iets in het venster verandert, piept het scherm en verschijnt er een "@"-symbool achter het nummer in de vensterlijst.

Door het scherm scrollen in het scherm

Om de uitvoer van de opdracht te zien, die boven de randen van het venster is gegaan, moet u op Ctrl-a [ drukken

Hierdoor schakelt het scherm naar de kopieermodus. Om deze modus te verlaten, drukt u gewoon op Esc.

Schermconfiguratie

Scherm is geconfigureerd met het bestand ~ / .screenrc in uw thuismap. U kunt daar bijvoorbeeld schrijven:

Bijschrift altijd "% (= 45)% (+ bw) Scherm:% n |% h% =% t% c" harde status altijd laatste regel "% -Lw% (= BW)% 50>% n% f *% t% ( -)% + Lw%<"

Dit geeft u een altijd zichtbare lijst met geopende vensters en andere nuttige informatie onderaan het scherm.

Wanneer Screen start, worden standaard opdrachten uit het bestand / etc / screenrc en het bestand .screenrc uit de homedirectory van de gebruiker uitgevoerd. Veel commando's die in configuratiebestanden kunnen worden gebruikt, zijn besproken in de bovenstaande tabellen in het veld "Tekstcommando". Hieronder ziet u een voorbeeld van een schermconfiguratie uit een .screenrc-bestand:

# Schakel de uitvoer van licentie-informatie uit bij het opstarten Scherm startup_message off # Open een shell om te werken chdir screen -t Work # Open een shell voor het beheren van configuratie chdir / etc screen -t Configuratie # Open een shell voor het bekijken van logs chdir / var / log-scherm -t Logs # Selecteer eerste venster na start selecteer 0

Dit vrij eenvoudige configuratiebestand opent drie vensters met de namen Werk, Configuratie, Logboeken, respectievelijk in de persoonlijke map van de gebruiker, in de map /etc en /var /log. Na het opstarten wordt op het scherm het eerste venster met de naam Work weergegeven. Figuur 1 toont een voorbeeld van hoe Screen werkt met dit configuratiebestand.

Scherm Voltooiing

Als de schermsessie om de een of andere reden niet meer reageert, kunt u deze beëindigen. Om dit te doen, moet u verbinding maken met de gewenste sessie, vervolgens op Ctrl - a drukken en het commando ": quit" invoeren.

Screen beëindigt deze sessie door alle vensters geforceerd te sluiten.

Werken met scherm

Een van de belangrijkste kenmerken van Screen is het maken en beheren van meerdere consolevensters of teksttoepassingen in één terminalvenster. Er kan slechts één van de vensters tegelijk op het terminalscherm staan ​​(er kunnen er alleen meerdere zijn als ze het terminalscherm in delen verdelen). Met Screen kunt u snel schakelen tussen vensters, opslaan en later terugkeren naar een tekstsessie en de toegang ertoe openen voor andere gebruikers. Bovendien kunt u met Screen vensterstitels geven, activiteit in elk venster volgen en vensterinhoud delen door middel van kopiëren en plakken. En bovendien kunt u met Screen sleutels opnieuw toewijzen, terminalemulatie-instellingen beheren en nog veel meer kleine tekstvaktaken die misschien niet altijd nodig zijn, maar die u kunnen helpen bij het uitvoeren van administratief werk op specifieke tijdstippen.

De afbeelding toont een scherm met drie benoemde vensters (Werk, Configuratie, Logboeken) en daarin geopend met een teksteditor Vim, met een voorbeeld van het schermconfiguratiebestand.

Eerste start

Screen kan worden gestart met de opdrachtregel van het scherm, maar controleer eerst of Screen op uw systeem is geïnstalleerd met het volgende commando:

$ welk scherm / usr / bin / scherm

Als de opdracht het pad retourneerde zoals in het bovenstaande voorbeeld, kunt u het meteen gebruiken, anders kan Screen worden geïnstalleerd door de stvan uw besturingssysteem, of worden gedownload van de officiële site http://www.gnu. org/software/scherm/.

Nu kunnen we Screen starten door simpelweg te typen:

$ scherm

Na het starten kan informatie over de versie en licentie op het scherm verschijnen (bij het overwegen van de configuratie zullen we overwegen hoe u de weergave van dit bericht kunt annuleren) en in dit geval is het noodzakelijk om op de "Space" of "Enter" te drukken sleutel, waarna we ons bevinden in de schijnbaar gebruikelijke , een tekstomslag. Opgemerkt moet worden dat u in de opdrachtregel onmiddellijk een opdracht kunt opgeven om een ​​specifieke toepassing te starten, bijvoorbeeld om bovenaan te starten, moet u typen:

$ scherm bovenaan

Ok, nu is Screen actief, maar op het eerste gezicht zijn er geen externe wijzigingen - we kunnen in een actieve shell werken of top gebruiken. De truc is dat terwijl Screen actief is, het alle toetsaanslagen rechtstreeks doorgeeft aan de applicatie, maar (standaard) laat besturingscommando's voor jezelf, beginnend met de toetsencombinatie Ctrl + a.

Deze combinatie van bedieningstoetsen kan worden gewijzigd via de configuratiebestanden (die we hieronder zullen bekijken), maar in alle voorbeelden wordt alleen rekening gehouden met de standaardconfiguratie. Alle schermtoetsenbordcommando's bestaan ​​dus uit twee sneltoetsen - het besturingselement Ctrl + a en de toets zelf, of een sneltoets die de opdracht vertegenwoordigt. Bijna elke opdracht heeft ook zijn eigen tekstuele tegenhanger, die kan worden uitgevoerd via een configuratiebestand of door de volgende opdracht uit te voeren:

In dit geval moeten we twee sneltoetsen uitvoeren, eerst door op Ctrl + a en vervolgens op de dubbele punt te drukken. Tegelijkertijd geeft het scherm een ​​dubbele punt weer onder aan het scherm. Dezelfde opdracht die we zojuist hebben uitgevoerd met een sneltoets, kan worden uitgevoerd via het configuratiebestand met behulp van de dubbelepunttekstopdracht, die bijvoorbeeld nodig kan zijn om een ​​opdrachtprompt weer te geven bij het opstarten, of om de sneltoets die deze prompt oproept opnieuw toe te wijzen . Hieronder, zoals in het bovenstaande voorbeeld, zal ik voor elke toetsencombinatie de bijbehorende trefwoorden schrijven die in de configuratiebestanden kunnen worden gebruikt, of kunnen worden ingevoerd met Ctrl + a en :.

Een natuurlijke vraag kan hier rijzen - wat als de applicatie de Ctrl + een toetsencombinatie direct moet doorgeven, die al in Screen as a service wordt gebruikt? Dezelfde combinatie wordt bijvoorbeeld gebruikt door de leesregel-opom naar het begin van een regel te springen. In dit geval biedt Screen de volgende opdracht:

Vensterbeheer

In het vorige gedeelte hebben we geleerd hoe we Screen kunnen starten en hebben we de basissjabloon voor alle toetsenbordopdrachten geleerd. Het is tijd om de opdrachten voor het beheren van vensters uit te zoeken. Wanneer Screen start, wordt één venster gemaakt (tenzij de configuratie aangeeft dat er meerdere vensters tegelijk moeten worden gemaakt) en wordt het nummer 0 toegewezen. Een nieuw venster met een opdrachtshell kan worden gemaakt met behulp van de onderstaande opdracht:

BELANGRIJKE COMBINATIE: TEKST OPDRACHT BESCHRIJVING
Ctrl + a C scherm Een nieuw venster maken

Hierdoor zal Screen een nieuw venster maken en het het volgende opeenvolgende nummer toewijzen, in ons geval zal het nieuwe venster venster 1 zijn.

We hebben nu twee tekstvensters, waarvan het nieuw aangemaakte venster met nummer 1 het huidige is, en het venster met nummer 0 op de achtergrond. Maar het moet worden opgemerkt dat zelfs als het venster zich op de achtergrond bevindt, het de uitvoer van de toepassing die erin wordt uitgevoerd kan waarnemen alsof het actueel is. We kunnen bijvoorbeeld een proces starten in venster 0 dat met regelmatige tussenpozen aanvullende informatie uitvoert (dit kan bijvoorbeeld de opdracht tail -f zijn) en vervolgens overschakelen naar venster 1 om in een teksteditor te werken. Als we na een tijdje willen zien wat er in venster 0 gebeurt, kunnen we naar dit venster overschakelen en alle uitvoer van het proces daar zien. Daarna kunt u terugschakelen naar het bewerkingsvenster.

In de vorige paragraaf heb ik een voorbeeld beschreven met schakelen tussen vensters, maar ik heb nog niet gezegd welke commando's hiervoor gebruikt worden. Laten we de meest gebruikte commando's voor het beheren van vensters eens nader bekijken:

BELANGRIJKE COMBINATIE: TEKST OPDRACHT BESCHRIJVING
Ctrl + a met wie ramen Toont een lijst met nummers en titels van alle vensters in de onderste regel van het scherm
Ctrl + a « vensterlijst Toont een interactieve lijst met nummers en titels van alle vensters waaruit u een venster kunt selecteren om over te schakelen
Ctrl + a Raamnummer selecteer Vensterselectie op nummer. Bijvoorbeeld, het commando Ctrl + a en 0 maakt het huidige venster met nummer 0
Ctrl + a N De volgende Schakel in volgorde naar het volgende venster, of naar het eerste venster als we in het laatste venster zaten
Ctrl + a P vorige Schakel op volgorde naar het vorige venster, of naar het laatste venster als we ons in het eerste venster bevonden
Ctrl + a selecteer Geef een prompt weer om het vensternummer in te voeren om over te schakelen
Ctrl + a Ctrl + a ander Overschakelen naar het laatst gebruikte venster
Ctrl + a N nummer Toon het nummer en de titel van het huidige venster
Ctrl + a EEN titel De titel van het huidige venster instellen
Ctrl + a k doden Geforceerd sluiten van een venster, bijvoorbeeld als de applicatie niet op de gebruikelijke manier kan worden gesloten

Wanneer een van de vensters is gesloten, veranderen de nummers van andere vensters niet en verschijnen er "gaten" in de nummering, die later kunnen worden gevuld met nieuwe vensters. Hoewel Screen een commando heeft om het vensternummer te wijzigen, wordt dit hier niet beschouwd en blijft voor zelfstudie. Als alle vensters zijn gesloten, wordt Scherm afgesloten en wordt een bericht weergegeven:

Werken met tekst

Hierboven hebben we geleerd hoe u Scherm kunt starten en vensters kunt beheren - maak ze, schakel van venster naar venster, wijs namen toe en sluit ze. Laten we nu eens kijken naar het werken met de inhoud van vensters - de tekstinhoud van het ene venster naar het andere kopiëren en plakken, vensters bewaken, een tekstkopie van het scherm opslaan en andere soortgelijke taken:

BELANGRIJKE COMBINATIE: TEKST OPDRACHT BESCHRIJVING
Ctrl + a m toezicht houden op Activeer/deactiveer activiteitenbewaking voor het huidige venster. Wanneer monitoring is ingeschakeld en tekst wordt uitgevoerd in een venster in de achtergrondmodus, wordt informatie over activiteit weergegeven in de serviceregel.
stilte Inactiviteitsbewaking in-/uitschakelen voor het huidige venster. Wanneer bewaking is ingeschakeld en gedurende een bepaalde tijd geen tekst in een venster in de achtergrondmodus wordt weergegeven, wordt informatie over inactiviteit weergegeven in de serviceregel.
Ctrl + a H kopie Schrijf de tekstafbeelding van het huidige venster naar hardcopy.window_number in de standaard Screen-directory.
Ctrl + a H log Schakel standaard het traceren van de tekst van het huidige venster in/uit naar het bestand screenlog.window_number in de schermmap.
Ctrl + a [ kopiëren Ga naar de kopieermodus. Aanvullende opdrachten voor deze modus worden hieronder beschreven.
Ctrl + a ] Plakken Plak de tekst uit het standaardregister in het venster (waar het eerder werd gekopieerd met behulp van de bovenstaande opdracht).

In de kopieermodus start Screen een teksteditor die lijkt op de Vi-editor. De meest gebruikte editor-commando's zijn:

  • Cursortoetsen verplaatsen de cursor over de schermbuffer;
  • De spatiebalk markeert het begin en einde van het te kopiëren gebied. Door nogmaals op Spatie te drukken, wordt de gemarkeerde tekst gekopieerd naar de standaard hoofdletters en verlaat Screen de kopieermodus;

Meerdere vensters op het scherm

Standaard laat Scherm slechts één logisch venster zichtbaar op het scherm, maar indien gewenst is er een extra optie om het terminalscherm in horizontale gebieden te splitsen. Zo is het mogelijk om meerdere vensters tegelijk op één terminalscherm weer te geven. Laten we de opdrachten voor het werken met schermgebieden eens nader bekijken:

Afbeelding 2 toont een scherm met drie benoemde vensters (Werk, Configuratie, Logboeken) en een scherm dat in twee regio's is verdeeld. Een werkvenster is geopend in het bovenste gedeelte met een Vim-teksteditor en eennd. In de onderste regio, het configuratievenster met een deel van het algemene configuratiebestand / etc / screenrc.

Console-sessies

Ten slotte zullen we een van de meest populaire functies van Screen bekijken.Stel je het volgende scenario voor: een systeembeheerder thuis, logt in op een externe server, opent verschillende vensters, start de benodigde taken, sluit vervolgens de verbinding en rijdt naar het werk. Op het werk logt hij opnieuw in op dezelfde server en herstelt thuis geopende vensters met de resultaten van voltooide taken. Klinkt een beetje raar? In geen geval! Schermconsole-sessies zijn ontworpen om deze taak te volbrengen. Hiermee kunt u de huidige schermsessie met alle vensters en actieve toepassingen van de terminal loskoppelen en er op elk moment weer aan deelnemen. Tegelijkertijd blijven alle toepassingen die onder Scherm draaien werken en gebruiken ze hun vensters om informatie weer te geven. Bovendien kunnen er verschillende consolesessies zijn, maar in dit artikel zullen we hier niet in detail op ingaan.

Overweeg de opdrachten om de consolesessie los te koppelen van de terminal:

BELANGRIJKE COMBINATIE: TEKST OPDRACHT BESCHRIJVING
Ctrl + a D losmaken Koppel de consolesessie los en laat deze op de achtergrond draaien. Tegelijkertijd schrijft Screen:
Ctrl + a D D pow_detach Koppel de consolesessie los, laat deze op de achtergrond draaien en stuur het HANGUP-signaal naar het bovenliggende schermproces. Wanneer u Screen start vanaf een externe terminal, betekent dit dat u Screen loskoppelt en vervolgens de verbinding verbreekt. Tegelijkertijd schrijft Screen:
Ctrl + a z opschorten Koppel de consolesessie los en laat deze draaien als een achtergrondproces in de bovenliggende shell. In dit geval kunnen, om de sessie te herstellen, naast de hieronder beschreven opdrachten, de standaardopdrachten voor het beheer van de achtergrondprocessen van de opdrachtshell worden gebruikt
Ctrl + a Ctrl + ontslag nemen Sluit alle sessievensters en verlaat het scherm. Merk op dat veel distributies de sneltoets voor dit commando overschrijven, maar het tekstcommando kan toch worden gebruikt

Om weer deel te nemen aan de verbroken sessie, of om de lijst met beschikbare sessies te zien, moet je Screen starten met een van de volgende toetsen:

Wat is het volgende?

Scherm heeft enorm veel verschillende mogelijkheden en het is praktisch onmogelijk om ze allemaal in één artikel te beschrijven, dus een deel van de functionaliteit is achter de schermen gelaten. Hier zijn enkele schermfuncties / instellingen die hierboven niet zijn besproken en voor onafhankelijk onderzoek blijven:

  • Configuratieopdrachten voor terminalemulatie;
  • Console-sessies voor meerdere gebruikers;
  • Sneltoetsen toewijzen of opnieuw toewijzen aan opdrachten;
  • Opties voor tekstcommando's. Bijvoorbeeld de -t optie van de schermopdracht, die wordt gebruikt in het voorbeeldconfiguratiebestand;
  • Commando's die zelden worden gebruikt, zoals de commando's die u kunt gebruiken bij het configureren van het opstarten van het scherm, zijn echo en sleep;
  • Omgevingsvariabelen die handig kunnen zijn bij het aanpassen van Scherm;
  • Extra toetsen voor het starten van het scherm;

Scherm alternatieven

Screen is een programma met een lange geschiedenis, de eerste versie verscheen in 1987. Op dit moment worden er praktisch geen nieuwe functies aan Screen toegevoegd (een van de redenen kan de aanwezigheid van een groot aantal op dit moment zijn) en worden in principe alleen bugfixes uitgevoerd. Als iemand de relatieve "ouderdom" van Screen niet leuk vindt, of niet zo'n groot aantal functies nodig heeft, dan kun je een van de volgende programma's gebruiken:

  • dtach () - de nadruk bij de ontwikkeling van dit programma ligt op compactheid. Naar analogie met Screen ondersteunt het de mogelijkheid om met consolesessies te werken, maar heeft het niet de andere Screen-mogelijkheden.
  • SplitVT (http://www.devolution.com/~slouken/projects/splitvt/) - hiermee kunt u het terminalscherm in twee helften splitsen en met twee shells tegelijk werken.
  • Tmux () - Tmux gebruikt een client-servermodel om met consolesessies te werken.
  • Twin (http://linuz.sns.it/~max/twin/) is een poging om een ​​tekstvenster-interface te creëren die lijkt op zijn grafische tegenhangers.

161 Jane doh

Ik begrijp dat Omhoog / Omlaag je de commandogeschiedenis zal geven. Maar hoe kijk je naar resultaten uit het verleden door op en neer te scrollen?

Ik heb Shift + Page Up / Page Down, Alt + Shift + Up / Down en Page Up / Page Down gebruikt, maar geen van deze lijkt te werken.

Dit is de Redhat Linux-box.

linux terminal rhel

14 antwoorden

SHIFT + Page Up en SHIFT + Page Down. Als dat niet werkt, probeer dan dit en dan zou het moeten:

Ga naar uw terminalprogramma en zorg ervoor dat Bewerken / Profielvoorkeuren / Scrollen / Scrollback / Onbeperkt
gecontroleerd.

De exacte locatie van deze optie kan ergens anders zijn, maar ik kan zien dat je Redhat gebruikt.

SHIFT + Page Up en SHIFT + Page Down zijn de juiste toetsen om in de virtuele console te werken, maar de vmware-console heeft deze terminalinstellingen niet. De virtuele console heeft een vaste scroll-back-grootte, het lijkt erop dat deze wordt beperkt door de grootte van het videogeheugen volgens deze Linux Virtual Console-scrolldocumentatie.

ALTERNATIEF VOOR LIJN-LIJN VERWERKING

Ctrl + Shift + Pijl-omhoog of Pijl-omlaag

In tegenstelling tot Shift + Page Up of Page Down, die de hele pagina scrolt, zal dit helpen bij soepel lineair scrollen, en dat is precies wat ik zocht.

Een ander alternatief dat mogelijk al op uw systeem is geïnstalleerd, is om het GNU-scherm te gebruiken:

# Dit startscherm dat basisvensterbeheer toevoegt aan het terminalscherm # Dit start de kopieermodus die u kunt gebruiken om te bladeren [# Gebruik nu de pijlen om te scrollen # Om de kopieermodus te verlaten:

Bekijk het man-scherm voor meer handige opties (meerdere vensters, ...) ...

Het lijkt niet eenvoudig om dit te doen: de Arch Linux Wiki vermeldt geen manieren om dit op de console te doen (hoewel het gemakkelijk mogelijk is op een virtuele terminal).

Ctrl - b, dan [, dan kun je de normale navigatietoetsen gebruiken om te scrollen (zoals Pijl omhoog of PgDn). Druk op q om de bladermodus te verlaten.