Perché UNIX / Linux fornisce più terminali?


8

Negli anni '70 avevamo un terminale hardware con interfaccia CUI (interfaccia utente carattere) per input / output.

Ora abbiamo emulatori di terminali ( Ctrl+ Alt+ Fn) nel mondo Unix / Linux.

Nel sistema operativo Ubuntu, vedo sette emulatori di terminale, in cui la GUI occupa il 7 ° emulatore di terminale ( Ctrl+ Alt+ F7).

Ad esempio, questo è il mio primo emulatore di terminale ( Ctrl+ Alt+ F1)

$ tty
/dev/tty0

Perché Unix / Linux fornisce emulatori di terminali multipli?


8
C'è sempre stata una richiesta per questo. È stato utilizzato un programma chiamato "schermo" quando era disponibile un solo terminale.
VPfB

7
Lo schermo @vpfb è ancora disponibile e parte integrante del mio flusso di lavoro!
tpg2114,

1
Penso che ciò che stai chiedendo qui non siano gli emulatori di terminale (che sono programmi come xterm, rxvt, ecc. Che funzionano come applicazioni grafiche sotto X), ma terminali in modalità testo che non eseguono grafica. L'unico uso che ho trovato per quelli (e che non per alcuni buoni anni) è il debug delle cose quando X non funziona bene. OTOH Faccio la maggior parte del mio vero lavoro nelle finestre xterm e potrei avere da tre a una dozzina o più aperte.
jamesqf

@jamesqf perché non chiami ctrl + alt + f1 come emulatore di terminale? Perché non è il terminale CUI hardware che avevamo negli anni '70
sovra

2
@overexchange: non li chiamo così perché questa non è la terminologia usata dalle persone che li conoscono. Se fai una ricerca per "emulatore di terminale linux", otterrai molti risultati, molti dei quali non hanno nulla a che fare con le console in modalità testo ottenute con Ctl-Alt-F [1-7].
jamesqf

Risposte:


25

Perché UNIX / Linux fornisce più emulatori di terminale [sulla console]?

Per lo stesso motivo, probabilmente il tuo emulatore di terminale della GUI supporta le schede (ad es. Terminale GNOME) e, in caso contrario (per es. rxvt), Per lo stesso motivo l'avvio di una seconda istanza di app del terminale della GUI non porta semplicemente il primo in primo piano ed esce, costringendoti a usare la prima istanza.

Nel mio lavoro uso abitualmente almeno 3 finestre terminali e spesso altre:

  1. Editor di testo per il lato server del sistema su cui sto lavorando

  2. Editor di testo per il lato client dello stesso sistema

  3. Finestra di comando per l'esecuzione del server

Raramente ho bisogno di un quarto terminale per eseguire il programma client, poiché di solito viene eseguito altrove (app Web, app GUI nativa, app mobile, ecc.), Ma se sviluppassi un client CLI per la mia app server, avrei un aperto anche un terminale separato.

In passato, prima di sudodiventare popolare, avevo sempre rootaperto un terminale.

Di questi tempi utilizzo raramente caselle Unix / Linux in modo interattivo sulla console senza una GUI, ma spesso le eseguo senza testa e le accedo tramite SSH. Il mio client terminal SSH preferito supporta le schede, configurate come sopra.

Uno dei miei attuali progetti di hobby mi fa usare occasionalmente un vero vecchio terminale di vetro , il che significa che non ho più finestre multiple, quindi sto finalmente imparando un po 'su GNUscreen , un programma che non avevo mai usato molto prima, dato che avevo più terminali della console o più terminali della GUI. E che cosa screenfare? Tra le altre cose, puoi configurarlo per darti più terminali virtuali su un singolo schermo, proprio come Linux fa con Ctrl- Alt- .Fx


10
La cosa migliore dello schermo - oltre ad avere più terminali su un terminale console stupido - è che puoi disconnetterti, disconnetterti, riconnetterti e riconnetterti alle sessioni e ai processi o a qualsiasi cosa stavi facendo nei termini dello schermo Continua così.
ivanivan,

Aggiungendo ciò che ha detto @ivanivan, altre persone possono vedere la tua sessione schermo e più persone possono vederla contemporaneamente. È come la condivisione desktop della console.
Stanchi,

Nota a
margine

18

