Tento stručný průvodce vysvětluje, jak zkontrolovat, zda jste na Obrazovce session nebo ne v Linuxu. Jak jste si mohli všimnout, když spustíte Tmux relace, samozřejmě uvidíte podrobnosti o relaci, jako je aktuální název SHELL, název hostitele a aktuální datum a čas, ve stavovém řádku dole, jak je znázorněno na obrázku níže.
Podrobnosti relace Tmux
Ale neuvidíte takové detaily, když jste uvnitř relací obrazovky. Takto vypadá relace obrazovky na mém systému Ubuntu:
Relace obrazovky
Dokážete rozeznat rozdíl? Relace obrazovky a normální relace budou vypadat přesně stejně. Spusťte příkaz "screen -ls" pro seznam spuštěných relací obrazovky.
$ screen -ls
Ukázkový výstup:
Seznam relací obrazovky
Vidět? Jsem v relaci obrazovky, ale vypadá to jako normální relace. Ve stavovém řádku dole není žádná indikace. Jak poznáte, zda pracujete v rámci relace obrazovky nebo ne? To teď zjistíme.
Zkontrolujte, zda jste v relaci obrazovky nebo ne v Linuxu
Existuje několik způsobů, jak ověřit, zda jsme v relaci obrazovky. Zde jsem uvedl tři metody.
Metoda 1 – Použití příkazu "echo"
Chcete-li zkontrolovat, zda jste v relaci obrazovky nebo ne, jednoduše spusťte následující příkaz:
$ echo $STY
Pokud jste v relaci obrazovky, uvidíte výstup jako níže.
18704.pts-0.ostechnix
Zde je další způsob, jak zkontrolovat, zda jste v relaci obrazovky:
$ echo $TERM
Uvidíte výraz "obrazovka" ve výstupu.
Ukázkový výstup:
screen.xterm-256color
Zkontrolujte, zda jste v relaci obrazovky v systému Linux
Pokud nebyly spuštěny žádné relace obrazovky, u prvního příkazu nic neuvidíte. A u druhého příkazu nebude ve výstupu výraz "obrazovka". Stačí ukončit nebo odpojit relaci obrazovky a znovu spustit výše uvedené příkazy. Uvidíte výstup jako níže.
Zkontrolujte relace obrazovky
Vidět? Nejsme uvnitř relace obrazovky.
Výše uvedené dva příkazy budou fungovat pouze tehdy, pokud jste ve spuštěné relaci obrazovky na vašem místním systému. Nebude to fungovat, pokud spustíte relaci obrazovky v místním systému a poté přistoupíte k jinému systému v síti přes SSH.
V takovém případě můžete použít druhou metodu uvedenou níže.
Metoda 2 – Použití předpony obrazovky
Chcete-li zkontrolovat, zda jsme v relaci obrazovky nebo ne, jednoduše stiskněte Ctrl+a a poté Ctrl+t klíče. Pokud jste v relaci obrazovky, zobrazí se čas a název hostitele.
Podívejte se na následující demo.
Pomocí Screen prefix key
zkontrolujte, zda jste v relaci obrazovkyJak jste ve výše uvedeném výstupu,
- Nejprve jsem spustil relaci obrazovky a stisknutím kláves Ctrl+a a Ctrl+t zkontroloval, zda jsem v relaci obrazovky.
- Poté jsem se odpojil od relace obrazovky stisknutím Ctrl+a a d .
- A nakonec jsem se znovu připojil k relaci obrazovky a stisknutím kláves Ctrl+a a Ctrl+t znovu zkontroloval, zda jsem v relaci obrazovky.
Tato metoda bude fungovat, i když máte SSH převedeno někam jinam.
Metoda 3 – Použití příkazu Caption
Pokud nechcete pokaždé mačkat klávesy, můžete do ~/.screenrc přidat následující kód soubor. Pokud tento soubor není k dispozici, jednoduše jej vytvořte.
$ nano ~/.screenrc
Přidejte kód:
caption always "%{= kc}Screen session on %H (system load: %l)%-28=%{= .m}%D %d.%m.%Y %0c"
Uložte a zavřete soubor.
Od této chvíle, kdykoli spustíte relaci obrazovky, uvidíte ve spodní části okna terminálu malý oznamovací pruh (s uvedením názvu hostitele, času a data, zatížení systému atd.), jak je znázorněno níže.
Screen session on ubuntuserver (system load: 0.00 0.00 0.00) Sat 22.02.2020 12:37
Zobrazte podrobnosti o relaci obrazovky ve spodní části okna Terminálu Pomocí příkazu Caption
Tato oznamovací lišta zmizí po ukončení relace obrazovky.
Metoda 4 – Nastavení jiné výzvy Bash pro relace obrazovky
Toto je další způsob, jak zajistit, aby byly relace obrazovky snadno rozpoznatelné přidáním několika řádků kódu do ~/.bashrc soubor. Ve skutečnosti se tato metoda nedoporučuje . Pokud jiný shell jako zsh zdědí váš aktuální shell, může to způsobit mnoho zbytečných problémů. Toto je pouze pro vzdělávací účely. Používejte jej na vlastní nebezpečí!
Nejprve zálohujte svůj aktuální ~/.bashrc soubor:
$ cp ~/.bashrc ~/.bashrc.bak
Stačí nastavit jiný název výzvy Bash pro normální a obrazovkové relace, jak si přejete, jak je uvedeno níže. Například jsem přidal následující řádky do svého ~/.bashrc soubor.
if [ -z $STY ] then PS1="This is normal session:~$ " else PS1="This is Screen session:~$ " fi
Odhlaste se a znovu se přihlaste. Při přepínání mezi normálními a obrazovkovými relacemi se název výzvy terminálu změní podle vašeho nastavení.
Nastavit jinou výzvu Bash pro relace obrazovky
Opět není dobrým zvykem měnit název výzvy Bash. Místo toho použijte kteroukoli z předchozích metod ke kontrole, zda jste v relaci obrazovky nebo ne.
Související čtení:
- Jak přizpůsobit Bash Prompt v Linuxu
Doufám, že to pomůže.