現在使用しているttyを確認する方法は?


22

システムで使用できる端末は7つあります。tty7GUIベースです。

現在どのttyを使用しているかを知るにはどうすればよいですか?

tty1、tty2 .... tty6のように?


コメントの「pts」だと主張するのはなぜですか?これは、ここで尋ねる内容とはまったく異なります。GUIのセッションはttyではありません。
リンツウィンド

1
私はこの概念について混乱している、だからこそ
luv.preet

回答:


30

これを見つけるにはいくつかの方法があります。私は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.xx)を取得します。以下のような他のコマンドwwhopgreppsなどは、あまりにも便利です。

たとえばtty、私のグラフィカルインターフェイスが実行されている場所を確認するには:

ps $(pgrep Xorg)

私の場合、gdmやslimなどのディスプレイマネージャーを使用しないため、次のようになります。

 PID  TTY      STAT   TIME COMMAND
 1693 tty1     Sl     0:05 /usr/lib/xorg/Xorg

4
+ 1、mate-terminal who am iでは何も返さず、をwhoami返しますzanna(一方、whoすべてのセッションを返します(関連する質問(答えられないことが判明した)を覚えていますwho
ザンナ

グラフィカルサポートを提供する唯一の1であるため、グラフィカルは常にtty7を使用します-luv.preet
21:14に

1
@Zanna自分でこの状況に遭遇しましたが、言及する価値があると思います。
-Ravexina

1
とにかく、who am ivtでは常にうまく機能し、pgrep非常にスマートです($()コマンドサブの構文を使用したい場合があります-バックティックはマークダウンで少し混乱することがあります) ...
Zanna

1
@ luv.preetそれはあなたの質問の範囲外ですが、ptsとttyの違いを参照してください:)-これが重複している投稿には素晴らしい答えがあります
-Zanna

14

ttyコマンドを使用します。

私が正しい場合、これは参照です:

/dev/tty1 - tty1
/dev/tty2 - tty2
/dev/tty3 - tty3
/dev/tty4 - tty4
/dev/tty5 - tty5
/dev/tty6 - tty6

showinng pts / 18です。
luv.preet

このPTSはttyで実行されている可能性がありますよね?どうやってそれを知ることができますか?
luv.preet

5
@ luv.preetそれあなたの端末です。「ptsとttyの違い」を参照してください。
チャイT.レックス

4
ptsGUIまたはSSHを介して端末を使用していることを意味します
-lithium_js

3
そのために新しい質問をする必要があります。
チャイT.レックス

6

一歩後退して混乱から始めましょう:ttyとは?もともとttyは、teletypeの略語で、ガラステレタイプになり、ターミナルまたはターミナルへの接続、具体的にはシリアルポートになりました(これらはまだ存在し、最も一般的なのは/ dev / ttyS0、/ dev / ttyUSB0、および/ dev / ttyacm0です)。次に、疑似ttyと仮想ttyを取得しました。古いUnixの手は、リモート端末(sshとtelnet)、仮想端末(xtermなど)、および端末マルチプレクサ(screenとtmux)に使用される疑似ttyに精通しています。疑似ttyには長い間さまざまな命名規則がありますが、現在の命名規則では/ dev / pts / 0などの名前を使用しています。一方、仮想ttyは仮想コンソールに関連付けられます。特に、コントロールaltファンクションキーを使用する場合、それぞれが仮想ttyとペアになる仮想コンソールを切り替えます。

あなたが(テキストモードを使用する場合、または仮想TTY)あなたの擬似端末を見つける必要があるのであればそこのようなソリューションのすべての種類があるwho am iか、ps ax|grep $$これは擬似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を正しく識別(:1:S0)し、2番目のXサーバーに接続されている最初の画面セッションに擬似ttyが接続されていることを示す5列のヒントを提供する)ただし、仮想コンソール情報は提供しません)。どちらのsshセッションでも誰がヒントを提供するかを実行する(alpha)これは、sshセッションの発信元であるマシンを識別し、リモートセッションに比較的適しています。疑似ttyに接続されているものについての情報はほとんどありませんが(仮想コンソールやリモートtty情報もまったくありません)、少なくともリモートホストが識別されます。スクリーンセッションは分離可能であるため、スクリーンに関する情報が間違っている可能性があります。vncセッションとローカルセッションの違いはディスプレイ番号のみであるため、vncは有用な情報をまったく提供しません。多くの場合、0はtty7にありますが、常にではなく、bravoにはグラフィックカードがないため、0はvncセッションであると想定できます(ローカルコンソールであると考えるため、誰が混乱するか)私は(逆にだけではなく)tty7(およびtty5、tty6、およびtty8も)他の場所でグラフィカルセッションを宗教化します。ただし、待機画面は端末プログラムとしても機能し、シリアルケーブルでセッションを確立できます。誰が実行された場合、そのようなセッションは何を報告しますか?vnc、xterm、ssh、screen、usbシリアルアダプターのいずれかを介してシリアルポートに接続するか、またはテレビデオに接続するのかを問わず、シリアルポートを使用しない理由。


