Экран не может выпустить pty
На моем linux box, при использовании screen
Я могу открывать, читать и писать в псевдо-терминал с screen
, После закрытия (Ca k y) я не могу подключиться к нему снова, без перезапуска socat
, который предоставляет псевдо-терминал.
Сразу после запуска socat
все выглядит так:
/home/kidmose $ fuser /dev/pts/9
/dev/pts/9: 20960
/home/kidmose $ lsof /dev/pts/9
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
socat 20960 kidmose 5u CHR 136,9 0t0 12 /dev/pts/9
и я могу написать и прочитать, как ожидалось:
/home/kidmose $ echo "uname -a" > /dev/pts/9 && cat /dev/pts/9
uname -a
Linux egki-laptop-linuxmint 3.13.0-24-generic #47-Ubuntu SMP Fri May 2 23:30:00 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
начало screen
также работает один раз (я могу написать и прочитать ожидаемый результат):
/home/kidmose $ screen /dev/pts/9
uname -a # My input
Linux egki-laptop-linuxmint 3.13.0-24-generic #47-Ubuntu SMP Fri May 2 23:30:00 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux # Response
(C-a k y) # I kill the window and screen terminates ([screen is terminating])
Теперь я не могу связаться с screen
ни просто пиши. Экран сразу выходит с [screen is terminating]
и я получаю следующую ошибку при попытке написать:
/home/kidmose $ echo "uname -a" > /dev/pts/9 && cat /dev/pts/9
bash: /dev/pts/9: Device or resource busy
Некоторая информация:
/home/kidmose $ fuser /dev/pts/9
/dev/pts/9: 20960
/home/kidmose $ lsof /dev/pts/9
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
socat 20960 kidmose 5u CHR 136,9te 0t0 12 /dev/pts/9
/home/kidmose $
Любые идеи о том, почему он "занят" / недоступен?
Я заметилte
'появляется в lsof
выход. Любое объяснение этому?
Моя конечная цель - иметь виртуальный терминал на удаленном устройстве. Из-за NAT и т. Д. Мне нужно удаленное устройство, чтобы позвонить на сервер, где будет виртуальный терминал.
Изменить: как lemonsqueeze выразить это в своем комментарии:
[A: sh -> socat] --> [B: socat -> pty -> screen]
Machine A TCP Machine B
1 ответ
Предложение: В этой ситуации я бы пошел с обратным SSH- соединением:
Вместо того, чтобы ваша машина выполняла ssh, серверная машина выполняет ssh и через переадресацию портов гарантирует, что вы можете ssh вернуться на серверную машину.
Но это, конечно, не так весело, как создавать его самостоятельно с помощью socat. Я все еще рекомендую разобраться с этой проблемой, это хороший способ учиться.