Jak przypisać nazwę do ekranu? [Zamknięte]

471

Korzystam z screennarzędzia multipleksera w powłoce poleceń i otwieram wiele ekranów. Następnie zapominam, który identyfikator procesu wiąże się z którym zadaniem.

Chciałbym ustawić nazwę ekranu, ale nie mogę znaleźć opcji na stronie podręcznika.

Obecnie lista ekranów wygląda następująco:

There are screens on:
    5422.pts-1.aws1 (Detached)
    5448.pts-1.aws1 (Detached)
    5027.pts-1.aws1 (Detached)
3 Sockets in /var/run/screen/S-sb.

I chciałbym zobaczyć coś takiego:

There are screens on:
    5422.logCleanWorker (Detached)
    5448.overNightLongTask(Detached)
    5027.databaseOverNightLongTask (Detached)
3 Sockets in /var/run/screen/S-sb.

W jaki sposób mogę to zrobić?

spankmaster79
źródło
4
pytanie bardziej przypomina pytanie „jak zmienić nazwę istniejących sesji” niż „jak rozpocząć nowe sesje z nazwą”. W tym kontekście obecnie wybrana odpowiedź nie jest w rzeczywistości odpowiednia. Prawidłowa odpowiedź powinna raczej brzmieć: user164176- stackoverflow.com/a/3309696/636762
Rakib
Nazwy sesji ekranowych sugerują utworzenie nowej sesji ekranowej dla pojedynczego zadania (może jednego polecenia). Ekran obsługuje wiele okien , dzięki czemu możesz uruchomić wszystkie te zadania w jednej sesji ekranu.
Melebius
3
Czy można to przenieść do SuperUser (lub innej strony StackExchange)? Oczywiście jest to bardzo przydatne dla wielu osób, choć nie wchodzi w zakres tej konkretnej witryny.
Patrick Sanan,
1
jeśli znajdziesz opcję na tej stronie, aby przenieść ją tam z całą historią, to zgodziłbym się na przeniesienie
spankmaster79

Odpowiedzi:

651

Aby rozpocząć nową sesję

screen -S your_session_name

Aby zmienić nazwę istniejącej sesji

Ctrl+ a, :nazwa sesji YOUR_SESSION_NAMEEnter

Musisz być w sesji

użytkownik164176
źródło
14
Jest to właściwe rozwiązanie, ponieważ koncentruje się na zmianie nazwy istniejącej sesji, a nie na tworzeniu nowej.
thanos.a
4
Krótka uwaga na temat C-a :składni .... „Wszystkie polecenia ekranowe są domyślnie poprzedzone klawiszem Escape C-a(to jest Control-a, czasem napisane ^a). Aby wysłać literał C-ado programów wyświetlanych na ekranie, użyj C-a a. Jest to przydatne podczas pracy z screen in screen. Na przykład C-a a nprzenosi ekran do nowego okna na ekranie wewnątrz ekranu. ” (zob .: aperiodic.net/screen/quick_reference )
Nate Ritter
Bardzo mile widziane. Chociaż wiem, że możesz zacząć od imienia, często zaczynam bez nazywania, a potem chciałbym móc później. Dzięki!
Ketzak
2
zgodził się po obejrzeniu go kilka lat później: D
spankmaster79
Czy mogę powiązać z C-a :sessionname NEWNAMEczymś szybszym do pisania? Próbowałem, bind $ sessionnameale teraz, gdy C-a $nie pyta mnie o nowe imię. Czy to jest w jakiś sposób możliwe?
andreas-h
592

Aby utworzyć nowy ekran z nazwą foo, użyj

screen -S foo

Następnie, aby go ponownie podłączyć, uruchom

