Jaký je účel pseudotty?


Nejlepší odpověď

Spouštění programů na terminálu vám poskytuje další funkce, které tam nejsou, když spouštíte programy jako dávkové úlohy Například pokud spustíte proces na terminálu, můžete jej přerušit stisknutím Ctrl + C, ale pokud proces není spojen s žádným terminálem, nemůžete jej přerušit pomocí Ctrl + C, místo toho byste pravděpodobně měli spustit kill nebo něco podobného. Terminály jsou v této odpovědi vysvětleny podrobněji.

Vzdálený proces sshd používá dvojici pseudoterminálů, aby převzal roli klávesnice a obrazovky. Pokud vzdálený proces načítal z „opravdového“ terminálu, například /dev/tty1, získal by svůj vstup přímo z klávesnice. Místo toho sshd proces předá vaše stisknutí kláves vzdálenému procesu tak, že je zapíše na hlavní konec pseudoterminálu. Program, který právě spouštíte, pak přijímá data na podřízeném konci pseudoterminálu, jako by pocházel z klávesnice. Podobně, když proces zapisuje na podřízený konec pseudoterminálu, má iluzi, že zápis do „pravého“ terminálu, který by tiskl znaky na obrazovku. Místo toho však sshd načte data zapsaná na hlavní straně, zašifruje je a pošle je po drátu zpět k vám.

Chcete-li zjistit, co se stane bez terminálu , zkuste spustit něco jako ssh -T remote.host. Spustí shell na vzdáleném hostiteli, ale shell nebude obtěžovat tisk výzvy, protože nemá terminál, takže si myslí, že běží v dávkovém režimu. Také nebudete moci spustit sudo na vzdáleném hostiteli, protože sudo vyžaduje, aby bylo místo terminálu zadáno heslo na terminálu je to ze standardního vstupu.

Ve výchozím nastavení vzdálený sshd přidělí částku pouze v případě, že neurčíte příkaz. Pokud zkusíte ssh remote.host screen, uvidíte, že zadání příkazu potlačí přidělení pty a budete znovu v potížích. Chcete-li tomu zabránit, zadejte možnost -t a vzdálený sshd se vždy pokusí přidělit terminál.

… pokud na místním konci není žádný terminál, se kterým byste mohli mluvit, například pokud ssh čte ze souboru. V takovém případě můžete vynutit přidělení peněz pomocí ssh -t -t. To může mít některé nechtěné efekty, protože vzdálený konec bude reagovat na každý bajt zapsaný na standardní vstup ssh, jako by byl zadán na klávesnici. Například Ctrl + C na klávesnice produkuje kód ASCII 3, takže pokud by místní ssh náhodou přečetl bajt s hodnotou 3 ze svého vstupního souboru, předá to vzdálenému hostiteli, remote sshd jej zapíše na hlavní konec pty a jádro odešle SIGINT do procesu čtení ze slave konce. Terminály jsou zajímavá stvoření.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *