लिनक्स में इतने सारे / देव / tty क्यों हैं?


27

उबंटू 10.04 में, यदि मैं / देव के तहत जांच करता हूं, तो 50 से अधिक tty हैं। tty0, tty1, tty2 ...।

मैं समझता हूं कि कंसोल कंसोल इनपुट / आउटपुट के लिए tty एक कैरेक्टर डिवाइस है।

  1. लेकिन उनमें से कई क्यों है? क्या यह पूल जैसा कुछ है?

  2. और क्या अंतर है / देव / pts / 0, 1, 2 ..., / dev / tty?

  3. यदि मैं एक टर्मिनल खोलता हूं, तो नया नंबर / देव / पीटीएस के तहत बनाया जाता है। लेकिन मुझे नहीं पता कब / देव / tty? प्रयोग किया जाता है।

    यहां तक ​​कि अगर मैं SSH कनेक्शन बनाता हूं, तो / dev / tty s की संख्या समान होती है।

    और अगर मैं करता हूँ

    cat /dev/tty0
    

    और कीबोर्ड में कुछ टाइप करें, मुझे इसी आउटपुट मिलते हैं। ये क्यों हो रहा है?


जवाबों:


25

Ttys केवल इनपुट / आउटपुट डिवाइस नहीं हैं। वे एक सत्र के लिए नियंत्रण टर्मिनल के रूप में अभिनय का एक विशेष कार्य भी करते हैं, जैसे सिग्नल भेजना (Ctrl + C)। / dev / ttyNN वर्चुअल कंसोल हैं, जो मॉनिटर पर फुल स्क्रीन डिस्प्ले हैं।

टर्मिनलों की शुरुआत / देव / tty1 से होती है। आप इन कंसोल पर जा सकते हैं, आमतौर पर, Ctrl + Alt + Fn कुंजियों को दबाकर।

उदाहरण के लिए, Ctrl + Alt + F1 आपको पहले वर्चुअल टर्मिनल पर ले जाता है। आजकल, अधिकांश लिनक्स वितरण t1 से एक्स सर्वर चलाते हैं। तो, Ctrl + Alt + F1 दबाने पर प्रभाव नहीं हो सकता है।

$ ps ax | grep Xorg | grep -v grep
 1504 tty1     Ss+   44:57 /usr/bin/Xorg :0 -background none -verbose -auth /var/run/gdm/auth-for-gdm-rfsWyA/database -nolisten tcp vt1

Ctrl + Alt + F2 आपको दूसरे टर्मिनल पर ले जाएगा। आमतौर पर वितरण वर्चुअल टर्मिनल पर लॉगिन प्रोग्राम (एगेटी) चलाते हैं।

$ ps ax | grep tty2 | grep -v grep
31865 tty2     Ss+    0:00 /sbin/agetty tty2 38400

लॉगिन कार्यक्रम आपको एक लॉगिन प्रॉम्प्ट प्रदान करता है और आपको उपयोगकर्ता नाम / पासवर्ड के साथ लॉगिन करने देता है। Init स्क्रिप्ट तय करती है, जहां सभी लॉगिन प्रोग्राम चलाए जाएंगे। तो इस पर निर्भर करता है कि आप tty9 कहते हैं, पर लॉगिन प्रॉम्प्ट देख सकते हैं या नहीं। अपने GUI इंटरफ़ेस पर वापस जाने के लिए, Ctrl + Alt + F1 (उदाहरण के लिए ऊपर दिए गए आउटपुट में) दबाएँ।

/ dev / tty0 एक विशेष उपकरण है, जो वर्तमान टर्मिनल को इंगित करता है। इसलिए, भले ही आप इसे (किसी भी वर्चुअल कंसोल) से चलाते हों, लेकिन tty0 से लिखित / पढ़ी गई कोई भी चीज़ आपके वर्तमान टर्मिनल पर जाती है।

'Ps ax' में दूसरा कॉलम प्रोग्राम का कंट्रोलिंग टर्मिनल भी देता है। कुछ कार्यक्रमों के लिए, डेमॉन की तरह, आप देख सकते हैं कि कॉलम '?' है, जिसका अर्थ है कि वे एक टर्मिनल से बंधे नहीं हैं।

/ dev / pts / 0 आदि psuedo- टर्मिनल डिवाइस हैं, जो सिस्टम डिस्प्ले से जुड़े नहीं हैं। उदाहरण के लिए, जब आप एक गनोम-टर्मिनल या कोई अन्य जीयूआई टर्मिनल खोलते हैं तो आपको टर्मिनल मिलता है। ये क्लाइंट-सर्वर आधारित दृष्टिकोण हैं जहां क्लाइंट साइड को प्रोग्राम की तरह निर्यात किया जाएगा, जैसे बैश। प्रोग्राम द्वारा छद्म टर्मिनल पर भेजा जाने वाला डेटा 'सर्वर' की तरफ भेजा जाता है (जिसे आमतौर पर किसी अन्य प्रोग्राम द्वारा देखा जाता है, जैसे गनोम-टर्मिनल)। नियंत्रण प्रक्रिया (सर्वर साइड) यह निर्धारित करती है कि टर्मिनल को क्या भेजा जाना चाहिए, जो अंततः क्लाइंट द्वारा देखा जाता है। ये डिवाइस आपके सिस्टम पर बिना किसी सीमा के कई 'GUI टर्मिनल' खोलने में मदद करते हैं, फिर भी नियंत्रण (ioctl), रंग सेटिंग, सिग्नल भेजने [Ctrl + C] आदि जैसे पुराने टर्मिनल प्रदान करते हैं।


2
यहां इसे पूछने के अलावा, किसी को यह कैसे पता होना चाहिए? कुछ आदमी पृष्ठ?
n611x007

1
@ n611x007 - man /dev/ptsएक अच्छी शुरुआत है, यह भी man termiosध्यान दें कि क्लाइंट / सर्वर ptys - ptm और pts के बीच द्विदिश है - जहाँ gnome- टर्मिनल, या xterm जैसे वर्चुअल टर्मिनल आमतौर पर मास्टर से जुड़ा होता है और बैश, शेल की तरह होता है। ।
wulfgarpro

मेरे सिस्टम पर /dev/ttyवर्तमान नियंत्रित टर्मिनल है, लेकिन मुझे नहीं पता कि क्या है /dev/tty0, हालांकि /dev/tty1लिनक्स केएमएससीओएन है। और /dev/tty7एक्स सर्वर है।
CMCDragonkai

हालांकि इस सवाल का जवाब नहीं है। जैसा कि डेही ने कहा, 64 / dev / ttyN डिवाइस हैं। 1-8 वर्चुअल कंसोल हैं। ptys अलग / under / dev / pts हैं। किस प्रणाली पर, कहते हैं, / dev / tty30 कभी भी उपयोग किया जाता है, और कैसे?
एंड्रयू मैकगिनेंस

1

मैं इस तरह की चीजों के संबंधों को स्पष्ट करना चाहता हूं।

पहले, / देव / tty प्रक्रिया स्तर पर है, यह ttyn (tty1, tty2, ...), ttySn (ttyS0, ttyS1), pty (pts / 0, pts / 1), और कुछ और हो सकता है।

/ dev / tty0 वर्तमान कंसोल (अग्रभूमि) वर्चुअल कंसोल का एक उपनाम है, इसलिए यह tty1, tty2, और इसी तरह हो सकता है। ध्यान दें कि ttyS0 एक उपनाम नहीं है; यह पहला सीरियल पोर्ट है।

/ dev / कंसोल सिस्टम कंसोल है, यह डिफ़ॉल्ट रूप में / dev / tty0 को इंगित करता है। यह ttyn, ttySn, ttyUSBn, lpn, और इतने पर हो सकता है।

मोटे तौर पर, / देव / tty> / dev / cosole> / dev / tty0


क्या यह कहीं से एक उद्धरण है, इसके लिए एक संदर्भ है? दिलचस्प पढ़ने के लिए कर सकते हैं
Xen2050

@ Xen2050 नहीं, लेकिन आशा है कि यह मददगार tldp.org/HOWTO/Remote-Serial-Console-HOWTO/…
Firo
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.