Как вернуться к процессу, вызванному SSH?

207
Shan-Desai

Я использую Raspberry Pi -2 и ноутбук Ubuntu (14,04 LTS) в режиме ad-hoc по WiFi. У меня есть несколько python3сценариев, которые я обычно запускаю, используя ssh -6(так как я использую локальные адреса IPv6 ) для запуска моего сценария python3.

Например:

ssh -6 pi@fe80::a1b2:c3ff:fed4:e5g6%wlan0 'python3 myScript.py' 

чтобы убить скрипт на сокете я использую:

ssh -6 pi@fe80::a1b2:c3ff:fed4:e5g6%wlan0 'fuser -k portNumber/udp' 

Это запустит скрипт на Raspberry Pi и, если я не использую CTRL+, Cя, конечно, увижу вывод скриптов на моем терминале. Но я провожу некоторые эксперименты, где я обычно выхожу из терминала, и скрипт на Pis продолжает работать (некоторые программы для сокетов!).

Я хочу вернуться к сценарию на Пи, это возможно? Я имею в виду, когда я снова ssh -6на адрес пи, могу ли я на самом деле пойти в терминал, где процесс все еще работает? Насколько я помню, я не могу использовать разные ttys Пи при использовании ssh.

Замечания :

Я действительно не уверен, если я должен опубликовать это здесь или на ServerFault, пожалуйста, будьте любезны, чтобы направить меня!

0
`screen`,` tmux` может делать то, что вы хотите, но действительно трудно понять, что вы пытаетесь описать ... Jakuje 7 лет назад 0

1 ответ на вопрос

1
grawity

You cannot return to the same terminal with plain ssh (the pty gets destroyed as soon as ssh disconnects), and in fact there is no terminal when you run commands in "batch mode" – just raw stdout. (There's -t to force a terminal though.)

However, you can do this with terminal multiplexers like tmux, screen, or dtach, which are mostly written for this exact purpose:

ssh myserver "tmux new-session -d -n myscript ./myScript.py" ssh -t myserver "tmux attach -n myscript" ssh myserver "tmux kill-session -t myscript" 

With dtach:

ssh myserver "dtach -n ~/myscript.sock ./myScript.py" ssh -t myserver "dtach -a ~/myscript.sock" 

With screen:

ssh myserver "screen -dmS myscript ./myScript.py" ssh -t myserver "screen -r myscript" 
Привет, мне нужен быстрый совет, например, когда я делаю следующее: `tmux new-session -d -s mySession '. / Myscript.py'` и когда я присоединяюсь с использованием` tmux attach -t mySession`, я вижу, что мой скрипт работает , Теперь я хочу выйти из сеанса, не останавливая сценарий. Я не хочу использовать ` CTRL+ C` как я могу использовать горячие клавиши в Tmux для безопасного выхода из сеанса, не убивая его. Это должно быть что-то вроде ` CTRL` + ` B` then ` :` и что еще? Shan-Desai 7 лет назад 0
Ах! фигу нашел! в сеансе мне нужно ` ctrl` + ` b` + ` z` Shan-Desai 7 лет назад 0
также `ssh -t myserver" tmux a "` или `ssh -t myserver" tmux attach -t myscript "` приводит меня в сессию, но я не могу затем выйти из окна команд `ssh`, которое застревает там Shan-Desai 7 лет назад 0

Похожие вопросы