Ранее я покинул офис с активным окном терминала, на котором выполнялся скрипт на сервере Centos 7. Теперь у меня есть SSHing из дома, и я хочу посмотреть, где он. Это возможно? Могу ли я присоединиться к тому же окну терминала отсюда?
8
strace -e write -p 12345
(замените pid интересующего вас процесса). Другой вариант:strace -e read -p 12345
(заменить pid эмулятора терминала). В принципе, было бы возможно написать программу, использующуюptrace
системный вызов для сбора информации таким же образом, как этоstrace
делается, и записать ее непосредственно в свой собственный терминал. Я не знаю, существует ли такая программа, но она бы соответствовала требованиям, указанным в вашем вопросе.Ответы:
Как уже упоминалось @Sven, лучшим вариантом является использование
screen
илиtmux
. Это инструменты, известные как «терминальные мультиплексоры». Они позволяют создавать сеансы оболочки, которые можно присоединять и отсоединять от реальных входов в систему. Эти инструменты полезны не только для проверки работы с другого терминала, но и для других функций, в том числе для обмена сеансом с другим пользователем и проверки того, что ваша команда не прекратится, если вы потеряете подключение к Интернету. Если вы ищетеscreen
, вы можете попробовать поискать «Экран GNU». Оба эти инструмента доступны в большинстве систем Linux.Как правило, вы начинаете сеанс, а затем выполняете свою команду внутри этого сеанса. Однако, если вы уже запустили команду, возможно, вы захотите посмотреть статью о переносе запущенной команды в сеанс экрана. Я не рекомендовал бы попробовать это в первый раз на чем-то важном. Этот вопрос может быть полезен:
Перемещение уже запущенного процесса на экран
Если вы хотите проверить, запущен ли процесс, моим любимым инструментом будет strace. Этот инструмент позволяет вам видеть каждый вызов ядра, сделанный процессом. Может потребоваться некоторое умение, чтобы понять вывод, но он должен по крайней мере дать вам представление о том, запущен ли процесс, и если вы посмотрите достаточно близко, может поймать имена файлов, которые он открывает. Для этого сначала найдите PID, возможно, выполнив поиск
ps aux|grep yourcommand
, а затем:Вы можете ^ C, чтобы выйти из этого. Это может не позволить вам повторно присоединиться, но если вы просто хотите знать, что он делает, этого должно быть достаточно.
источник
Один из способов сделать это: TMUX
Как уже указывалось в большинстве ответов - если в существующем сеансе SSH - вы используете
tmux
(илиscreen
) с командойТеперь вы находитесь в новом сеансе bash, в котором вы можете запустить свою программу / команду. Вы можете закрыть его в любое время (но не с помощью CTRL + D, а, скорее, закрыв окно) и вернуться к нему позже, создав соединение SSH с тем же пользователем на том же компьютере и написав команду
Вы также можете иметь несколько
tmux
сеансов, дав им имена сВы можете увидеть список всех открытых
tmux
сессий для вашего пользователя си прикрепить к названной
tmux
сессии сНайти всеобъемлющее
tmux cheat sheet
здесь .Для работающей программы
Пока что ответы, похоже, не учитывают тот факт, что вы можете переместить уже запущенный процесс в другой
tmux
/,screen
как указывает этот ответ . Программа, которая выполняет эту работу, называетсяreptyr
и под Ubuntu / Debian вы можете установить ее с помощью простогоПосле этого узнайте идентификатор процесса вашей работающей программы (например, с помощью
top
илиhtop
), запуститеtmux
сеанс и простоприсоединит запущенный процесс к вашей
tmux
сессии bash.источник
В будущем вы можете использовать
screen
илиtmux
и затем присоединить текущий сеанс.источник
Я использовал Byobu, и я считаю невероятно мощным. Byobu - текстовый оконный менеджер и терминальный мультиплексор с открытым исходным кодом GPLv3.
Таким образом, вы можете открыть сеанс byobu, просто набрав «byobu». Затем вы можете создать новую вкладку с помощью Ctrl + F2 и перемещаться между вкладками с помощью Ctrl + F3 для возврата, Ctrl + F4 для перехода вперед. Вы можете закрыть вкладку с помощью Ctrl + F6 или отсоединиться от сеанса с помощью Shift + F6. Позже вы снова присоединяетесь к сеансу, просто набирая «byobu» снова.
Byobu поддерживает вертикальное и горизонтальное разделение, полный экран и другие необычные функции. Он доступен в Ubuntu / Debian, CentOS / Fedora / RedHat и FreeBSD.
источник
tmux
иscreen
многие считают, что он обеспечивает лучший пользовательский опыт, чем из коробки.Как уже было указано, я рекомендую использовать
tmux
илиscreen
в будущем, но это работает, только если вы думали об этом заранее.Я был в вашей ситуации довольно много раз. Если терминал, который вы использовали, находился на настольном ПК вашего офиса, вы можете подключиться к нему по SSH и запустить VNC-сервер. Таким образом, вы можете хотя бы проверить открытый терминал.
источник
Как все упоминали, tmux можно использовать. Экран не является полезным, когда вы хотите поделиться экраном с несколькими людьми.
Прежде всего, я рекомендую всем попробовать https://tmate.io/, чтобы предоставить временный доступ, даже к локальной машине. tmate поддерживает все вышеперечисленное :)
https://tmate.io/
источник