Вопрос или проблема
Я прочитал руководство и онлайн-помощь, но все равно не могу понять идею команды screen. Пусть я SSH на свой linux shell. Внутри я хочу запустить программу, которая будет работать 8 часов:
- Я создаю “отделенный экран”, введя
screen
, а затемcrtl+a
,crtl+d
, чтобы отсоединиться. - Затем я запускаю свою программу
my_prog
Что делать потом? Как вернуться к своему обычному терминалу и продолжить свою обычную сессию? Если я просто закрою SSH-окно и переподключусь, то моя программа остановится.
Мой вопрос заключается в том, какие конкретные шаги я должен сделать, чтобы:
- Работать в оболочке как обычно
- Запустить screen, чтобы запустить программу в фоновом режиме
- Продолжить работу в старой оболочке
- Выйти из SSH сессии
- Установить новую SSH сессию и переключиться на мою программу, которая работала, пока меня не было
Или это наоборот? Я ввожу my_prog &
, затем вызываю screen
и отсоединяюсь, а затем закрываю окно терминала?
- Вы запускаете
screen
, - Запускаете программу в
screen
, - А затем отсоединяете её.
screen -R
, чтобы снова подключиться.
Если вы запускаете много независимых screen
сессий, используйте опцию -S
, чтобы называть ваши сессии и подключаться к именованным сессиям, или используйте -ls
, чтобы перечислить существующие сессии и подключиться к ним.
- Запустите сессию screen
screen -S session_name
- ssh в систему
ssh -i path/to/your-key.pem ec2-user@your-ec2-public-ip
- Запустите программу, например, jupyter notebook
jupyter notebook --no-browser --port=8888
- Отсоединитесь от сессии screen: нажмите следующую последовательность клавиш, чтобы отсоединить сессию
Ctrl+A, затем D
-
Присоединитесь снова к сессии screen
screen -r my_jupyter_session
-
Дополнительно – перечислите активные сессии
screen -ls
Ответ или решение
Как использовать команду screen в Linux через SSH
Команда screen
является мощным инструментом для управления несколькими виртуальными терминалами внутри одной сессии SSH. Благодаря своей функциональности, она позволяет запускать длительные процессы даже после отключения от сессии, что особенно полезно для удаленных серверов. В данном объяснении мы рассмотрим полный процесс использования screen
с учетом всех необходимых шагов.
Шаги по использованию screen в Linux через SSH:
-
Запустите SSH сессию на своем сервере:
Используя ваш SSH-клиент, подключитесь к серверу. Например:ssh -i path/to/your-key.pem username@server-ip
-
Создайте новую сессию screen:
После успешного подключения, создайте новую сессиюscreen
с заданным именем для удобства управления:screen -S mysession
Здесь
mysession
– это имя, которое вы присваиваете сессии, чтобы впоследствии легко ее найти и подключиться. -
Запустите свою программу:
Теперь, находясь в сессииscreen
, как раз здесь и необходимо запустить длительную программу, например:my_prog
-
Отключитесь от сессии screen:
Для временного отключения сессии и возврата к обычному терминалу, используйте комбинацию клавиш:Ctrl+A, затем D
Это позволит вам отделить сессию
screen
, при этом работающая программа продолжит выполняться в фоновом режиме. -
Продолжайте работать в обычной оболочке:
После отсоединения, вы можете продолжать использование вашей SSH-сессии, запускать другие команды или приложения так же, как вы это делали раньше. -
Закройте свою SSH-сессию:
Теперь вы можете без опасений закрывать ваше SSH-соединение. Программа, запущенная в сессииscreen
, будет продолжать выполняться независимо. -
Подключитесь снова к серверу:
Когда вы хотите вновь подсоединиться к серверу, выполните вход через SSH заново:ssh -i path/to/your-key.pem username@server-ip
-
Переподключитесь к вашей сессии screen:
Для повторного подключения к уже существующей сессииscreen
, выполните:screen -r mysession
Теперь вы можете увидеть вывод своего запущенного приложения и взаимодействовать с ним.
-
Список активных сессий:
Если вы забыли имя сессии или у вас несколько активных сессий, вы можете просмотреть список всех сессий с помощью команды:screen -ls
-
Завершение сессии screen:
Чтобы выйти изscreen
навсегда и завершить сессию, когда вы завершили работу с программой, используйте:exit
Либо, если приходите к командной строке вашего приложения, просто введите
exit
или закройте приложение.
Зачем использовать screen?
Преимущества использования screen
включают:
- Устойчивость к отключениям: программы не завершаются при потере соединения.
- Параллельная работа: возможность иметь несколько работающих сеансов одновременно.
- Легкость в управлении: создание и переключение между сессиями без необходимости выполнять дополнительные команды или использования нескольких SSH-соединений.
Используя описанную выше последовательность шагов, вы сможете эффективно управлять фоновыми процессами на удаленном Linux-сервере, используя команду screen
.