Mam program działający pod ekranem. W rzeczywistości, kiedy odłączam się od sesji i sprawdzam netstat, widzę, że program nadal działa (to jest to, czego chcę):
udp 0 0 127.0.0.1:1720 0.0.0.0:* 3759/ruby
Teraz chcę ponownie dołączyć do sesji z tym procesem. Więc uruchamiam nowy terminal i wpisuję screen -r
$ screen -r
There are several suitable screens on:
5169.pts-2.teamviggy (05/31/2013 09:30:28 PM) (Detached)
4872.pts-2.teamviggy (05/31/2013 09:25:30 PM) (Detached)
4572.pts-2.teamviggy (05/31/2013 09:07:17 PM) (Detached)
4073.pts-2.teamviggy (05/31/2013 08:50:54 PM) (Detached)
3600.pts-2.teamviggy (05/31/2013 08:40:14 PM) (Detached)
Type "screen [-d] -r [pid.]tty.host" to resume one of them.
Ale skąd mam wiedzieć, która sesja uruchamia proces, który utworzyłem?
Teraz jeden z dokumentów, z którymi się spotkałem, powiedział:
„Gdy używasz okna, wpisz Ca A, aby nadać mu nazwę. Ta nazwa będzie używana na liście okien i pomoże ci zapamiętać, co robisz w każdym oknie, gdy zaczniesz używać wielu okien. „
Rzecz w tym, że kiedy jestem na nowej sesji ekranowej, próbuję nacisnąć control + A i nic się nie dzieje.
command-line
gnu-screen
JohnMerlino
źródło
źródło
screen -r
następnie numer 1, 2, 3 ... w tym wykazie ekranów.Odpowiedzi:
W grę wchodzą dwa poziomy „list”. Po pierwsze, masz „listę okien” w ramach pojedynczej sesji, do czego służy ctrl-A A, a po drugie - „listę sesji”, która jest tym, co wkleiłeś w swoim pytaniu i co można również wyświetlić
screen -ls
.Możesz dostosować nazwy sesji za pomocą
-S
parametru, w przeciwnym razie używa twojej nazwy hosta (teamviggy), na przykład:(Ctrl-A d, aby odłączyć)
(Ctrl-A d, aby odłączyć)
Jako bonus możesz użyć jednoznacznego skrótu nazwy, którą przekazujesz
-S
później, aby połączyć się ponownie:(Jestem ponownie połączony z
myprogramrunningunderscreen
sesją)źródło
ctrl-A a
ictrl-A shift-A
. Ten drugi skłonił mnie do tegoSet window's title to:
. Upewnij się, że naciskasz shift dla drugiego A.-S
, musisz użyć co najmniej jednoznacznego skrótu nazwy po numerze identyfikacyjnym i kropki w pełnej nazwie sesji ekranowej podczas wznawiania, w przeciwieństwie do automatycznego wygenerowane nazwy sesji, w których możesz podać identyfikator i kropkę.Miałem przypadek, w którym
screen -r
nie udało się ponownie podłączyć. Dodanie-d
flagi, aby wyglądało to takpracował dla mnie. Odłączył poprzedni ekran i pozwolił mi ponownie podłączyć. Zobacz stronę podręcznika, aby uzyskać więcej informacji.
źródło
Prostym sposobem jest ponowne podłączenie do dowolnego ekranu za pomocą
Następnie, gdy uruchomisz ekran, możesz uzyskać listę wszystkich aktywnych ekranów, naciskając
Ctrl-A "
(np. Control-A, a następnie podwójny cytat). Następnie możesz po prostu wybrać aktywne ekrany pojedynczo i zobaczyć, jakie są uruchomione. Nazewnictwo ekranów oczywiście ułatwi identyfikację właściwego.Tylko moje dwa centy
źródło
Zwykle używam następującej kombinacji, w której muszę pracować na kilku komputerach w kilku klastrach:
To tworzy nową sesję ekranową, w której mogę zbudować środowisko.
Tego właśnie używam, aby ponownie dołączyć do tej sesji ekranowej. Sprytne bity są takie, że jeśli sesja jest dołączona gdzie indziej, odłącza ten inny ekran. Co więcej, jeśli z jakiegoś dziwnego powodu nie ma sesji, na przykład ktoś ponownie uruchomił mój serwer bez mojej wiedzy, tworzy ją. Wreszcie. jeśli istnieje wiele sesji, wykorzystuje pierwszą.
Ogromne uznanie dla https://support.dvsus.com/hc/en-us/articles/212925186-Linux-GNU-Screen- instrukcje dla tej wskazówki jakiś czas temu.
EDYTOWAĆ:
Oto kilka przydatnych wyjaśnień
man screen
dotyczących tajemniczych parametrówjest więcej,
-D
więc koniecznie sprawdźman screen
źródło
Dane wyjściowe
screen -list
są sformatowane jakpid.tty.host
. Pids można wykorzystać do uzyskania pierwszego procesu potomnego zpstree
:Otrzymasz taką listę
źródło
lub
źródło