Почему завершается процесс Screen при завершении SSH сессии?
Прошу тапками не кидать)
Приобрел VDS сервер, ради интереса, раньше пользовался только shared-хостингами.
Мне нужно выполнить скрипт на сервере, допустим, который считает до 1.000.000 в фоне. То есть, я запустил скрипт, отключился от ssh, выключил комп, включил обратно, подключился к ssh, открыл screen -r script там результат работы скрипта.
Я использую на Windows 10 MobaXterm, подключаюсь по SSH, запускаю скрипт: $ screen -S script
Все отлично, все работает, жму CTRL+A+D, открываю новую сессию чекаю активные сессии: $ screen -ls
Вижу свой скрипт, красота!
Но, если я закрываю SSH сессию любым способом (выход из программы, закрытии вкладки с терминалом, exit) сессия screen тоже прерывается.
Как я думал, если с помощью скрина выполнять что либо, то можно закрыть ssh сессию пойти пить чай, потом подключиться обратно по ssh, зайти в screen -R script и там отобразится ход выполнения скрипта..
Как это вообще работает, подскажите?
Мне кажется проблема именно в MobaXterm через который работаю.
Хочу попробовать завтра на убунте, может там получится..
Для тех, кто столкнётся с подобной проблемой и найдёт этот вопрос. Во многих дистрибутивах, в частности astra linux, systemd прибивает пользовательские процессы при выходе из сессии. Регулируется параметром:
Таких проблем с screen у меня никогда не было. Но я запускал по другому.
логинусь по ssh запускаю screen в нем например начинаю что нибудь компилировать. Потом жму CTRL+A+D.
Закрываю консоль/захожу с другого компа пишу screen -r смотрю как там продолжается компиляции.
как я и думал, проблема была в том через что я заходил на Windows, а это MobaXterm. Там когда закрываешь вкладку с подключением он почему-то полностью всё отрубал. Сегодня через линукс попробовал, всё ок, работает как надо =)
hesy, было бы интересно посмотреть на дерево процессов на удалённой машине. Вот моя обычная ситуация: я захожу на сервер по ssh и запускаю tmux.
Получается такая картина:
sshd - ssh - bash - tmux (client)
tmux (server) - bash
Т.е. tmux сервер запускается не как дочерний для ssh сессии, а как самостоятельный. И когда сессия завершается, ssh своим дочерним процессам шлёт сигнал завершения, а не-дочерний для сессии tmux-сервер продолжает работать.