Є 7 терміналів, які можна використовувати в нашій системі. tty7
на основі GUI.
Як я можу знати, що я зараз використовую?
як, tty1, tty2 .... tty6?
Є 7 терміналів, які можна використовувати в нашій системі. tty7
на основі GUI.
Як я можу знати, що я зараз використовую?
як, 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.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
who am i
нічого не повертає, а whoami
повертається zanna
(при цьому who
повертає всі сеанси (я пам’ятаю пов'язане питання (яке виявилося невідчутним), де ми помітили, що різні емулятори дають різний вихід who
)).
who am i
він завжди буде добре працювати в Vt, і pgrep
дуже розумний (можливо, ви хочете використовувати $()
синтаксис для командних підзадач може трохи заплутатися у відмітці), тому ваша відповідь дуже приємна, і хто б не спричинив це, не повинен був цього робити. ...
Використовувати tty
команду.
Якщо я маю рацію, це посилання:
/dev/tty1 - tty1
/dev/tty2 - tty2
/dev/tty3 - tty3
/dev/tty4 - tty4
/dev/tty5 - tty5
/dev/tty6 - tty6
pts
означає, що ви використовуєте термінал від GUI або через SSH
Давайте зробимо крок назад і почнемо з плутанини: що таке 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-послідовний адаптер, всі відразу або підключено до мого телевідео.
Після входу в 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 за допомогою клавіш ↑ і and та натисніть Enter. Потім буде запропоновано інше фіолетове меню меню GNU GRUB, яке містить список параметрів ядра.
Натискайте клавішу зі стрілкою вниз до тих пір, поки не виберете другий запис зверху (той, який описує режим відновлення в описі), а потім натисніть Enter.
Тепер ви повинні побачити це меню відновлення:
За допомогою клавіш зі стрілками прокрутіть вниз до кореня, а потім натисніть Enter.
Тепер вам слід побачити кореневу підказку, приблизно так:
root@ubuntu:~#
На цьому етапі у вас повинна бути файлова система лише для читання. Ви повинні перезаписати його за допомогою дозволу на запис:
mount -o rw,remount /
Тепер ви можете запускати команди так само, як і в терміналі.
Я думаю, ти доглядаєш за чимось іншим, ніж інші відповіді. Запустіть, sudo fgconsole
щоб дізнатися, які реальні tty зараз активні.
Використовуйте команду tty, вона працює на Linux та macOS і дає досить простий вихід для читання, лише ім'я tty, в якому ви перебуваєте.
Приклад:
$ tty
/dev/pts/0
Це легко скриптувати або включити в підказку, наприклад:
$ PS1='`tty`: '
/dev/pts/0: _
Таким чином ви завжди будете знати, в якому терміналі ви знаходитесь.