Bosh sahifa Wiki PTY

PTY

PTY — fizik terminalning xatti-harakatini dasturiy tarzda taqdim etadigan pseudo-terminal juftligi. Uning to‘liq nomi Pseudo-Terminal hisoblanadi.

PTY ikki qismdan iborat:

  • master;
  • slave.

Slave tomoni application uchun oddiy TTYga o‘xshaydi. Master tomoni terminal emulator, SSH server yoki boshqa boshqaruvchi dastur tomonidan ishlatiladi.

Master va slave

Terminal emulator klaviatura inputini masterga yozadi.

Kernel uni slave tomondagi shell yoki dasturga yetkazadi.

Application slave’ga output yozadi. Kernel outputni masterga beradi, terminal emulator esa ekranda ko‘rsatadi.

Terminal emulator
↕ master PTY
Kernel TTY layer
↕ slave PTY
Shell yoki application

Device nomlari

Unix tizimlarda slave PTY:

/dev/pts/0
/dev/pts/1

kabi ko‘rinishi mumkin.

Master odatda application tomonidan maxsus API orqali ochiladi va oddiy nom bilan ishlatilmasligi mumkin.

devpts virtual filesystem slave qurilmalarni taqdim etadi.

Terminal emulator

Grafik terminal dasturi:

  • window;
  • font;
  • keyboard;
  • clipboard;
  • color;
  • scrollback

ni boshqaradi.

Shell esa slave PTYga ulangan oddiy text process.

Terminal emulator shellning o‘zi emas.

SSH

SSH client serverdan PTY so‘rashi mumkin.

Server remote shellni slave PTYga ulaydi. SSH daemon master tomon orqali input va outputni shifrlangan kanalga uzatadi.

Interaktiv login uchun PTY kerak.

Bitta non-interactive command uchun PTY ajratilmasligi mumkin.

ssh -t

-t PTY ajratishni so‘raydi.

Bu:

  • sudo prompt;
  • interactive command;
  • terminal format;
  • full-screen dastur

uchun kerak bo‘lishi mumkin.

Binary data yoki file transfer PTY orqali yuborilsa, line discipline va control characterlar data’ni o‘zgartirishi mumkin.

Shell job control

Slave PTY controlling terminal sifatida ishlaydi.

Shell:

ni boshqaradi.

PTY bo‘lmasa job control cheklanishi mumkin.

Window size

Terminal emulator window satr va ustun sonini PTYga bildiradi.

O‘lcham o‘zgarsa foreground process SIGWINCH signal olishi mumkin.

Text editor va pager ekranni qayta chizadi.

Line discipline

PTY slave odatiy TTY line discipline’idan foydalanadi.

Canonical mode’da satr, raw mode’da belgilar tez uzatiladi.

Master tomon byte oqimini oladi, ammo slave settinglari output va inputga ta’sir qiladi.

Terminal control sequence

Application ANSI escape sequence yuboradi.

Terminal emulator:

  • cursor;
  • rang;
  • ekran tozalash;
  • alternate screen;
  • mouse;
  • title

amallarini bajaradi.

PTY sequence’ni tushunmaydi; u baytlarni tashiydi. Talqin terminal emulator tomonidan bajariladi.

Script va recording

script kabi vosita yangi PTY yaratib, shell sessiyasini yozib oladi.

U input va outputni logga saqlashi mumkin.

Session recordingda:

  • parol;
  • token;
  • shaxsiy ma’lumot

chiqishi mumkin. Access va retention cheklanadi.

Terminal multiplexer

tmux yoki screen PTYlardan foydalanadi.

Arxitektura:

  • multiplexer server shelllar uchun PTY yaratadi;
  • client terminalga ulanadi;
  • session client uzilganda davom etadi;
  • keyin qayta attach qilinadi.

Bu uzoq SSH sessiyalar uchun qulay.

Automation

Ba’zi command faqat TTY ko‘rsa interaktiv ishlaydi.

expect kabi vosita PTY yaratib:

  • prompt kutadi;
  • javob yuboradi;
  • dialogni avtomatlashtiradi.

Prompt matniga qattiq bog‘langan automation mo‘rt bo‘lishi mumkin. API yoki non-interactive flag afzal.

Container

Containerga interactive shell ochishda runtime PTY ajratishi mumkin.

Masalan, -t terminal, -i stdin ochiqligini boshqaradi.

CI muhitida TTY bo‘lmagani uchun rang, buffering va prompt xatti-harakati farq qiladi.

PTY va pipe

Jihat PTY Pipe
TTY semantikasi Bor Yo‘q
Job control Bor Yo‘q
Echo va canonical mode Bor Yo‘q
Message turi Byte oqimi Byte oqimi
Interactive dastur Mos Ba’zan mos emas
Binary data Line discipline zarar qilishi mumkin Qulayroq

PTY allocation xavfi

PTY soni va file descriptorlar cheklangan.

Ko‘p ochilgan, yopilmagan session resource exhaustionga sabab bo‘ladi.

SSH server user yoki connection bo‘yicha limit qo‘yadi.

Xavfsizlik

PTY slave permission bilan himoyalanadi.

Boshqa user terminalga yozishi yoki inputni o‘qishi cheklanadi.

Privileged session recording va PTY hijacking xavfsizlik siyosatiga tegishli.

Diagnostika

PTY muammosida:

tekshiriladi.

TERM noto‘g‘ri bo‘lsa, application mavjud bo‘lmagan control sequence ishlatishi mumkin.

PTY yaratish

Dastur PTY masterini ochadi, slave nomini oladi va child process yaratadi. Child yangi session ochib, slave’ni controlling terminal qiladi hamda stdin, stdout va stderrni unga bog‘laydi.

Parent master orqali dialogni boshqaradi.

Bu jarayon terminal emulator, SSH daemon va test vositalarining asosiy arxitekturasidir.

EOF va yopilish

Master yopilsa slave tomondagi process hangup signal olishi mumkin. Slave process tugasa master o‘qishda EOF yoki platformaga xos xato oladi.

Descriptorlar keraksiz processlarda ochiq qolsa, session tugashi kechikadi.

PTY va test

CLI dastur TTY mavjudligiga qarab boshqa output chiqarishi mumkin. Avtomatik test PTY orqali interactive prompt, rang va signal xatti-harakatini tekshiradi.

Test terminal o‘lchami va TERM qiymatini aniq belgilaydi.

Bog‘liq tushunchalar

TTY, Terminal emulator, Master PTY, Slave PTY, SSH, Job control, tmux, Line discipline, Controlling terminal