На моем linux-боксе при использовании screen
я могу открывать, читать и писать на псевдотерминал с screen
.
После закрытия (Ca ky) я не могу подключиться к нему снова, не перезапустив 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