Questa è una funzionalità fornita da quasi tutti, se non da tutti, Unix e Unix come quelli in esecuzione su hardware x86. È interessante notare che le console virtuali sono state introdotte per la prima volta in un Unix da Microsoft Xenix nei primi anni ottanta ed erano disponibili anche in CP / M simultanei.

Questa funzione è stata successivamente integrata in AT&T SVR4 Unix, Solaris e presa in prestito da BSD e Linux.

Perché UNIX / Linux fornisce più emulatori di terminale?

Quando furono introdotti per la prima volta, non esisteva un ambiente grafico disponibile per le macchine che eseguivano queste implementazioni Unix. Sebbene lo standard fosse disporre di un terminale fisico collegato a un server Unix centrale tramite linee RS232, il collegamento di più terminali a un PC standard su cui era in esecuzione Xenix era eccessivo se l'obiettivo era solo che un singolo utente eseguisse più programmi interattivi contemporaneamente. I terminali virtuali hanno fornito una soluzione elegante e conveniente a tale problema.

Altre implementazioni Unix in seguito hanno fornito la stessa funzionalità per soddisfare la stessa esigenza.

Quando gli ambienti grafici, in particolare X11, si sono diffusi, essere in grado di vedere più emulatori di terminale contemporaneamente sullo stesso schermo è stato un miglioramento significativo. La funzionalità della console virtuale è stata generalmente mantenuta, se non altro perché era comunque conveniente poter passare a una console se l'ambiente grafico fosse bloccato o disfunzionale per qualche motivo.

Si noti che le utilità piacciono screene sono tmuxarrivate molto più tardi rispetto ai terminali virtuali per generalizzare la stessa funzionalità. Il loro vantaggio è che può essere non utilizzato solo su console fisica locale, ma anche su quello della sessione, locale o remoto (ad esempio telnet, ssh). Se utilizzate sulla console fisica, le console virtuali sono ancora utili in quanto sono funzionali in alcune situazioni in cui screen/ tmuxnon possono essere di aiuto, come se X11 è bloccato o se una finestra ha catturato il focus e non lo rilascia.

La virtualizzazione basata su container come le zone Solaris o Linux LXC fornisce anche un metodo per connettersi alla console del contenitore tramite zlogin -C zonee lxc-console -t 0 -n containerrispettivamente.


4

Suppongo che una buona ragione per avere altri emulatori di terminale sia che se si fa qualcosa di sbagliato nell'interfaccia grafica e diventa inutilizzabile, è possibile passare rapidamente a un emulatore di terminale e correggere tutti i problemi che si verificano nell'interfaccia grafica. Questo accade in realtà abbastanza spesso quando si apportano modifiche al proprio gestore di finestre o ad altre funzionalità dell'interfaccia grafica. Suppongo che sarebbe utile avere un paio di terminali in più, tuttavia avere 6 overtop dell'interfaccia grafica principale sembra un po 'eccessivo.

Correggimi anche se sbaglio, ma non è possibile eseguire più comandi come utenti diversi da un unico emulatore di terminale?


"se fai qualcosa di sbagliato" - questo spiega perché esiste una console virtuale, non perché ce ne sono più (ovvero rispondere a una domanda diversa). "non è possibile eseguire più comandi come utenti diversi da un singolo emulatore di terminale?" - sì, ma i loro risultati sarebbero confusi e l'esecuzione di programmi di maledizioni sarebbe difficile.
Radovan Garabík,

4

Molte delle altre domande sembrano rispondere al motivo per cui la funzionalità è stata introdotta.

Tuttavia, la vera domanda è:

Perché Unix / Linux fornisce emulatori di terminali multipli?

"fa", non "ha fatto".

