Як перевірити, які я зараз використовую?


22

Є 7 терміналів, які можна використовувати в нашій системі. tty7на основі GUI.

Як я можу знати, що я зараз використовую?

як, tty1, tty2 .... tty6?


Чому ви стверджуєте, що це "бали" в коментарях? Це абсолютно відрізняється від того, про що ви тут просите. Сеанс у графічному інтерфейсі НЕ БЕЗПЕЧНО.
Rinzwind

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). інші команди , такі як w, who, pgrep, psі т.д. корисні теж.

Наприклад, щоб дізнатися, на якому ttyграфічному інтерфейсі працює:

ps $(pgrep Xorg)

Що в моєму випадку, тому що я не використовую жодного диспетчера дисплеїв, наприклад gdm або slim, він створює:

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

4
+1, хоча в мате-терміналі who am iнічого не повертає, а whoamiповертається zanna(при цьому whoповертає всі сеанси (я пам’ятаю пов'язане питання (яке виявилося невідчутним), де ми помітили, що різні емулятори дають різний вихід who)).
Zanna

Графічний завжди буде використовувати tty7, оскільки це єдиний 1, який надає графічну підтримку
luv.preet

1
@Zanna Я сам стикаюся з цією ситуацією, але вважаю, що це варто згадати.
Ravexina

1
у будь-якому випадку, who am iвін завжди буде добре працювати в Vt, і pgrepдуже розумний (можливо, ви хочете використовувати $()синтаксис для командних підзадач може трохи заплутатися у відмітці), тому ваша відповідь дуже приємна, і хто б не спричинив це, не повинен був цього робити. ...
Занна

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

це показує пт / 18.
luv.preet

ця очка може працювати в Tty, чи не так? Як я можу це знати?
luv.preet

5
@ luv.preet, це ваш термінал. Див. "Різниця між pts та tty" .
Чай Т. Рекс

4
ptsозначає, що ви використовуєте термінал від GUI або через SSH
lithium_js

3
Для цього вам потрібно буде задати нове запитання.
Чай Т. Рекс

6

Давайте зробимо крок назад і почнемо з плутанини: що таке tty? Спочатку tty була абревіатурою телетайпу, яка стала скляною телетипією, яка стала будь-яким терміналом або з'єднанням з одним, зокрема, послідовним портом (вони все ще існують, найчастіше / dev / ttyS0, / dev / ttyUSB0 і іноді / dev / ttyacm0). Тоді ви отримали псевдо ttys і віртуальний ttys. старі руки Unix знайомі з псевдо титами, які використовуються для віддалених терміналів (ssh і telnet), віртуальних терміналів (xterm тощо) і термінальних мультиплексорів (екран і tmux). Псевдо ttys мали різні схеми іменування з часом, але поточна використовує такі імена, як / dev / pts / 0. З іншого боку, віртуальні ttys пов'язані з віртуальними консолями, зокрема, коли ви використовуєте функціональні клавіші alt управління, ви перемикаєте віртуальні консолі, кожна з яких поєднана з віртуальним tty.

Отже, якщо вам потрібно знайти свої псевдо tty (або віртуальний tty при використанні текстового режиму), існують всілякі рішення, як-от, who am iабо ps ax|grep $$це досить легко зробити, оскільки існує декілька способів дізнатися це, оскільки псевдо-tty відкривається на стандартному io в більшості випадків є й інші методи, які працюють навіть при перенаправлення io. це також має перевагу в тому, що ви також робите правильно при використанні послідовних портів і віртуальних ttys, якщо ви не використовуєте графічні емулятори терміналів або мультиплексори терміналів.

Але що робити, якщо ви хочете ідентифікувати віртуальну консоль? sudo fgconsoleможе бути корисним для інтерактивних випадків. Або те, що я роблю, це просто ходити по консолях, оскільки перемикання, як правило, досить швидко. Мені не відомий програмний метод, який надійно працює в неінтерактивних або неземних випадках.

Давайте розглянемо приклад, який гарантовано ніколи не зможе надійно відповісти на віртуальну консоль. На комп'ютері, на якому я сиджу перед (альфа), є Xserver, який працює на tty2 (: 1), у мене три вікна, два xterms та vncviewer (підключено до bravo: 2). Один xterm працює на екрані, в іншому працює ssh charley. На екрані відкрито два вікна, ssh delta та хто (хто правильно ідентифікує псевдо tty у другому стовпці та надає підказку (:1:S0)у п’ятій колонці, яка говорить нам про те, що псевдо tty підключений до першого сеансу екрана, який підключений до другого сервера X, але не дає ніякої інформації віртуальної консолі). Запуск того, хто над будь-яким сеансом ssh дає підказку(alpha)який ідентифікує машину, з якої прийшов сеанс ssh, порівняно добре для віддалених сеансів. Хоча є мало інформації про те, що пов'язано з псевдосистемою (і абсолютно немає віртуальних консолей чи навіть віддаленої інформації tty), принаймні віддалений хост ідентифікований. інформація про екран може бути помилковою, оскільки сеанси екрана є відокремленими, і vnc не надає корисної інформації, оскільки єдиною різницею між сеансом vnc та локальним сеансом є номер відображення. У багатьох випадках ви можете припустити, що: 0 знаходиться на tty7, але не завжди, і ніколи на моєму, оскільки bravo взагалі не має відеокарти і: 0 - це сеанс vnc (який бентежить кого, бо він вважає, що це локальна консоль) і жодна з машин не використовує tty7 як графічний сеанс, тому що я (не просто навпаки) скидаю журнали на tty7 (і tty5, tty6, і tty8 також) релігіювання графічних сесій в інших місцях. Але екран очікування також може діяти як програма терміналу, що дозволяє встановити сеанс через послідовний кабель. Про що повідомляє такий сеанс, коли хто працює? Чому ніщо, але послідовний порт, будь то через vnc, xterm, ssh, екран та 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 за допомогою клавіш ↑ і and та натисніть Enter. Потім буде запропоновано інше фіолетове меню меню GNU GRUB, яке містить список параметрів ядра.

  3. Натискайте клавішу зі стрілкою вниз до тих пір, поки не виберете другий запис зверху (той, який описує режим відновлення в описі), а потім натисніть Enter.

    Тепер ви повинні побачити це меню відновлення:

    меню відновлення

  4. За допомогою клавіш зі стрілками прокрутіть вниз до кореня, а потім натисніть Enter.

    Тепер вам слід побачити кореневу підказку, приблизно так:

    root@ubuntu:~#
    
  5. На цьому етапі у вас повинна бути файлова система лише для читання. Ви повинні перезаписати його за допомогою дозволу на запис:

    mount -o rw,remount /  
    

    Тепер ви можете запускати команди так само, як і в терміналі.


це завжди відкривається tty1?
лув.прет

Ні, це не відкриває жодних tty. Натомість він монтує кореневу файлову систему Ubuntu, встановлену на жорсткому диску, як інтерактивну оболонку з дозволом на запис, що дозволяє виконувати команди на ній.
карел

3

Я думаю, ти доглядаєш за чимось іншим, ніж інші відповіді. Запустіть, sudo fgconsole щоб дізнатися, які реальні tty зараз активні.


@karel Легко уявити ситуацію, коли ти пропускаєш поточне оголошення TTY. Наприклад, ваш профіль bash очищає екран. Я запропонував команду, яку можна використовувати будь-коли, а не лише відразу після входу. WRT Ctrl + Alt + F1 не працює - швидке вирішення: використовувати chvt або openvt.
маріан адам

І BTW, запустіть це з судо. Ось чому ви отримали помилку.
маріан адам

1

Використовуйте команду tty, вона працює на Linux та macOS і дає досить простий вихід для читання, лише ім'я tty, в якому ви перебуваєте.

Приклад:

$ tty
/dev/pts/0

Це легко скриптувати або включити в підказку, наприклад:

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

Таким чином ви завжди будете знати, в якому терміналі ви знаходитесь.


1

За винятком GUI, у цьому випадку ви отримуєте бали, це показує бажаний вихід:

ls -l `tty` | awk '{print $10}'
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.