Статьи

Начало работы с экраном

На прошлой неделе у меня был файл размером ~ 10 ГБ, который я хотел загрузить на свой компьютер, но первоначальная оценка Chrome заключалась в том, что для этого потребуется более 10 часов, что означало, что я, вероятно, выключил бы свой компьютер до его завершения.

Казалось, что имеет больше смысла раскрутить экземпляр EC2 и загрузить его туда, но я не хотел, чтобы сеанс SSH оставался открытым для этой машины.

Ранее я сталкивался с  экранами  и  tmux,  которые позволяют вам создавать сеанс, в котором вы можете выполнять некоторую работу, даже если вы в данный момент не подключены к ней, что идеально подходит для моего варианта использования.

Экран был немного более знакомым, поэтому я решил использовать его, и подумал, что должен сделать краткий обзор некоторых из его основных флагов для будущего меня.

Начинаем новый сеанс

Начать новый сеанс экрана так же просто, как набрать следующую команду:

$ screen

что приводит к следующему выводу:

Screen version 4.00.03jw4 (FAU) 2-May-06
 
Copyright (c) 1993-2002 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 2, or (at your option) any later
version.
...

Теперь мы можем начать загрузку нашего файла с помощью cURL, wget или ускорителя загрузки, такого как  axel,  который является моим любимым.

Отключение / выход из сеанса без его смерти

Как только я запустил загрузку, я хотел закрыть сеанс SSH для экземпляра AWS, но сначала я хотел отсоединиться от сеанса экрана, не убивая его.

Моя первая попытка состояла в том, чтобы использовать  Ctrl + D,  но это фактически приводит к завершению сеанса, и поэтому наша загрузка также останавливается, что не совсем то, что мы хотели.

Вместо этого мы хотим  отсоединиться  от сеанса, что позволяет нам  оставить его, но сохранить его работающим . Для этого мы вводим  Ctrl + A  затем  Ctrl + D .

Прикрепление к сеансу

Примерно через час я захотел проверить загрузку и решил, что просто набрав  экран  , я вернусь к сеансу, но вместо этого создал новый.

Алистер  указал, что я могу получить список всех сеансов открытого экрана, набрав следующую команду:

$ screen -ls
There are screens on:
	23397.pts-0.ip-10-243-5-102	(07/31/2013 05:25:30 AM)	(Detached)
	3981.pts-0.ip-10-243-5-102	(07/26/2013 07:59:28 AM)	(Detached)
	3910.pts-0.ip-10-243-5-102	(07/26/2013 07:58:42 AM)	(Detached)
	1094.pts-0.ip-10-243-5-102	(07/26/2013 07:49:31 AM)	(Detached)
4 Sockets in /var/run/screen/S-ubuntu.

Как видите, я по ошибке создал кучу дополнительных сессий.

Тот, на котором я загружал, был ‘1094.pts-0.ip-10-243-5-102’, и мы можем присоединиться к нему так:

$ screen -x 1094.pts-0.ip-10-243-5-102

Мы также можем прикрепить, используя флаг ‘-r’:

$ screen -r 1094.pts-0.ip-10-243-5-102

Я не совсем уверен, в чем разница между ‘-r’ и ‘-x’, они оба, кажется, ведут себя одинаково в этом сценарии.

В руководстве предполагается, что «-x» предназначен для подключения к «неотключенному сеансу экрана», что говорит мне о том, что он не должен был работать, поскольку я хотел подключиться к отдельному сеансу.

Надеюсь, кто-то с большим знанием того, как эти вещи работают, может объяснить, что происходит!

Присоединить к существующему сеансу или начать новый, если ни один не существует

Позже я  узнал,  что если бы я случайно не создал все эти дополнительные сеансы, следующая команда была бы весьма полезна для поиска первого сеанса экрана и подключения к нему:

$ screen -x -R

Если доступных экранных сеансов нет, то будет создан новый, что означает, что в моей конкретной ситуации эта команда была бы более подходящей для начала.