システムで使用できる端末は7つあります。 tty7
はGUIベースです。
現在どのttyを使用しているかを知るにはどうすればよいですか?
tty1、tty2 .... tty6のように?
これを見つけるにはいくつかの方法があります。 who am i
(who
ではなく)コマンドを使用します。
$ who am i
ravexina tty2 2017-04-10 11:19 (:0)
グラフィカル端末を使用している場合、次のような結果が返されます。
ravexina pts/0 2017-04-10 1:19 (:0)
グラフィカル端末を使用したsshセッションの結果は同じですが、(:0)の代わりに、マシンIP(192.168.x.x)を取得します。 w
、who
、pgrep
、ps
などの他のコマンドも役立ちます。
たとえば、どのtty
で私のグラフィカルインターフェイスが実行されているかを調べるには:
ps $(pgrep Xorg)
私の場合、gdmやslimなどのディスプレイマネージャーを使用しないため、次のようになります。
PID TTY STAT TIME COMMAND
1693 tty1 Sl 0:05 /usr/lib/xorg/Xorg
tty
コマンドを使用します。
私が正しい場合、これは参照です:
/dev/tty1 - tty1
/dev/tty2 - tty2
/dev/tty3 - tty3
/dev/tty4 - tty4
/dev/tty5 - tty5
/dev/tty6 - tty6
Ttyにログインすると、最初の行で使用しているttyが自動的に表示されます。
キーボードの組み合わせを押す場合 Ctrl+Alt+F3 コメントに書いたように、黒い画面のみを表示します。押すことなくコンピューターを起動するときにルートシェルにアクセスする別の方法があります Ctrl+Alt+F3 ttyを起動します。
起動中のBIOS/UEFIスプラッシュ画面の直後に、BIOSを使用して、 Shift GNU GRUBメニューを表示するキー。 (Ubuntuのロゴが表示されている場合、GRUBメニューを入力できるポイントを見逃しています。)UEFIを押して(おそらく数回) Esc GRUBメニューに移動するキー。メーカーのスプラッシュ画面がWindowsブートローダーの一部である場合があります。そのため、マシンの電源を入れると、GRUB画面に直接移動し、 Shift 不要です。
最初の紫色のGNU GRUB画面から、Ubuntuの詳細オプションを↑キーと↓キーで選択して押します Enter。その後、カーネルオプションのリストを含む別の紫色のGNU GRUBメニューメニューが表示されます。
上から2番目のエントリ(説明にrecovery modeがあるエントリ)を選択するまで下矢印キーを押してから、 Enter。
次のメニューが表示されます。
矢印キーを使用して、rootまで下にスクロールし、押します Enter 二回。
次のようなルートプロンプトが表示されます。
root@ubuntu:~#
この段階では、読み取り専用のファイルシステムが必要です。書き込み権限で再マウントする必要があります。
mount -o rw,remount /
これで、ターミナルと同じようにコマンドを実行できます。
一歩後退して混乱から始めましょう:ttyとは?もともとttyは、テレタイプの省略形であり、端末または端末への接続、具体的にはシリアルポートになります(これらは現在も存在し、最も一般的なのは/ dev/ttyS0、/ dev/ttyUSB0、および/ dev/ttyacm0です)。次に、疑似ttyと仮想ttyを取得しました。古いUnixの手は、リモート端末(sshとtelnet)、仮想端末(xtermなど)、および端末マルチプレクサ(screenとtmux)に使用される疑似ttyに精通しています。疑似ttyには長い間さまざまな命名規則がありますが、現在のものは/ dev/pts/0などの名前を使用しています。一方、仮想ttyは仮想コンソールに関連付けられます。特に、コントロールaltファンクションキーを使用する場合、それぞれが仮想ttyとペアになっている仮想コンソールを切り替えます。最も有名な仮想ttyは、グラフィカルセッションによく使用される/ dev/tty7です(最初の6つは通常テキストログインであるため)どんな仮想コンソールでもXサーバーを実行できるので、tty7について特別なことはありません(/ dev /カーネルはブートロギングのためにカーネルを開くため、tty1は非常に困難ですが、tty7を含む任意の仮想ttyでテキストログオンを実行できます(ただし、init構成が必要であり、systemdの動的割り当てによって面白くなり、tty13以上に切り替わります)キーボードマップの変更が必要になる場合があります)。
したがって、疑似tty(またはテキストモードを使用する場合は仮想tty)を見つける必要がある場合、who am i
またはps ax|grep $$
のようなあらゆる種類のソリューションがあります。これを見つけるには複数の方法があるため、比較的簡単です。これは、ほとんどの場合、標準ioで擬似ttyが開かれ、ioがリダイレクトされた場合でも機能する他のメソッドがあるためです。これには、グラフィカル端末エミュレーターまたは端末マルチプレクサーを使用していない限り、シリアルポートと仮想ttyを使用するときに正しいことを行うという利点もあります。
しかし、仮想コンソールを特定したい場合はどうでしょうか? Sudo fgconsole
は、インタラクティブな場合に便利です。または、切り替えは通常十分に速いので、コンソールを歩くだけです。非対話型または非フォアグラウンドの場合に確実に機能するプログラムによる方法を知りません。
仮想コンソールに確実に応答できないことが保証されている例を見てみましょう。 (alpha)の前に座っているコンピューターには、tty2(:1)で実行されているXserverがあり、2つのxtermとvncviewer(bravo:2に接続されている)を開く3つのウィンドウがあります。 1つのxtermは画面を実行しており、もう1つはssh charleyを実行しています。画面には、ssh deltaとwho(列2の擬似ttyを正しく識別し、擬似ttyが接続されている最初の画面セッションに接続されていることを示すヒント(:1:S0)
を列5に提供する2つのウィンドウが開きます2番目のXサーバー。ただし、仮想コンソール情報は提供されません。いずれかのsshセッションでwhoを実行すると、(alpha)
というヒントが与えられ、sshセッションの発信元であるマシンを識別し、リモートセッションに比較的適しています。疑似ttyに接続されているものについての情報はほとんどありませんが(仮想コンソールやリモートtty情報もまったくありません)、少なくともリモートホストが識別されます。スクリーンセッションは分離可能であるため、スクリーンに関する情報が間違っている可能性があります。vncセッションとローカルセッションの違いはディスプレイ番号のみであるため、vncは有用な情報をまったく提供しません。多くの場合、0はtty7にありますが常にではなく、bravoにはグラフィックカードがないため、0はvncセッションであると想定できます(ローカルコンソールだと考えるため、誰が混乱するか)私は(逆にだけではなく)ログをtty7(およびtty5、tty6、およびtty8)にダンプし、グラフィカルセッションを他の場所に集約しているため、どのマシンもtty7をグラフィカルセッションとして使用しません。ただし、待機画面は端末プログラムとしても機能し、シリアルケーブルでセッションを確立できます。誰が実行された場合、そのようなセッションは何を報告しますか? vnc、xterm、ssh、screen、usbシリアルアダプターのいずれかを介してシリアルポートに接続するか、またはテレビデオに接続するのかを問わず、シリアルポートを使用しないのはなぜですか。
提供されている他の回答以外のものを探しているのではないでしょうか。 Sudo fgconsole
を実行して、現在どのttyがアクティブになっているかを確認します。
コマンドttyを使用します。LinuxおよびmacOSで動作し、読み取り用の非常に単純な出力を提供します。使用しているttyの名前のみです。
例:
$ tty
/dev/pts/0
これをスクリプト化するか、プロンプトに含めるのは簡単です、例:
$ PS1='`tty`: '
/dev/pts/0: _
これにより、どの端末にいるかが常にわかります。
GUIを除き、その場合はPTSを取得しますが、これは目的の出力を示します。
ls -l `tty` | awk '{print $10}'