Ci sono 7 terminali che possono essere utilizzati nel nostro sistema. tty7
è basato sulla GUI.
Come posso sapere quale tty sto attualmente usando?
come, tty1, tty2 .... tty6?
Ci sono 7 terminali che possono essere utilizzati nel nostro sistema. tty7
è basato sulla GUI.
Come posso sapere quale tty sto attualmente usando?
come, tty1, tty2 .... tty6?
Risposte:
Esistono diversi modi per scoprirlo. Vorrei andare con il comando who am i
(non who
):
$ who am i
ravexina tty2 2017-04-10 11:19 (:0)
Quando sono in un terminale grafico, restituirebbe qualcosa del tipo:
ravexina pts/0 2017-04-10 1:19 (:0)
In sessione ssh l'utilizzo di un risultato grafico terminale è lo stesso, ma invece di (: 0), otterrò l'IP della mia macchina (192.168.xx). altri comandi come w
, who
, pgrep
, ps
, ecc sono utili anche.
Ad esempio per scoprire a quale tty
interfaccia grafica è in esecuzione:
ps $(pgrep Xorg)
Che nel mio caso, poiché non uso alcun display manager come gdm o slim, produrrà:
PID TTY STAT TIME COMMAND
1693 tty1 Sl 0:05 /usr/lib/xorg/Xorg
who am i
non restituisca nulla e whoami
ritorni zanna
(mentre who
restituisce tutte le sessioni (ricordo una domanda correlata (che si è rivelata senza risposta) in cui abbiamo notato che emulatori diversi hanno prodotto output diversi da who
)).
who am i
funzionerà sempre bene in un vt, ed pgrep
è molto intelligente (potresti voler usare la $()
sintassi per i sottotitoli dei comandi possono creare un po 'di confusione nel markdown) quindi la tua risposta è molto bella e chiunque abbia effettuato il downgrade non avrebbe dovuto farlo ...
Usa il tty
comando.
Se ho ragione, questo è il riferimento:
/dev/tty1 - tty1
/dev/tty2 - tty2
/dev/tty3 - tty3
/dev/tty4 - tty4
/dev/tty5 - tty5
/dev/tty6 - tty6
pts
significa che stai usando il terminale dalla GUI o tramite SSH
Facciamo un passo indietro e cominciamo con la confusione: cos'è un tty? Originariamente tty era un'abbreviazione di teletype che divenne teletype di vetro che divenne qualsiasi terminale o la connessione a uno, in particolare una porta seriale (questi sono ancora in giro, più comunemente / dev / ttyS0, / dev / ttyUSB0 e talvolta / dev / ttyacm0). Quindi hai pseudo tty e tty virtuali. le vecchie mani unix hanno familiarità con gli pseudo-tty che vengono utilizzati per terminali remoti (ssh e telnet), terminali virtuali (xterm e simili) e multiplexer di terminali (schermo e tmux). Gli pseudo-tty hanno avuto vari schemi di denominazione nel tempo, ma quello attuale usa nomi come / dev / pts / 0. I tty virtuali sono invece associati alle console virtuali, in particolare quando si utilizzano i tasti funzione control alt si passa da una console virtuale a ciascuna delle quali è associato un tty virtuale.
Quindi, se hai bisogno di trovare la tua pseudo tty (o tty virtuale quando usi la modalità testo) ci sono tutti i tipi di soluzioni come who am i
o ps ax|grep $$
questo è relativamente facile da fare in quanto ci sono diversi modi per scoprirlo poiché la pseudo tty è aperta su io standard nella maggior parte dei casi e ci sono altri metodi che funzionano anche quando io viene reindirizzato. questo ha anche il vantaggio di fare anche la cosa giusta quando si usano porte seriali e tty virtuali purché non si utilizzino emulatori di terminali grafici o multiplexer di terminali.
Ma cosa succede se si desidera identificare la console virtuale? sudo fgconsole
può essere utile per casi interattivi. O quello che faccio è semplicemente camminare sulle console in quanto il passaggio è in genere abbastanza veloce. Non sono a conoscenza di un metodo programmatico che funzioni in modo affidabile in casi non interattivi o fuori terra.
Diamo un'occhiata a un esempio che è garantito per non poter rispondere in modo affidabile alla console virtuale di sempre. Il computer su cui sono seduto (alpha) ha un Xserver in esecuzione su tty2 (: 1), ho tre finestre aperte due xterm e un vncviewer (collegato a bravo: 2). Uno xterm esegue lo schermo, l'altro esegue ssh charley. Lo schermo ha due finestre aperte, ssh delta e who (che identifica correttamente la pseudo tty nella colonna due e fornisce il suggerimento (:1:S0)
nella colonna cinque che ci dice che la pseudo tty è connessa alla prima sessione dello schermo che è collegata al secondo server X, ma non fornisce alcuna informazione sulla console virtuale). In esecuzione chi su entrambe le sessioni SSH dà il suggerimento(alpha)
che identifica la macchina da cui proviene la sessione SSH, che è relativamente buono per le sessioni remote. Sebbene ci siano poche informazioni su ciò che è collegato alla pseudo tty (e non è assolutamente disponibile alcuna console virtuale o anche informazioni tty remote), almeno l'host remoto viene identificato. le informazioni sullo schermo possono essere errate poiché le sessioni dello schermo sono rimovibili e vnc non fornisce alcuna informazione utile poiché l'unica differenza tra una sessione vnc e una sessione locale è il numero visualizzato. In molti casi puoi supporre che: 0 sia su tty7 ma non sempre, e mai sulla mia poiché bravo non ha affatto una scheda grafica e: 0 è una sessione vnc (che confonde chi perché pensa che sia la console locale) e nessuna delle macchine usa tty7 come sessione grafica, perché io (non solo per essere contrario) dump dei log su tty7 (e tty5, tty6 e tty8 anche) sessioni grafiche religiose altrove. Ma la schermata di attesa può anche fungere da programma terminale che consente di stabilire una sessione tramite un cavo seriale. Cosa indica una sessione del genere quando viene eseguita? Perché nient'altro che la porta seriale, sia tramite vnc, xterm, ssh, schermo e un adattatore seriale USB tutto in una volta o è collegata al mio televisore.
Una volta effettuato l'accesso a un tty, mostra quale tty si sta utilizzando automaticamente sulla prima riga.
Se premendo la combinazione di tastiera Ctrl+ Alt+ viene F3visualizzata solo una schermata nera, come hai scritto in un commento, esiste un modo alternativo per accedere a una shell di root quando si avvia il computer senza premere Ctrl+ Alt+ F3per visualizzare un tty.
Immediatamente dopo la schermata iniziale BIOS / UEFI durante l'avvio, con BIOS, premere e tenere premuto rapidamente il Shifttasto, che farà apparire il menu GNU GRUB. (Se vedi il logo Ubuntu, hai perso il punto in cui puoi entrare nel menu di GRUB.) Con UEFI premi (forse più volte) il Esctasto per accedere al menu di GRUB. A volte la schermata iniziale del produttore fa parte del bootloader di Windows, quindi quando si accende la macchina si passa direttamente alla schermata GRUB, quindi Shiftnon è necessario premere .
Dalla prima schermata GNU GRUB viola selezionare Opzioni avanzate per Ubuntu con i tasti ↑ e ↓ e premere Enter. Verrà quindi richiesto da un altro menu del menu GNU GRUB viola che contiene un elenco di opzioni del kernel.
Premere il tasto freccia giù fino a selezionare la seconda voce dall'alto (quella con la modalità di ripristino nella descrizione), quindi premere Enter.
Ora dovresti vedere questo menu di ripristino:
Utilizzando i tasti freccia, scorrere fino alla radice, quindi premere Enter.
Ora dovresti vedere un prompt di root, qualcosa del genere:
root@ubuntu:~#
A questo punto dovresti avere un filesystem di sola lettura. Devi rimontarlo con le autorizzazioni di scrittura:
mount -o rw,remount /
Ora puoi eseguire i comandi come in un terminale.
Immagino che ti stia occupando di qualcos'altro rispetto alle altre risposte fornite. Corri sudo fgconsole
per scoprire quale vero tty è ora attivo.
Usa il comando tty, funziona su Linux e macOS e dai un output piuttosto semplice da leggere, solo il nome del tty in cui ti trovi.
Esempio:
$ tty
/dev/pts/0
È facile scrivere questo script o includerlo nel prompt, ad esempio:
$ PS1='`tty`: '
/dev/pts/0: _
In questo modo saprai sempre in quale terminale ti trovi.