Pada UNIX, tty (seperti banyak hal lainnya) muncul sebagai file. Data yang ditulis ke perangkat tty pergi ke terminal dan data yang berasal dari terminal tersedia untuk dibaca di tty.
Jika tty adalah port serial perangkat keras, maka data yang ditulis kepadanya akan dikirim pada kabel dan data yang berasal dari kawat muncul di tty.
Jika tty adalah konsol video mesin, maka data yang ditulis untuk itu akan ditampilkan di layar dan data yang berasal dari keyboard muncul di tty.
Jika tty adalah pseudo-tty (terminal virtual) yang terhubung ke emulator terminal X seperti gnome-terminal
kemudian data yang ditulis untuk itu akan dikirim ke perangkat lunak terminal emulator X dan pada gilirannya akan ditampilkan di jendela, sementara data yang diketikkan ke jendela itu tersedia untuk membaca di terminal virtual. Perangkat lunak ini dikatakan terhubung ke "master" ujung pseudo-terminal. Terminal nyata tidak memiliki ujung "master" karena ada perangkat nyata di belakangnya (seperti port serial), bukan perangkat virtual yang diimplementasikan oleh perangkat lunak.
Jadi Anda sudah dapat melihat bahwa tidak masuk akal untuk meminta emulator terminal X untuk beroperasi pada perangkat tty sewenang-wenang seperti /dev/ttyS0
(port serial nyata, di Linux). Itu pasti pseudo-tty.
Tetapi bisakah emulator terminal memilih ID numerik perangkat pseudo-terminal yang digunakannya? Pada prinsipnya, dimungkinkan bagi sebuah kernel untuk mengizinkan ini, tetapi pada kenyataannya antarmuka kernel untuk mengalokasikan pseudo-terminal baru tidak mendukungnya: kernel menentukan pilihannya sendiri. (Dalam model SysV pesudo-terminal dibuat dengan membuka perangkat khusus yang disebut /dev/ptmx
dan perangkat pseudo-terminal bernomor terendah yang tersedia dialokasikan secara otomatis.)
Tetapi: mengapa Anda harus memilih jumlah perangkat pseudo-terminal yang dialokasikan? Kernel memilih kernel yang tidak digunakan yang dijamin tersedia dan dapat digunakan. Apakah Anda punya alasan mengapa Anda lebih suka jika memilih yang lain?
Seperti untuk Anda pertanyaan lain:
Saya melihat banyak file tty di / dev dan banyak file pts di / dev / pts / Saya tidak tahu mengapa ada begitu banyak dari mereka. Apakah semuanya digunakan?
Tergantung sistemnya. Pada beberapa sistem, semua perangkat terminal pseudo yang mungkin sudah dibuat sebelumnya /dev/pts
atau /dev
, apakah sedang digunakan atau tidak. Pada yang lain, node perangkat hanya ada jika terminal pseudo sedang digunakan. Anda mengatakan Anda menggunakan Ununbu, yang menggunakan Linux, yang merupakan tipe yang terakhir. Jadi, ya, semua perangkat node yang Anda lihat /dev/pts
saat ini sedang digunakan.
Tetapi untuk akses sementara, itu sangat tidak nyaman. Saya ingin menggunakan socat untuk meneruskan tty atau pty ke klien. Kemudian klien dapat memulai terminal dengan pty atau tty itu.
Jika Anda ingin socat
atau peranti lunak lain terhubung ke terminal master pseudo-terminal, maka Anda perlu peranti lunak itu untuk secara khusus mendukung hal itu. Tetapi Anda beruntung karena socat
tidak. Misalnya, jika saya menjalankan:
socat PTY,link=/tmp/socat.pty TCP-LISTEN:2222 &
sleep 1 && ( setsid bash ) </tmp/socat.pty >/tmp/socat.pty 2>&1
Saya bisa mendapatkan shell dengan menghubungkan ke port 2222 dari tempat lain. Sangat berbahaya dari sudut pandang keamanan !!!