web-dev-qa-db-ja.com

画面はPTYをリリースできません

screenを使用しているときは、screenを使用して疑似端末に書き込むことができます。閉じた後(C-A 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
2
kidmose

提案:この状況では、a 逆SSH 接続:

SSHを実行している機械の代わりに、サーバーマシンはSSHを実行し、ポート転送を実行します。

しかし、それは確かにSocatでそれを構築するのと同じくらい楽しいものではありません。私はまだこのPTY問題の底に到達することをお勧めします、それは学ぶのが良い方法です。

2
lemonsqueeze