web-dev-qa-db-ja.com

ttyファイルからデバイスを検索しますか?

これは私のUbuntuからです

$ ls /dev/*tty*
/dev/tty    /dev/tty17  /dev/tty26  /dev/tty35  /dev/tty44  /dev/tty53  /dev/tty62      /dev/ttyS12  /dev/ttyS21  /dev/ttyS30
/dev/tty0   /dev/tty18  /dev/tty27  /dev/tty36  /dev/tty45  /dev/tty54  /dev/tty63      /dev/ttyS13  /dev/ttyS22  /dev/ttyS31
/dev/tty1   /dev/tty19  /dev/tty28  /dev/tty37  /dev/tty46  /dev/tty55  /dev/tty7       /dev/ttyS14  /dev/ttyS23  /dev/ttyS4
/dev/tty10  /dev/tty2   /dev/tty29  /dev/tty38  /dev/tty47  /dev/tty56  /dev/tty8       /dev/ttyS15  /dev/ttyS24  /dev/ttyS5
/dev/tty11  /dev/tty20  /dev/tty3   /dev/tty39  /dev/tty48  /dev/tty57  /dev/tty9       /dev/ttyS16  /dev/ttyS25  /dev/ttyS6
/dev/tty12  /dev/tty21  /dev/tty30  /dev/tty4   /dev/tty49  /dev/tty58  /dev/ttyprintk  /dev/ttyS17  /dev/ttyS26  /dev/ttyS7
/dev/tty13  /dev/tty22  /dev/tty31  /dev/tty40  /dev/tty5   /dev/tty59  /dev/ttyS0      /dev/ttyS18  /dev/ttyS27  /dev/ttyS8
/dev/tty14  /dev/tty23  /dev/tty32  /dev/tty41  /dev/tty50  /dev/tty6   /dev/ttyS1      /dev/ttyS19  /dev/ttyS28  /dev/ttyS9
/dev/tty15  /dev/tty24  /dev/tty33  /dev/tty42  /dev/tty51  /dev/tty60  /dev/ttyS10     /dev/ttyS2   /dev/ttyS29
/dev/tty16  /dev/tty25  /dev/tty34  /dev/tty43  /dev/tty52  /dev/tty61  /dev/ttyS11     /dev/ttyS20  /dev/ttyS3

7つの仮想コンソールがあります。

また、gnomeターミナル内のいくつかのタブ、いくつかのemacs(いくつかはシェルを実行していますが、おそらくすべて閉じています)、およびスクリーンセッション(現在は閉じています)を開いています。

  1. 違いは何ですか /dev/tty/dev/tty[[:digit:]]+/dev/ttyprintk/dev/ttyS[[:digit:]]+
  2. 各ttyファイルが対応するデバイスを確認するにはどうすればよいですか?
  3. 擬似ttyのデバイスファイルは/ dev/ptyであると言う人がいますが、なぜここにptyファイルまたはディレクトリがないのですか?

    $ ls /dev/*pty*
    ls: cannot access /dev/*pty*: No such file or directory
    
  4. わからない/dev/*pts* 手段:

    $ ls /dev/*pts* 
    0  1  10  11  12  13  14  15  16  17  18  2  20  21  22  23  24  26  3  4  5  6  7  8  9  ptmx
    

よろしくお願いします!

7
Tim

ターミナルとは?

端末は、コンピュータ(ホスト)とリモートで通信するために使用する画面とキーボードで構成されています。まるでパソコンのように使用しますが、端末は通信するホストコンピュータから離れています(部屋の向こう側、または世界の向こう側でも)。

質問1

  1. /dev/ttyは、現在のプロセスの制御端末(存在する場合)を表します。どのttyがどのプロセスに接続されているかを確認するには、シェルプロンプト(コマンドライン)でps -aコマンドを使用します。 tty列を見てください。現在使用しているシェルプロセスの場合、/dev/ttyは現在使用しているターミナルです。
  2. Linuxでは、PCモニターはコンソールと呼ばれ、それに関連付けられたいくつかのデバイス特殊ファイルがあります:tty0tty1tty2など。ログインすると、tty1tty2に移動するには、 Alt-F2tty1tty2などは仮想端末(「仮想コンソール」と呼ばれることもあります)。異なる仮想端末にログインすることで、同時にいくつかの異なるセッションをコンピュータで実行できます。を使用してそれらを切り替える Alt-F? 「?」のキー必要な仮想端末番号です。コンソールは/dev/tty0とも呼ばれ、システムメッセージがそのデバイスに送信されてコンソールに表示される場合があります。システムまたはrootユーザーのみが、/dev/tty0がリンクされている/dev/consoleに書き込むことができます。
  3. ttyprintkは、ユーザーがprintkデバイスへの出力を介してttyprintkメッセージを作成できるようにする疑似TTYドライバーです。
  4. /dev/tty/S[[:digit:]]は、シリアルポートを表します。各端末は、ホストコンピュータ(多くの場合、PCのみ)のシリアルポートに接続されます。ポートには名前/番号があります。最初のいくつかは次のとおりです:ttyS0ttyS1ttyS2など。これらは/dev(デバイス)ディレクトリにある特別なファイルで表されます。 ttyS0は、DOSまたはWindowsのCOM1に対応しています。 ttyS1はCOM2などです。

質問3質問4は関連しています。 ギレスここ から素晴らしい説明があります。彼の答えからの抜粋のいくつかは、

疑似端末は、アプリケーションである端末エミュレータによって提供されます。疑似端末には、次のタイプがあります。

  • Xterm、gnome-terminal、konsoleなどのGUIアプリケーションは、キーボードとマウスのイベントをテキスト入力に変換し、出力をいくつかのフォントでグラフィック表示します。
  • 画面やtmuxなどのマルチプレクサアプリケーションは、別の端末との間の入出力をリレーして、テキストモードアプリケーションを実際の端末から切り離します。
  • Sshd、telnetd、rlogindなどのリモートシェルアプリケーションは、クライアントのリモート端末とサーバーのptyの間で入出力を中継します。

また、 疑似端末のwikiページ から、以下の情報が見られます。

マスターデバイスファイルは、通常/ dev/pty [p-za-e] [0-9a-f]という形式の名前で、ターミナルエミュレーターとの通信のエンドポイントです。この[p-za-e]命名スキームでは、最大256のttyペアが存在できます。また、ロックスキームが採用されていない限り、最初の空きptyマスターを見つけるのは際どい場合があります。そのため、FreeBSDなどの最近のBSDオペレーティングシステムは、Unix98 PTYを実装しています。[4]

BSD PTYは、Unix98 ptyによって廃止されました。そのネーミングシステムは、疑似端末の数と競合状態の危険なしに発生するアクセスへのアクセスを制限しません。/dev/ptmxは「疑似端末マスターマルチプレクサ」です。それを開くと、マスターノードのファイル記述子が返され、関連するスレーブノード/ dev/pts/Nが作成されます

そのため、/dev/ptyが使用できないと思われるため、/dev/ptsが表示されます。

参照

http://www.tldp.org/HOWTO/Text-Terminal-HOWTO-7.html

Linux:/ dev/console、/ dev/ttyおよび/ dev/tty0の違い

http://lkml.iu.edu/hypermail/linux/kernel/1009.0/00333.html

4
Ramesh