Ustawienie nazwy sesji ekranowej


44

Czy istnieje sposób na nadanie określonej nazwy sesji ekranu unix? Powiedzmy na przykład, że uruchamiam ten sam program wiele razy, każdy z różnymi parametrami i chcę powiedzieć, który jest który.


To nie jest pytanie programistyczne. Powinien przejść do SuperUser lub Unix.
0xC0000022L

Odpowiedzi:


54

Możesz nazwać sesję, rozpoczynając ją z -S nameopcją. Z poziomu uruchomionego ekranu możesz to zmienić, pisząc CTRL-a, :sessionname name. Możesz przeglądać uruchomione sesje ekranu za pomocą screen -lsi łączyć się z jedną nazwą za pomocą screen -xS name.

W ramach sesji na jednym ekranie możesz także nazwać każde okno. Zrób to, wpisując żądaną CTRL-a, Anazwę. Możesz wyświetlić interaktywną listę nazwanych okien, wpisując CTRL-a, "i wybierając z listy tę, na którą chcesz się przełączyć.

Nazewnictwo zarówno ekranów, jak i terminali na ekranach jest naprawdę pomocne, aby pamiętać, czym one są i dlaczego je uruchomiłeś.


Zmiana nazwy sesji ekranowej po jej rozpoczęciu jest możliwa (przy użyciu :sessionname NEWNAME), ale „ogólnie odradzana”. $STYZmienna nadal odnosi się do pierwotnej nazwy. Zobacz screeninstrukcję: gnu.org/software/screen/manual/html_node/Session-Name.html
Keith Thompson

22

Istnieją tutaj dwa pojęcia i nie jestem pewien, który z nich masz na myśli:

  • Możesz mieć wiele okien ekranowych. Każde okno uruchamia powłokę lub inny program. Wszystkie okna są hostowane przez ten sam proces. C-a ctworzy okno C-a ni C-a pprzełącza się do następnego / poprzedniego okna i tak dalej.
  • Możesz mieć wiele sesji ekranowych. Każda sesja jest hostowana przez własny proces i jest niezależna od wszystkich innych sesji. Ekran startowy bez żadnej opcji ponownego przyłączenia ( -rlub -R) tworzy nową sesję.

Windows ma tytuły, które można ustawić za pomocą -topcji wiersza polecenia, C-a Apowiązania klawiszy, titlepolecenia lub \eksekwencji ucieczki. Aby uzyskać więcej informacji, zobacz odpowiedź shelltera .

Sesje mogą mieć nazwy. Zazwyczaj ustawiasz nazwę w wierszu poleceń z -Sopcją; jeśli nie podasz nazwy, screen ją wymyśli. Jeśli używasz wielu sesji ekranowych, zwykle nadajesz im różne nazwy sesji. Możesz wyświetlić listę sesji uruchomionych za pomocą screen -ls; pierwszym słowem w każdym wierszu sesji jest 12345.sessionname12345 to identyfikator procesu ekranowego. Użyj screen -r sessionnamelub, screen -r 12345aby wznowić sesję wskazaną przez nazwę lub identyfikator procesu.


1
W domyślnych powiązaniach klawiszy, aby zmienić tytuł, musisz użyć Ca A.
enzotib

11

Ach ... Ekran, zabiera mnie z powrotem ;-)

Dla jednego okna

-t name
    sets the title (a.k.a.) for the default shell or specified program. 
    See also the "shelltitle" .screenrc command.

W przypadku wielu sesji rozpoczętych z twojego .screenrc

screen -t top 2 nice top
screen -t ....

Oto link do jednej kopii strony podręcznika użytkownika dla ekranu.

Edycja: dodano

Aby zmienić bieżącą nazwę ekranu, utwórz narzędzie skryptowe powłoki, takie jak

cat scrnTitle.sh
#/bin/bash
echo -ne '\ek${0}\e\\'

Nie przetestowano, nie mam dostępnego ekranu w systemie, nad którym pracuję.


Dzięki, to bardzo pomaga. Czy istnieje jakakolwiek zmiana nazwy już istniejącej sesji ekranowej?
dobrze właściwie

@Charlotte: zobacz zmiany. Dzięki za głosy!
łupacz

Dobra odpowiedź @shellter! Jestem ciekawy, czy powiedziałeś „zabiera mnie z powrotem”, co oznacza, że ​​używasz obecnie czegoś innego (np. Tmux), czy po prostu, że ma on ponad 32 lata ?
tutuDajuju

1
@tutuDajuju: Gulp, teraz, kiedy o tym myślę, wykorzystałem screenco najmniej 25 lat. Zabiera mnie z powrotem, ponieważ teraz jest to specjalny przypadek użycia, który by mnie zabrał screen. Zwykle po prostu się otwieram X-Terms, ale pamiętam, kiedy wydawało się, że nie można uruchomić Xna komputerze 486 ;-) Pozdrawiam!
shellter

@shellter FYI, uruchomiłem X na komputerze 486 z 8 MB pamięci RAM w 1992 roku ...
Eno

4

Podczas biegania screen:

Ctrl+a(lub jakakolwiek jest twoja screensekwencja ucieczki)A


3

Powyższe odpowiedzi już mówią, jak nazwać ekran podczas jego uruchamiania. Wskazują również, że po uruchomieniu ekranu nie można zmienić nazwy ekranu. Tytuł okna można ustawić, ale nazwa użyta do dołączenia do ekranu pozostaje pid.pty.host.

Jednak, aby uzyskać użyteczny efekt, zauważyłem, że używanie aliasu działa całkiem dobrze. Jeśli zapomnę nazwać ekran lub znajdę się w sesji z kilkoma ekranami w górę, które naturalnie stały się ekranami dla określonych zadań, po prostu ustawiam alias dla polecenia, które należy do nich dołączyć.

przykład:

alias goncompile='screen -r 2354'

Samo wydanie polecenia aliasu przypomni Ci, jakie ekrany masz ustawione, i polecenia, które ustawiłeś, aby do nich dołączyć.

Użyj, unaliasaby je usunąć.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.