screen -r foo  # or use -x, as in
screen -x foo  # for "Multi display mode" (see the man page)
Miedwar
źródło
16
W swoim rozwiązaniu objaśniasz, jak tworzyć nowe z poprawnymi nazwami zamiast zmieniać istniejące. Nie ma nikogo, kto chciałby zakończyć sesję, jeśli można ją zachować.
thanos.a
10
Przewiń w dół do odpowiedzi user164176, aby zobaczyć, jak zmienić nazwę istniejących sesji.
jlh
1
pytanie bardziej przypomina pytanie „jak zmienić nazwę istniejących sesji” niż „jak rozpocząć nowe sesje z nazwą”. W tym kontekście obecnie wybrana odpowiedź nie jest w rzeczywistości odpowiednia. Wybrany prawidłowa odpowiedź powinna być raczej jedna generowana user164176- stackoverflow.com/a/3309696/636762 poniżej
Rakib
Szukałem „ubuntu utwórz nowy ekran z nazwą” w google i to był pierwszy wynik. Dokładnie to, czego szukałem :) dzięki
Skylord123
Aby zmienić nazwę sesji: Ctrl + a,: nazwa sesji YOUR_SESSION_NAME Enter.
Slake
51

Jak już wspomniano, screen -S SESSIONTITLEdziała na rozpoczęcie sesji z tytułem ( SESSIONTITLE), ale jeśli rozpoczniesz sesję, a później zdecydujesz się zmienić jej tytuł. Można to osiągnąć za pomocą domyślnych przypisań klawiszy:

Ctrl+ a,A

Które podpowiada:

Set windows title to:SESSIONTITLE

Zmień SESSIONTITLE, wprowadzając odstępy i wpisując żądany tytuł. Aby potwierdzić zmianę nazwy i wyświetlić wszystkie tytuły.

Ctrl+ a,"

E4Y
źródło
40
Traktujesz terminy sesji i okna jako wymienne, gdy nie są. Ctrl+a, Anie ustawia nazwy sesji ( SESSIONNAME), ustawia tylko bieżący tytuł okna . Tytuły okien w ramach sesji nie pojawiają się na liście sesji, gdy są o to pytane screen -list. Pytanie dotyczy sposobu ustawienia nazwy sesji .
StvnW
5
przydatne, ale zmienia bieżący tytuł okna, a nie nazwę sesji.
Znik
13

Najłatwiejszy sposób korzystania z ekranu z nazwą

screen -S 'name' 'application'
  • Ctrl+ a, d= zamknij i pozostaw aplikację otwartą

Powrót do ekranu:

screen -r 'name'

na przykład za pomocą rysia z ekranem

Utwórz ekran:

screen -S lynx lynx

Ctrl+ a, d= wyjście

później możesz wrócić z:

screen -r lynx
OneOFPunx
źródło
18
Trzy problemy z tym. Po pierwsze, kilka osób już to opublikowało. Po drugie, mówisz mu o podstawowych rzeczach związanych z użytkowaniem ekranu, które już zna. Po trzecie, tak naprawdę nie odpowiedziałeś na pytanie, ponieważ zapytał, jak nazwać już istniejącą sesję ekranową.
Steely Dan
0

Jestem początkującym do przeglądania, ale uważam, że jest to niezwykle przydatne podczas przywracania utraconych połączeń. Odpowiedzi na twoje pytanie już zostały udzielone, ale ta informacja może służyć jako dodatek - używam kitu z menedżerem połączeń kit i nazywam swoje ekrany - „tab1”, „tab2” itp. - jak dla mnie ogólny obraz 8-10 tabs jest ważniejszy niż nazwa każdej pojedynczej karty. Korzystam z 8. zakładki do łączenia się z db, 7. do przeglądania logów itp. Więc kiedy chcę ponownie podłączyć ekrany, napisałem proste opakowanie, które mówi:

#!/bin/bash
screen -d -r tab$1

gdzie pierwszym argumentem jest numer tabulacji.

Saurabh Hirani
źródło
1
Można to lepiej zrobić jako funkcję bash.
Paul Price