/dev/console
Linuxシステムでは、/dev/tty
との違いは何ですか/dev/tty0
?
それぞれの用途は何で、どのように比較しますか?
答え1
~からKernel.orgのLinuxカーネルドキュメント:
/dev/tty Current TTY device
/dev/console System console
/dev/tty0 Current virtual console
昔は/dev/console
sysadminコンソールがありました。 TTYは、サーバーに接続されたユーザーのシリアルデバイスです。
Now/dev/console
と/dev/tty0
現在の表示を表し、通常は同じです。を追加console=ttyS0
しますgrub.conf
。その後、あなたは/dev/tty0
モニター/dev/console
です/dev/ttyS0
。
/dev/tty
との違いを示す練習/dev/tty0
:
Ctrl++を押してAlt2番目のコンソールに切り替えますF2。root
.typeでログインしてくださいsleep 5; echo tty0 > /dev/tty0
。Enter3番目のコンソールに切り替えるには、+を押し続けます。次に+を押して2番目のコンソールに戻ります。 Enterキーを押して3番目のコンソールに切り替えます。AltF3AltF2sleep 5; echo tty > /dev/tty
Enter
tty
これはプロセスが開始されたコンソールであり、tty0
常に最新のコンソールであることがわかります。
答え2
/dev/console
起動時にパラメータとして設定できる仮想デバイスのセット。シリアルデバイスまたは仮想コンソールにリダイレクトでき、デフォルトではそのコンソールにリダイレクトされます/dev/tty0
。複数のconsole=
オプションがカーネルに渡されると、コンソール出力は複数のデバイスに移動されます。/dev/tty[0-N]
(最も高い属性のTTY番号(63など))は、使用するN
ように切り替えた仮想コンソールの1つです。controlaltF1/dev/tty0
また、デフォルトでは仮想コンソールもあります。/dev/tty
コンソールを開いたプロセスに関連付けられているコンソール(物理、仮想、または擬似デバイス)のエイリアス。他のデバイスとは異なり、書き込みにはroot権限は必要ありません。また、バッチプロセスのように開始されたプロセスは、どのプロセスにも関連付けられていないためcron
使用できません。/dev/tty
これらのプロシージャ?
には、出力列に1つがあります。TTY
ps -ef
答え3
/dev/コンソール
https://github.com/torvalds/linux/blob/master/Documentation/admin-guide/serial-console.rst
Linuxでは、次のコマンドを使用してカーネルコンソールを設定できます。console=
起動オプション。呼び出しカーネルコードは、printk()
たとえば、デバイスがロードされたとき、またはエラーが発生したときにここにメッセージを書き込むことができます。これらのメッセージはカーネルによってもバッファリングされます。 (あなたも見ることができますdmesg
)。コンソールデバイスを見つけて起動すると、以前にバッファリングされたすべてのメッセージが表示されます。
複数のコンソールを構成するために複数回転送でき、console=
メッセージはすべてのコンソールに記録されます。明らかに、各「タイプ」に対して1つのコンソールしか選択できません。console=ttyS0
と両方を使用することはできませんconsole=ttyS1
。
カーネル文書は、/dev/console
番号付きの文字デバイスを指定します(5,1)
。この文字デバイスを開くと、コンソールリストの最後のttyである「デフォルト」コンソールが開きます。カーネル以外の最初のプロセスはinit
「PID 1」と呼ばれ、/dev/console
標準出力、標準エラー、および標準入力への接続から始まります。
tty コンソールがない場合、開くと/dev/console
エラーENODEV
(「該当デバイスなし」) が返されます。カーネルは印刷メッセージを録音init
して開始します。 ttyデバイスではないカーネルコンソールの例については、以下を参照してください。netconsole
または私のお気に入りのコンソールラインプリンタ。
を読んでttyコンソールのリストを表示することもできます/sys/class/tty/console/active
。 システム文書指摘最初表示されるデバイスはデフォルトのコンソールです。リストは実際にはカーネルコマンドラインの逆の順序です。これ現在のカーネル文書表示された最後のデバイスがプライマリまたは「アクティブ」コンソールであると誤って説明されています。何らかの理由でこのファイルをポーリングして変更を確認できます(コンソールデバイスが削除された場合は?)。
内部に一つsystemd-nspawn
コンテナ内では、標準/dev/console
ファイルはPTY(擬似端末デバイス)に置き換えられます。これは仮想端末装置として最もよく説明される。動的に生成され、グラフィカル端末エミュレータ(例:GNOME端末)とリモートアクセス(例:ssh
。
/dev/tty0
Linux TTYデバイスノード tty1
パスはtty63
仮想端末です。 VTまたは仮想コンソールとも呼ばれます。物理コンソールデバイスドライバの上に複数のコンソールをエミュレートします。一度に1つの仮想コンソールのみが表示され制御されます。chvt
、Ctrl + Alt + F1などのファンクションキーを使用してアクティブな端末を切り替えることができます。
を使用して現在のVTを読み書きすることもできます/dev/tty0
。 tty0
たとえば、明示的に選択していない場合は、一般的なカーネルコンソールです。 「システムはまずVTが動作しているVGAカードを探し、次にシリアルポートを探します」コンソールを特定のVT(たとえば)に設定することもできますconsole=tty1
。
「システムにVGAカードがない場合、最初のシリアルポートは自動的にコンソールになります。」 「シリアルコンソール」のようなものはttyS0
おそらく最も一般的な代替手段ですtty0
。シリアルコンソールでVTシステムを使用できません。
/dev/tty
/dev/tty
POSIXで指定された3つの標準デバイスファイルのうちの1つです。(/dev/
POSIXで指定された3つのディレクトリ名のうちの1つ)これを開くことは、現在のプロセスの制御端末を開くのと同じです。プロセスが最初に端末を開くときに制御端末を設定し、少なくともLinuxでは。たとえば、でinit
引用されます/dev/console
。
制御端末からの分離は、従来、バックグラウンドプロセスを開始するために必要なステップの1つである。システムログデーモン。バックグラウンドプロセスになるステップは、特に制御端末から外れるステップが非常に複雑です。設定値システムコール。最新のシステムでは、initシステム(systemdなど)が最初に制御端末なしでサービスを開始します。