Czasem zachodzi sytuacja, gdy np. musimy wykonać jakiś czasochłonny proces na serwerze i musimy pilnie wyjść z pracy / domu. Albo po prostu jest już 2 w nocy 😉
Możemy zrobić to poprzez konsolę uruchamiając proces w tle na np. odległym serwerze i wylogowywując się z tego serwera. Łącznie z wyłączeniem naszego komputera!
Co to mogą być za zadania do wykonania?
- Pobieranie (lub szczególnie wysyłanie) dużej ilości plików przez FTP
- Wywołanie długo trwałego zapytania MySQL
- Pobieranie torrentów – oczywiście legalnych ISO dystrybucji Linux 😉
- Długotrwały commit / checkout w SVN (czytaj nasze artykuły poświęcone SVN)
itp.
Aby uruchomić tak proces – skorzystamy z programu screen
Zawartość artykułu
Uruchamianie nowej sesji screen
Sesji może być tyle ile zapragniemy. Każdą nową sesję uruchamiamy poprzez:
| 1 | screen -S {nasza-dowolna-nazwa} | 
Czyli np. jak wysyłamy pliki na serwer w home.pl nazwijmy taką sesję:
| 1 | screen -S homewysylanie | 
(wielkość liter ma znaczenie)
Wtedy otworzy nam się „nowa” konsola gdzie możemy normalnie w świecie wywoływać programy. Aby rozpocząć wysyłanie FTP – mozemy tutaj użyć programu Midnight Commander – czytaj jak użyć go do obsługi FTP
Bezpieczne wylogowanie się z sesji screen
Tutaj jest klucz naszych rozważań. Jak już uruchomimy proces który musi trwać – musimy jakoś „zamknąć” sesję o naszej nazwie (tutaj: homewysylanie). W tym celu wykonujemy komibnację klawiszy:
| 1 2 | CTRL+A CTRL+D | 
Gotowe, sesja zamknięta.
Wznowienie sesji screen
Aby ją wznowić – musimy znać identyfikator konkretnej sesji (bo, jak zaznaczaliśmy – może być ich dowolna liczba). W tym celu listujemy aktualne sesje:
| 1 | screen -ls | 
Następnie wybieramy sesję, którą chcemy wznowić poprzez podanie jej identyfikatora (oczywiście u Ciebie będzie on inny – jedynie label sesji screen – czyli nazwa homewysylanie pozostanie ta sama jeśli takiej użyjesz):
| 1 | screen -r 6578.homewysylanie | 
To wszystko – sesja screen którą wówczas pozostawiliśmy – wznowiona:)
Usuwanie wszystkich sesji screen
W tym celu pomocna będzie komenda killall:
| 1 | killall screen | 
Użycie komendy killall opisaliśmy tutaj.
 
		
