タグ付けされた質問 「pty」

3
擬似端末(pty / tty)とは何ですか?
これは本当に基本的な質問かもしれませんが、私はそれを徹底的に理解したいと思います。 擬似端末とは何ですか?(tty / pty) なぜ必要なのですか?彼らはどのように紹介され、どのようなニーズがありましたか? 彼らは時代遅れですか?もう必要ありませんか?それらを置き換えるものはありますか? 便利なユースケースはありますか? 私がしたこと: マニュアルページを読んでください-いくつかの情報を取得しましたが、正確な画像は取得しませんでした。 Richard StevensによるUnix Network Programmingからそれらを読み込もうとしました。情報は得たが、why?一部は得られなかった。
92 linux  terminal  pty 


4
各擬似端末(PTY)コンポーネント(ソフトウェア、マスター側、スレーブ側)の責任は何ですか?
ttyがどのように機能するかを把握しようとしています1(各要素のワークフローと責任)。私はそれについていくつかの興味深い記事を読みましたが、まだいくつかのぼやけた領域があります。 これは私がこれまでに理解していることです: エミュレートされた端末は/dev/ptmx、擬似端末のマスター部分であるに異なるシステム呼び出しを行います。 擬似端末のマスター部分は、/dev/pts/[0-N]廃止されたシリアルポートに対応するにファイルを割り当て、スレーブ擬似端末をそれに接続します。 スレーブ擬似端末は、セッションID、フォアグラウンドジョブ、画面サイズなどの情報を保持します。 私の質問は次のとおりです。 スレーブ部分を割り当てる以外に、ptmxにはどんな目的がありますか?何らかの「インテリジェンス」を提供しますか、またはエミュレートされた端末(たとえばxterm)が端末のように動作するすべてのインテリジェンスを備えていますか? xtermはスレーブパーツのstdoutとstdinのみを転送するため、マスターパーツと対話する必要があるのはなぜですか?なぜptsファイルから直接読み書きできないの ですか? セッションIDは常に1つのPTSファイルに添付されますか?psコマンドを入力して、同じ/ dev / pts / Xの2つのsessionIdを見つけられますか? ptsストアには他にどのような情報がありますか?Xtermはすべてのフィールドを自分で更新しますか、それともptm何らかの「インテリジェンス」を追加しますか? 1. Linus Akessonによって謎解かれたTTYとAndries Brouwer投稿によるLinux Kernelに、これらのサイトの他のいくつかの質問のように、私の理解の基礎を置きます。

6
コマンドをだまして、出力が端末に送信されると考えるようにする方法
出力が端末に送信されるときに動作を変更するコマンド(色付き出力の生成など)が与えられた場合、変更された動作を維持しながら、その出力をパイプラインでどのようにリダイレクトできますか?そのためのユーティリティが存在する必要がありますが、私は知りません。 などの一部のコマンドにはgrep --color=always、動作を強制するオプションフラグがありますが、問題は出力ファイル記述子のテストのみに依存するプログラムの回避方法です。 問題があれば、私のシェルはbashLinux上にあります。
38 shell  pipe  utilities  stdout  pty 

2
Linuxターミナルはどのように機能しますか?
ターミナルを立ち上げて実行可能ファイルを呼び出すと(単純化のために行指向であると想定)、実行可能ファイルからコマンドへの応答が返されます。これはどのようにあなた(ユーザー)に印刷されますか?端末は次のようなことをしpexpectますか?(出力待ちのポーリング)または何ですか?どのように出力が印刷されるか通知されますか?そして、端末はどのようにプログラムを開始しますか?(それはpythonのos.fork()に似ていますか?)ターミナルがどのように機能するのか戸惑っています。ターミナルエミュレーターで遊んでいますが、この魔法がどのように機能するかまだわかりません。konsole(kde)とyaakuake(おそらくkonsoleを使用)のソースを調べていますが、そのすべての魔法がどこで発生するかわかりません。