6

ttyにログインすると、最初の行で使用しているttyが自動的に表示されます。


コメントに書いたように、キーボードの組み合わせCtrl+ Alt+ F3を押しても黒い画面しか表示されない場合、Ctrl+ Alt+ F3を押してttyを起動せずにコンピューターを起動するときにルートシェルにアクセスする別の方法があります。

  1. 起動中のBIOS / UEFIスプラッシュ画面の直後に、BIOSを使用してShiftキーをすばやく押し続けると、GNU GRUBメニューが表示されます。(Ubuntuのロゴが表示されている場合は、GRUBメニューに入ることができません。)UEFIで(おそらく数回)Escキーを押してGRUBメニューに移動します。製造元のスプラッシュ画面はWindowsブートローダーの一部である場合があるため、マシンの電源を入れると、GRUB画面に直接移動するため、押すShift必要はありません。

  2. 最初の紫色のGNU GRUB画面から、↑キーと↓キーを使用してUbuntuの詳細オプションを選択し、を押しEnterます。その後、カーネルオプションのリストを含む別の紫色のGNU GRUBメニューメニューが表示されます。

  3. 上から2番目のエントリ(説明に回復モードがあるエントリ)を選択するまで下矢印キーを押してから、を押しEnterます。

    次の回復メニューが表示されます。

    回復メニュー

  4. 矢印キーを使用してルートまでスクロールし、を押しEnterます。

    次のようなルートプロンプトが表示されます。

    root@ubuntu:~#
    
  5. この段階では、読み取り専用のファイルシステムが必要です。書き込み権限で再マウントする必要があります。

    mount -o rw,remount /  
    

    これで、ターミナルと同じようにコマンドを実行できます。


これは常にtty1を開きますか?
luv.preet

いいえ、ttyは開きません。代わりに、ハードドライブにインストールしたUbuntuのルートファイルシステムを、書き込み権限を持つ対話型シェルとしてマウントし、コマンドを実行できるようにします。
-karel

3

提供されている他の回答以外のものを探しているのではないでしょうか。実行sudo fgconsole して、現在どのttyがアクティブになっているかを確認します。


@karel現在のTTYアナウンスを見逃す状況は簡単に想像できます。たとえば、bashプロファイルは画面をクリアします。ログイン直後だけでなく、いつでも使用できるコマンドを提供しました。WRT Ctrl + Alt + F1が機能しない-簡単な回避策があります:chvtまたはopenvtを使用します。
マリアンアダム

ところで、sudoで実行します。それがエラーになった理由です。
マリアンアダム

1

コマンドttyを使用します。LinuxおよびmacOSで動作し、読み取り用の非常に単純な出力を提供します。現在のttyの名前のみを提供します。

例:

$ tty
/dev/pts/0

これをスクリプト化するか、プロンプトに含めるのは簡単です、例:

$ PS1='`tty`: '
/dev/pts/0: _

これにより、どの端末にいるかが常にわかります。


1

GUIを除き、その場合はPTSを取得しますが、これは目的の出力を示します。

ls -l `tty` | awk '{print $10}'
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.