Quindi, concentrandoci sull'ora corrente, ecco alcuni motivi attuali:

  • Possono essere utili. A volte, invece di creare una nuova finestra che copre altre finestre sul desktop, posso semplicemente passare a un altro terminale. Quindi, posso tornare indietro, quindi il desktop è in primo piano. A volte (in genere quando sono aperte più finestre) questo può essere più conveniente che posizionare una finestra terminale in background e poi, in seguito, provare a far apparire quella stessa finestra in primo piano (invece di selezionare accidentalmente un'altra finestra del terminale finestre che si trovano sul desktop grafico).

    Ad esempio, posso ricordare che Alt-Ctrl-F2 è l'editor di testo che esamina un file di testo (ad esempio, documentazione) e Alt-Ctrl-F3 viene utilizzato per esaminare rapidamente un altro file (ad esempio un file di configurazione), e Alt-Ctrl-F4 viene utilizzato per un prompt dei comandi, mentre il desktop grafico può essere diviso tra navigazione web, e-mail, lettore musicale, ecc.
  • Le finestre dei terminali possono essere utili per lavorare con il computer in caso di problemi con il display grafico. Per le persone che potrebbero avere un bisogno attuale di usare un computer (forse personalizzato) che non ha una scheda video grafica, questa funzionalità può essere essenziale. C'è anche la possibilità di esigenze future (possibilmente con un sistema operativo successore / discendente) che potrebbero essere in aggiunta a qualsiasi necessità attuale possa esistere.
    • Questi terminali di testo tendono a utilizzare meno risorse. Ad esempio, tendono a utilizzare meno memoria su una scheda grafica. Quindi, se una scheda grafica avesse un malfunzionamento fisico che interrompesse la funzionalità del 3 ° e 4 ° megabyte di memoria video, ciò potrebbe non influire nemmeno su qualcuno che utilizza solo i classici terminali di testo. Processi più semplici, che utilizzano meno risorse, possono essere utili quando si lavora sull'esecuzione del ripristino.
  • Il codice esiste già. Pertanto, supportarli è facile.
  • La quantità di risorse per un terminale inutilizzato (prima dell'accesso) è molto ridotta. Anche quella piccola quantità di memoria può essere rivendicata modificando / etc / ttys
  • Il codice per supportare più terminali è piuttosto simile al codice per supportare l'I / O su connessioni seriali. Gli sviluppatori di sistemi operativi tendevano a valorizzarlo molto. Con i progressi nelle macchine virtuali, il valore dell'utilizzo delle connessioni seriali è meno critico rispetto al passato. Tuttavia, alcuni sviluppatori del kernel (che hanno già familiarità con il processo) potrebbero voler utilizzare tale hardware. Anche le organizzazioni che utilizzano hardware vecchio potrebbero trarre vantaggio dal fatto di non dover modificare l'hardware.

In sintesi, non ci sono molte ragioni per non supportare questo. Ci sono alcuni benefici che alcune persone apprezzano, almeno alcune volte, e non molto costosi.

In realtà, rimuovere il supporto per questo può essere più lavoro che lasciare semplicemente il supporto lì. Anche se rimuovere il supporto sarebbe probabilmente semplice, se qualcosa si fosse rotto, identificare e risolvere il problema potrebbe essere un po 'impegnativo. Quindi, la riduzione della quantità di sforzo richiesta (per sviluppare la prossima versione di un sistema operativo) è ancora un altro motivo per lasciare le cose così come sono. Ciò significa che questa funzione è soggetta a rimanere disponibile.


Avere una prospettiva storica è spesso utile. Dici che vuoi concentrarti sul presente ma infine concludere "Uno dei motivi per cui Unix / Linux attualmente fornisce più emulatori di terminale è perché li ha forniti in primo luogo ..."
jlliagre

Sì. Lo ha fatto. In caso contrario, potrebbe non esserlo oggi. Ma dal momento che Unix l'ha fatto, questo rimane un motivo convincente per cui lo fa. Non intendevo minimizzare l'utilità di avere familiarità con il passato. La mia naturale tendenza sarebbe quella di concentrarmi sul perché è stato aggiunto (e la mia prima bozza o due l'hanno avuto in modo più dettagliato), ma la mia ragione principale per cercare di concentrarmi sul presente è che è la domanda. Inoltre, altre risposte hanno menzionato il passato e ho cercato di dare una risposta utile aggiungendo a quanto affermato, invece di duplicare ciò che è già stato detto altrove nella pagina.
TOOGAM

3

Il primo di ciò che ti è stato chiesto è una funzionalità di un kernel chiamato Linux. Non di Unix in generale, e non di Gnu.

Per quanto riguarda il motivo, dovresti chiedere agli autori. Tuttavia la mia ipotesi è che, consente a un amministratore di un dispositivo non in rete (qui includo un RS232 come tipo di rete), di accedere e fare un po 'di lavoro di amministrazione, senza disconnettere un altro utente.


Sì, i VT dei kernel sono impostati dal codice di terra dell'utente e sì, ci sono altri Unix che li hanno. Tuttavia non è una cosa Unix generale.
ctrl-alt-delor,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.