3
擬似端末デバイスのもう一方の端に誰がいるかをどのようにして知ることができますか?
私がする場合: echo foo > /dev/pts/12 いくつかのプロセスはfoo\n、ファイル記述子からマスター側にそれを読み取ります。 そのプロセスとは何かを知る方法はありますか? または、言い換えると、どのxterm / sshd / script / screen / tmux / expect / socat ...がもう一方の端にあるの/dev/pts/12かをどのようにして見つけることができますか? lsof /dev/ptmx任意のptyのマスター側にファイル記述子があるプロセスを教えてくれます。プロセス自体はptsname()(TIOCGPTNioctl)を使用して、マスター側への独自のfdに基づいてスレーブデバイスを見つけることができるため、以下を使用できます。 gdb --batch --pid "$the_pid" -ex "print ptsname($the_fd)" によって返されるpid / fdごとに、lsofそのマッピングを構築しますが、その情報を取得するためのより直接的で、信頼性が高く、邪魔にならない方法がありますか?

1
'script / dev / null'は何をしますか?
rootでVMにログインし、suユーザーアカウントにログインするたびに、screenそれを使用しようとするとエラーがスローされます。 Cannot open your terminal '/dev/pts/0' - please check. Stack Overflowの投稿script /dev/nullでは、それを修正するために使用する必要があり、機能するが、それでも私がを入力する必要がある理由を説明していませんscript /dev/null。それが何をするのか、なぜタイプする必要があるのか​​を理解したいと思います。
21 terminal  gnu-screen  su  pty 

2
JenkinsのDockerコンテナーでビルドを実行する方法
Jenkinsを使用して、DockerコンテナでC ++プロジェクトを構築しようとしています。Jenkinsでのビルド、またはJenkinsの外のコンテナでのビルドに問題はありません。 以下は私が試したものです。わかりやすくするために、ボリュームマッピングを省略しています。 事例1 次のコマンドは、シェルでビルドを正常に実行します。 docker run --rm --interactive=true --tty=true $IMAGE make ただし、Jenkinsで「シェルの実行」ステップとして実行すると、Dockerは次のエラーを返します。 cannot enable tty mode on non tty input 事例2 次のコマンドは前のものと似ていますが、対話機能を無効にします。 docker run --rm $IMAGE make Jenkinsはビルドを正常に実行できます。ただし、ビルドを中止すると深刻な問題が発生します。ビルドは直ちに中止としてマークされますが、コンテナはビルドが完了するまで実行を続けます。また、コンテナは終了後に削除されません。 シェルで実行すると、コマンドは正常にビルドされますが、コマンドを中断することはできません。また、コンテナは終了後に削除されます。 質問 JenkinsのDockerコンテナでビルドをきれいに実行し、ビルドを中止する機能を保持する方法を誰もが知っていますか? Docker呼び出しはスクリプト内にあり、簡単に抽出できないため、Jenkinsプラグインを使用することはオプションではありません。
18 tty  docker  pty  jenkins 

3
sshクライアントの引数の後に対話型プログラムが続く場合、sshdは疑似端末を使用しないのはなぜですか?
SSHサーバーに接続する通常の方法はssh username@ip_addressです。しかし、ユーザーはリモートマシンでプログラムを実行したいだけかもしれません。したがって、プログラム名は、通常の引数の後に続きますssh username@ip_address <program_name>。たとえば、ssh username@ip_address ls。対話型プログラム(ユーザー入力も受け入れ、出力も提供する)を除いて、その引数は問題ありませんtop。出力は TERM環境変数が設定されていません。 つまり、sshdとtopプログラムの間に(疑似)端末が接続されていません。解決策は-t、コマンド全体がになる引数を追加することssh -t username@ip_address topです。 私の質問は、なぜデフォルトではsshdも疑似端末を使用して非対話型プログラムと通信できない-tため、対話型プログラムの引数を追加する必要がないのですか?
11 ssh  pty 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.