it-swarm-eu.dev

Posouvejte se uvnitř obrazovky nebo pozastavte výstup

Při správě serverů, na kterých pracuji, používám obrazovka pro úkoly příkazového řádku. Obvykle spouštím malé příkazy (většinou úkoly systému souborů), ale někdy spouštím rozsáhlejší úkoly (jako DBA).

výstup těchto úkolů je pro mě důležitý. Protože pro své úkoly používám Ubuntu a OS X (oba Terminálové Windows), přesto musím používat obrazovku, rolování není k dispozici, takže jakýkoli dlouhý výstup (myslím, že 500 řádková tabulka z výběru) je pro mě neviditelný. Kolečko myši není vyloučeno.

Když řeknu „svitek je pro mě neviditelný, mám na mysli toto:

top while using screen, in Mac OS X, while scrolling

Přemýšlel jsem o dvou možnostech:

  1. Pozastavit (think paginate) výstup určitého příkazu. Když začne výstup, dovolí mi přečíst, co se děje, pak stisknu „Enter“ a výstup bude pokračovat, dokud už nebude nic víc k zobrazení.

  2. Posouvejte se uvnitř obrazovky. Ale nevím, jestli je to možné.

Samozřejmě nevím, jestli jsou tyto možnosti skutečně možné. Pokud ano, jak jich lze dosáhnout? Jiné alternativy budou dobře přijaty.

441
AeroCross

Obrazovka má svůj vlastní vyrovnávací paměť, protože se jedná o terminálový multiplexor a musí se vypořádat s několika buffery.

Možná existuje lepší způsob, ale jsem zvyklý posouvat pomocí „režimu kopírování“ (který můžete použít ke kopírování textu pomocí samotné obrazovky, i když to vyžaduje také příkaz vložení):

  • Stiskněte kombinaci předpony obrazovky (C-acontrol+A ve výchozím nastavení) a poté stiskněte Escape.

  • Pomocí kláves se šipkami pohybujte nahoru/dolů ( a ).

  • Až budete hotovi, trefte q nebo Escape se vrátíte na konec vyrovnávací paměti.

(Pokud místo q nebo Escape udeř Enter nebo Return a potom přesuňte kurzor, vyberete text, který chcete kopírovat, a zasáhnete Enter nebo Return podruhé jej zkopíruje. Pak můžete vložit pomocí C-a následován ].)

Samozřejmě můžete vždy použít more a less, dva běžně používané pagery, což pro některé příkazy může stačit.

606
njsg

Použití vyrovnávací paměti screen, jak je zdůrazněno podle njsg , je dobrým řešením. Můžete také zakázat alternativní textový buffer v xterm termcap info na obrazovce. Pokud je zakázáno, můžete pomocí posuvníků (a kolečka myši) posouvat nahoru a dolů.

Přidejte toto do svého ~/.screenrc.

# Enable mouse scrolling and scroll bar history scrolling
termcapinfo xterm* [email protected]:[email protected]

Můžete si přečíst další diskusi zde .

189
George M

Všechny tyto odpovědi se týkaly toho, jak se pohybovat v rámci relace obrazovky, ale v příkazu na obrazovce je zabudovaná funkce pro ukládání všeho do soubor prostřednictvím argumentu -L Podle manuálu, který zní:

-L řekne obrazovce, aby zapnul automatické protokolování výstupu pro okna.

takže můžete:

screen -L -S testscreen

a vytvoří soubor v aktuálním adresáři s názvem screenlog.#, kde # je číslo pro tuto obrazovku počínaje 0.

To má spoustu výhod a nejdůležitější pro mě jsou:

  1. Vedení záznamů o tom, co jsem udělal od doby, kdy mohu uložit soubor protokolu do složky projektu pro budoucí použití.
  2. Tento proces můžete inaktivně a pasivně sledovat:
    • použijte tail -F pro sledování pokroku v reálném čase, aniž byste byli připojeni k obrazovce.
    • použijte grep pro kontrolu určitého termínu v protokolu a vytvoření oznámení (e-mail, vyskakovací okno, VoIP atd.). To lze použít na více obrazovkách, aniž byste se na ně aktivně dívali.
35

Úspěšně jsem dosáhl základního stránkování tím, že obsah přenesl do more, například:

ls -l | more

Nebo, pokud chcete barevný výstup pro případy použití, jako je zvýraznění syntaxe, můžete použít

ls -l --color=always | more

Výsledkem je výstup, který lze snadno procházet po jedné obrazovce najednou. Zkoušel jsem změnu @ uther na ~/.screenrc, Ale zdá se, že je to jako trvalé řešení, když je k dispozici myš.

Chcete-li to vyzkoušet, můžete přejít na tento emulátor BusyBox a poté ...

cd ~/bin
ls -l --color=always | more

Pomocí mezerníku můžete procházet výsledky příkazu ls -l Nebo pomocí klávesy Enter procházet výsledky řádek po řádku.

3
Michael Hogan

Pokud používáte Windows a používáte Bitvise SSH Client , můžete snadno posunout výstup při použití screen. Používám to pořád bez problémů. I když detach obrazovku a attach znovu, můžete stále posouvat předchozí výstup na této obrazovce.

Při použití PuTTY nebo Mac Terminal funguje skvělý návrh @njsg.

0
AbsarAkram