На прошлой неделе у меня был файл размером ~ 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
Если доступных экранных сеансов нет, то будет создан новый, что означает, что в моей конкретной ситуации эта команда была бы более подходящей для начала.