Linux – Screen

Linux - Screen

Poziom trudności
2/5

Screen to narzędzie dostępne w systemach Linux, służące do wirtualizacji terminala. Screen powiela fizyczny terminal między kilkoma procesami. Mówiąc prostymi słowami, narzędzie to otwiera terminal w terminalu (coś w rodzaju terminalowej incepcji). Daje nam możliwość współdzielenia widoku terminala z innymi użytkownikami w czasie rzeczywistym. Działa w tle, dzięki czemu zamykając fizyczny terminal, wirtualny (ten stworzony za pomocą Screen’a) nieprzerwanie działa. Narzędzie jest bardzo przydatne w przypadku na przykład testowania rozwiązań wymagających kilku terminali jednocześnie, czy też uruchamiania testów, które mogą lecieć w tle.

Instalacja

Screen’a można zainstalować za pomocą narzędzia apt:

pi@raspberrypi:~ # screen -X -S 1655.pts-0.raspberrypi

Nowy screen

Po wywołaniu programu Screen, tworzy on okno z powłoką. Przykrywa on całkowicie „główny” terminal. Aby uruchomić nowy Screen, wystarczy wpisać w linii komend słowo screen:

pi@raspberrypi:~# screen

Gdy zostanie utworzony, w konsoli dostaniemy krótką notkę odnośnie programu:

Screen version 4.01.00devel (GNU) 2-May-06
Copyright (c) 2010 Juergen Weigert, Sadrul Habib Chowdhury
Copyright (c) 2008, 2009 Juergen Weigert, Michael Schroeder, Micah Cowan, Sadrul Habib Chowdhury
Copyright (c) 1993-2002, 2003, 2005, 2006, 2007 Juergen Weigert, Michael Schroeder
Copyright (c) 1987 Oliver Laumann
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either
version 3, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program (see the file COPYING); if not, see http://www.gnu.org/licenses/, or contact Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA.
Send bugreports, fixes, enhancements, t-shirts, money, beer & pizza to screen-devel@gnu.org
Capabilities:
+copy +remote-detach +power-detach +multi-attach +multi-user +font +color-256 +utf8 +rxvt +builtin-telnet

Najważniejszą z wyświetlanych informacjach jest to, że program jest na licencji wolnego oprogramowania. W tym momencie naciśnij Enter, aby przejść no nowego screen’a. Twoim oczom ukaże się terminal i nawet znajdziesz się w tej samej ścieżce co wcześniej. Teraz możesz rozpocząć pracę w osobnym procesie/terminalu, który nie zostanie zamknięty wraz z zamknięciem aktualnej sesji. Aby wyjść ze screen’a należy przycisnąć Ctrl+A+D. Nie jest to jednak równoznaczne z jego usunięciem. Screen nadal działa w tle.

Funkcjonalności

Zacznijmy może od wylistowania wszystkich dostępnych screen’ów, które zostały uruchomione na naszej maszynie. Służy do tego argument -ls (dość intuicyjny):

pi@raspberrypi:~ # screen -ls
There are screens on:
1786.pts-0.raspberrypi (26/10/19 21:49:07) (Detached)
1655.pts-0.raspberrypi (26/10/19 21:35:04) (Detached)
1234.pts-0.raspberrypi (26/10/19 20:42:04) (Detached)
3 Sockets in /var/run/screen/S-root.
pi@raspberrypi:~ #

Powyżej widzimy, że mam dostępne trzy screeny. Mogą one przyjmować stan Detached (odłączony) i Attached (podłączony). Jest to informacja czy jest ktoś aktualnie do nich podłączony. Aby chcemy się do połączyć na przykład do drugiego screen’a wpisz w konsoli:

pi@raspberrypi:~ # screen -x -r 1655.pts-0.raspberrypi

Powyżej widzimy, że użyłem dwóch argumentów. Pierwszy z nich -x pozwala na dołączenie do screen’a, nawet gdy ktoś już jest do niego podłączony (Attached). Możesz wtedy korzystać z niego jednocześnie z innym użytkownikiem logując się do jego urządzenia na przykład za pomocą SSH. Kolejne jest -r. Ten argument służy do ponownego połączenia z istniejącym screen’em, po tym argumencie podajemy jego nazwę.

Gdy już nie potrzebujesz konkretnego wirtualnego terminala, użyj poniższej komendy, oczywiście używając nazwy screen’a, który chcesz usunąć:

pi@raspberrypi:~ # screen -X -S 1655.pts-0.raspberrypi

Wybrany screen zostanie usunięty. Należy pamiętać, że restart urządzenia spowoduje zamknięcie wszystkich screen’ów. Nie zostaną one w żaden sposób wznowione po restarcie.

Screen może nas wspomagać podczas testowania i być niezastąpionym podczas tworzenia konceptów oprogramowania. Podgląd pracy współpracownika w czasie rzeczywistym może służyć celom dydaktycznym. Osobiście nie widzę godnego przeciwnika dla tego narzędzia.

Dodaj komentarz