Я вышел из офиса раньше с активным окном терминала, в котором запущен сценарий на сервере Centos 7. Теперь у меня SSHing из дома, и я хочу посмотреть, к чему это нужно. Это возможно? Могу ли я отсюда вернуться в то же окно терминала?
Как упоминал @Sven, лучшим вариантом является использование screen
или tmux
. Это инструменты, известные как «оконечные мультиплексоры». Они позволяют создавать сеансы оболочки, которые можно присоединять и откреплять от фактических учетных записей. Эти инструменты не только полезны для проверки вашей работы с другого терминала, но и имеют другие функции, включая совместное использование сеанса с другим пользователем и обеспечение того, чтобы ваша команда не прекращалась, если вы потеряете подключение к Интернету. Если вы ищете screen
, вы можете попробовать выполнить поиск по запросу «Экран GNU». Оба этих инструмента доступны в большинстве систем Linux.
Обычно вы запускаете сеанс, а затем выполняете свою команду внутри этого сеанса. Однако, если вы уже запустили команду, вы можете найти статью о перемещении выполняющейся команды в сеанс экрана. Однако я бы не рекомендовал пробовать это в первый раз на чем-то важном. Этот вопрос может быть полезен:
Перенос уже запущенного процесса на экран
Если вы хотите только проверить, запущен ли процесс, моим любимым инструментом будет strace. Этот инструмент позволяет вам видеть каждый вызов ядра, сделанный процессом. Для понимания вывода может потребоваться некоторый навык, но он должен, по крайней мере, дать вам представление о том, запущен ли процесс, и, если вы посмотрите достаточно внимательно, может уловить имена файлов, которые он открывает. Для этого сначала найдите PID, возможно, выполнив поиск ps aux|grep yourcommand
, а потом:
strace -fp YOUR_PID
Вы можете ^ C выйти из этого. Он может не позволить вам повторно подключиться, но если вы просто хотите знать, что он делает, этого должно быть достаточно.
Как уже указывалось в большинстве ответов, если в существующем сеансе SSH вы используете tmux
(или screen
) командой
tmux
Теперь вы находитесь в новом сеансе bash, в котором вы можете запустить свою программу / команду. Вы можете закрыть его в любое время (но не с помощью CTRL + D, а просто закрыв окно) и вернуться к нему позже, установив SSH-соединение с тем же пользователем на том же компьютере и написав команду
tmux attach
Вы также можете иметь множественный tmux
сессий, дав им имена с
tmux new -s myname
Вы можете увидеть список всех открытых tmux
сеанс для вашего пользователя с
tmux ls
и прикрепить к названному tmux
сессия с
tmux a -t myname
Найдите исчерпывающий tmux cheat sheet
Вот.
Ответы, похоже, пока не учитывают тот факт, что вы можете переместить уже запущенный процесс в другой tmux
/ screen
так как этот ответ указывает на то. Программа, которая выполняет эту работу, называется reptyr
а в Ubuntu / Debian вы можете установить его с помощью простого
sudo apt-get install reptyr
После этого узнайте идентификатор процесса вашей запущенной программы (например, с top
или htop
), начать tmux
сеанс и простой
reptyr PID
повторно подключит запущенный процесс к вашему tmux
bash-сессия.
В будущем вы можете использовать screen
или tmux
и затем может повторно подключить запущенный сеанс.
Я использовал Byobu и я считаю невероятно мощным. Byobu - это текстовый оконный менеджер и терминальный мультиплексор с открытым исходным кодом GPLv3.
Таким образом, вы можете открыть сеанс байобу, просто набрав «байобу». А затем вы можете создать новую вкладку с помощью Ctrl + F2 и перемещаться между вкладками с помощью Ctrl + F3 для назад, Ctrl + F4 для вперед. Вы можете закрыть вкладку с помощью Ctrl + F6 или выйти из сеанса с помощью Shift + F6. Позже вы повторно подключитесь к сеансу, просто снова набрав «byobu».
Byobu поддерживает вертикальное и горизонтальное разделение, полноэкранный режим и другие необычные функции. Он доступен в Ubuntu / Debian, CentOS / Fedora / RedHat и FreeBSD.
Как уже отмечалось, рекомендую использовать tmux
или screen
в будущем, но это сработает, только если вы заранее об этом подумали.
Я был в вашей ситуации довольно много раз. Если терминал, который вы оставили включенным, находился на вашем офисном настольном ПК, вы можете подключиться к нему по SSH и запустить сервер VNC. Так вы хотя бы сможете проверить открытый терминал.
Как уже упоминалось, можно использовать tmux. screen бесполезен, если вы хотите показать экран нескольким людям.
Прежде всего, рекомендую всем попробовать https://tmate.io/ чтобы дать временный доступ даже к локальной машине. tmate поддерживает все вышеперечисленное :)