Mam kilka serwerów, na których uruchamiam eksperymenty screen
. Procedura jest następująca:
ssh
do serwera XXX- uruchomić
screen
- rozpocznij eksperymenty na kilku kartach
- odłączyć
screen
- odłączyć od serwera
Podczas eksperymentów mogę łatwo znaleźć, na których serwerach są, wchodząc ssh
na wszystkie serwery i wymieniając moje uruchomione procesy (używając top
lub ps
).
Jednak po zakończeniu eksperymentów, jak mogę znaleźć, na których serwerach mam otwartą sesję ekranową (aby móc zobaczyć dane wyjściowe, ponownie je uruchomić itp.)?
PS: moje eksperymenty również drukują swoje dane wyjściowe do plików ... ale nie o to chodzi w moim pytaniu.
źródło
ls -R /var/run/screen/S-root/ | grep "NamingConvention"
. Ekrany zapisują w<pid>.<screen_name>
formacie. Jest to przydatne w skryptach bash. Więc jeśli masz ekran z nazwą0000.NamingConvention
, dosłownie zwróci nazwę ekranu, którego szukasz, w łatwym do przeanalizowania formacie.Komenda screen -list może być to, co chcesz.
Zobacz człowieka
źródło
Chociaż odpowiedź Joshperry'ego jest prawidłowa, bardzo denerwuje mnie to, że nie podaje ona nazwy ekranowej (tej, którą ustawiłeś za pomocą opcji -t), to w rzeczywistości to, czego używasz do identyfikowania sesji. (oczywiście nie jego wina, to wada ekranu)
Dlatego zamiast tego używam takiego skryptu:
ps auxw|grep -i screen|grep -v grep
źródło
ls
wyjściu. Jeśli potrzebujesz, możesz także zachować opcję -t.screen -rd <sessionname>
Nie jestem do końca pewien twojego pytania, ale jeśli wszystko, czego naprawdę chcesz, to lista aktualnie otwartych sesji ekranowych, spróbuj:
źródło
Jeśli chcesz zobaczyć ekran w konsoli, musisz napisać polecenie
jeśli musisz uzyskać dostęp do ekranu, musisz użyć poniższego polecenia
Wpisz
PWD
w wierszu polecenia, aby sprawdzić, w którym folderze aktualnie się znajdujeszźródło
W większości przypadków
screen -RRx $username/
wystarczy :)Jeśli nadal chcesz wyświetlić listę wszystkich ekranów, umieść następujący skrypt na swojej ścieżce i nazwij go screen lub cokolwiek chcesz:
Będzie zachowywał się dokładnie tak samo jak screen, z wyjątkiem pokazywania wszystkich sesji screen, podając opcję -ls-all jako pierwszy parametr.
źródło
Wiele osób już to wskazało
wyświetli listę sesji ekranowych.
Oto kolejna sztuczka, która może ci się przydać.
Jeśli dodasz następujące polecenie jako ostatnią linię w pliku .bashrc na serwerze xxx, to automatycznie połączy się ponownie z twoją sesją screen po zalogowaniu.
Mam nadzieję, że uznasz to za przydatne.
źródło
aby zobaczyć, co to ekran działa w przypadku użycia polecenia
źródło
Więc używasz ekranu, aby utrzymać eksperymenty w tle, czy co? Jeśli tak, dlaczego nie uruchomić go w tle?
A jeśli pytasz, jak uzyskać powiadomienie o pracy, którą wykonałem, co powiesz na powiązanie eksperymentu z poleceniem mail?
źródło