Назад | Перейти на главную страницу

Как я могу удаленно наблюдать за окном терминала?

Я вышел из офиса раньше с активным окном терминала, в котором запущен сценарий на сервере Centos 7. Теперь у меня SSHing из дома, и я хочу посмотреть, к чему это нужно. Это возможно? Могу ли я отсюда вернуться в то же окно терминала?

Как упоминал @Sven, лучшим вариантом является использование screen или tmux. Это инструменты, известные как «оконечные мультиплексоры». Они позволяют создавать сеансы оболочки, которые можно присоединять и откреплять от фактических учетных записей. Эти инструменты не только полезны для проверки вашей работы с другого терминала, но и имеют другие функции, включая совместное использование сеанса с другим пользователем и обеспечение того, чтобы ваша команда не прекращалась, если вы потеряете подключение к Интернету. Если вы ищете screen, вы можете попробовать выполнить поиск по запросу «Экран GNU». Оба этих инструмента доступны в большинстве систем Linux.

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

Перенос уже запущенного процесса на экран

Если вы хотите только проверить, запущен ли процесс, моим любимым инструментом будет strace. Этот инструмент позволяет вам видеть каждый вызов ядра, сделанный процессом. Для понимания вывода может потребоваться некоторый навык, но он должен, по крайней мере, дать вам представление о том, запущен ли процесс, и, если вы посмотрите достаточно внимательно, может уловить имена файлов, которые он открывает. Для этого сначала найдите PID, возможно, выполнив поиск ps aux|grep yourcommand, а потом:

strace -fp YOUR_PID

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

Один из способов сделать это: TMUX

Как уже указывалось в большинстве ответов, если в существующем сеансе 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 поддерживает все вышеперечисленное :)

https://tmate.io/