লিনাক্স: / dev / কনসোল, / ডেভ / টিটি এবং / ডেভ / টিটি0 এর মধ্যে পার্থক্য


133

Linux সিস্টেমে, কি মধ্যে পার্থক্য /dev/console, /dev/ttyএবং /dev/tty0?

তাদের নিজ নিজ ব্যবহার কি এবং তারা কীভাবে তুলনা করে?


3
এছাড়াও আপনি আগ্রহী হতে পারেন এই
কেভিন

উত্তর:


93

ডকুমেন্টেশন থেকে :

/dev/tty        Current TTY device
/dev/console    System console
/dev/tty0       Current virtual console

ভাল পুরানো দিনগুলিতে /dev/consoleসিস্টেম অ্যাডমিনিস্ট্রেটর কনসোল ছিল। এবং টিটিওয়াই হ'ল একটি সার্ভারের সাথে সংযুক্ত ব্যবহারকারীদের সিরিয়াল ডিভাইস। এখন /dev/consoleএবং /dev/tty0বর্তমান প্রদর্শন উপস্থাপন এবং সাধারণত একই। আপনাকে জুড়তে উদাহরণস্বরুপ এটিকে ওভাররাইড করতে console=ttyS0করতে grub.conf। এর পরে আপনার /dev/tty0মনিটর এবং /dev/consoleহয় /dev/ttyS0

/dev/ttyএবং এর মধ্যে পার্থক্য দেখানোর জন্য একটি অনুশীলন /dev/tty0:

Ctrl+ Alt+ টিপে 2 য় কনসোলে স্যুইচ করুন F2। হিসাবে লগইন করুন root। প্রকার sleep 5; echo tty0 > /dev/tty0। টিপুন Enterএবং Alt+ টিপে 3 য় কনসোলে স্যুইচ করুন F3। এখন Alt+ টিপে 2 য় কনসোলে ফিরে যান F2। টাইপ করুন sleep 5; echo tty > /dev/tty, টিপুন Enterএবং 3 য় কনসোলে স্যুইচ করুন।

আপনি দেখতে পাচ্ছেন যে ttyএটি কনসোল যেখানে প্রক্রিয়া শুরু হয় এবং tty0সর্বদা বর্তমান কনসোল।


6
দুর্দান্ত অনুশীলন! উবুন্টু রুট লক, তাই এক পথ উবুন্টু এই পুনর্গঠন করা হয়$ sudo sh -c "sleep5; echo tty0 > /dev/tty0"
SFun28

10
@ এসফুন ২৮, আমি সর্বদা ব্যবহার করি এবং ভয়েলা sudo -i- একটি মূল শেল।
আন্দ্রে লাস্লোলো

4
রুট প্রাইভেসের প্রয়োজন হয় এমন ফাইলগুলিতে লেখার জন্য একটি প্রতিমা হ'ল প্রতিধ্বনি | sudo tee / dev / tty0> / দেব / নাল;
পিটার কর্ডেস

শালা। যখন un unix.stackexchange.com/a/229598/80483 লিখেছেন, this এই উত্তরটি সম্পর্কে অসচেতন ছিল !
ইনকনিস মিসেসি

@ এসফুন 28: যদি sudo anycommandকাজ করে তবে রুটও sudo -iকাজ করে। লিনাক্স / বিএসডি / ইউনিক্সের মতো কোনও জিনিস নেই যেখানে আপনি রুট করতে পারবেন না। (তারপরে এটি আর লিনাক্স / বিএসডি / ইউনিক্স হবে না))
Evi1M4chine

60
  • /dev/consoleডিভাইসের ভার্চুয়াল সেট যা বুট করার সময় প্যারামিটার হিসাবে সেট করা যায়। এটি সিরিয়াল ডিভাইস বা ভার্চুয়াল কনসোল এবং পুনরায় ডিফল্ট পয়েন্টে পুনঃনির্দেশিত হতে পারে /dev/tty0। যখন একাধিক console=বিকল্পগুলি কার্নেলে প্রেরণ করা হবে তখন কনসোল আউটপুট একাধিক ডিভাইসে যাবে।

  • /dev/tty0 বর্তমান ভার্চুয়াল কনসোল

  • /dev/tty[1-x]আপনি যে ভার্চুয়াল কনসোলগুলিতে স্যুইচ করেন control- তার মধ্যে একটি alt- F1এবং আরও কিছু।

  • /dev/ttyএটি যে প্রক্রিয়াটি খোলার সাথে সম্পর্কিত তা কনসোলের (শারীরিক, ভার্চুয়াল বা সিউডো ডিভাইস, যদি থাকে তবে) একটি উপাধি। অন্যান্য ডিভাইসগুলির মতো নয়, এটিতে লেখার জন্য আপনার রুট সুবিধার দরকার নেই। এটিও নোট করুন যে দ্বারা চালু করা cronঅনুরূপ প্রক্রিয়াগুলি এবং অনুরূপ ব্যাচ প্রক্রিয়াগুলির কোনও ব্যবহারযোগ্য /dev/ttyহয় না, কারণ তারা কোনওটির সাথে সম্পর্কিত নয়। এই প্রক্রিয়াগুলির আউটপুট কলামে একটি ?রয়েছে ।TTYps -ef


"/ Dev / tty" এই বিবৃতিটি থেকে প্রশ্নটি জিজ্ঞাসা করার অর্থ কী?
রন ভিন্স

1
@ রনভিংস আমার অর্থ /dev/ttyএটি যে প্রক্রিয়াটি খোলায় তার উপর নির্ভর করে কোনও আলাদা ডিভাইস হতে পারে, যদি থাকে তবে। উত্তর আপডেট হয়েছে।
jlliagre

ধন্যবাদ। আমি কি জানতে পারি যে প্রক্রিয়াগুলি আসলে তাদের সাথে যুক্ত ডিভাইস ফাইলটিতে / থেকে সরাসরি / পরিবর্তে / থেকে / ডিভ / টিটি-তে লিখতে / পড়তে পারে?
রন ভিন্স

@ রনভিন্স আমি ভয় পাচ্ছি যে আপনি কী জিজ্ঞাসা করছেন তা আমি নিশ্চিত নই। আপনি কি এটি নতুন করে বলতে পারেন?
jlliagre

1
@ রনভিংস ওপেনিং / ডেভ / টিটি (নয় / দেবদেবী / অনুগ্রহপূর্বক ১ ,..., এন) ইউনিক্সের টার্মিনালে কিছু লেখার প্রক্রিয়াটির জন্য ইউনিক্স (এবং লিনাক্স) স্ট্যান্ডার্ড। অন্যান্য ডিভাইসটি বহনযোগ্য, আরও জটিল এবং কম নির্ভরযোগ্য যাই হোক না কেন সরাসরি লিখুন প্রক্রিয়া টার্মিনালের সাথে সংযুক্ত যে প্রকৃত ডিভাইসটি কী তা কোনও প্রক্রিয়াটি জানতে হবে না, কার্নেলটি এটি ইতিমধ্যে জানে।
jlliagre

20

আপনার / dev / কনসোল

https://github.com/torvalds/linux/blob/master/Documentation/admin-guide/serial-console.rst

লিনাক্সে, কার্নেল কনসোলটি console= বুট বিকল্প ব্যবহার করে কনফিগার করা যায় । কার্নেল কোড যা কল printk()করে তাতে বার্তা লিখতে পারে, উদাহরণস্বরূপ যখন কোনও ডিভাইস লোড হয় বা কোনও ত্রুটি ঘটে। এই বার্তাগুলিও কার্নেল দ্বারা বাফার করা হয়। (আরও দেখুন dmesg) যখন কোনও কনসোল ডিভাইস পাওয়া যায় এবং শুরু হয়, তখন এটি পূর্বের সমস্ত বাফার বার্তা গ্রহণ করে receives

আপনি console=একাধিক কনসোল কনফিগার করতে একাধিকবার পার করতে পারেন এবং তাদের সকলকে বার্তা লেখা হবে। স্পষ্টতই আপনি প্রতিটি "প্রকার" -এর জন্য কেবল একটি কনসোল নির্বাচন করতে পারেন: আপনি console=ttyS0এবং উভয়ই ব্যবহার করতে পারবেন না console=ttyS1

কার্নেল ডকুমেন্টেশন /dev/consoleসংখ্যায়িত অক্ষর ডিভাইস হিসাবে নির্দিষ্ট করে (5,1)। এই অক্ষর ডিভাইসটি খোলার ফলে "মূল" কনসোলটি খোলে যা কনসোলের তালিকার শেষ টিটি। প্রথম অ-কার্নেল প্রক্রিয়া, initবা বলা হয় "পিআইডি 1", /dev/consoleস্ট্যান্ডার্ড আউটপুট, স্ট্যান্ডার্ড ত্রুটি এবং স্ট্যান্ডার্ড ইনপুটের সাথে সংযুক্ত দিয়ে শুরু হয় is

যদি কনসোলগুলির কোনওটিও টিটি না হয়, তবে খোলার /dev/consoleফলে ত্রুটি ফিরে আসে ENODEV("এমন কোনও ডিভাইস নেই")। কার্নেল হবেছাপাএকটি বার্তা লগ করুন, এবং initনির্বিশেষে শুরু করুন । কার্নেল কনসোলের উদাহরণের জন্য যা কোনও টিটিআই ডিভাইস নয়, দেখুন netconsoleবা আমার প্রিয় লাইন প্রিন্টারটি কনসোল করুন

আপনি টিটি কনসোলগুলির একটি তালিকা পড়েও দেখতে পারেন /sys/class/tty/console/activeসিস্টেমযুক্ত ডকুমেন্টেশনটি দেখায় যে দেখানো প্রথম ডিভাইসটি মূল কনসোল। তালিকাটি আসলে কার্নেল কমান্ড লাইনের বিপরীতে রয়েছে। বর্তমান কার্নেল ডকুমেন্টেশন ভুল যে গত ডিভাইস দেখানো প্রধান বা "সক্রিয়" কনসোল। কোনও কারণে পরিবর্তনের জন্য এই ফাইলটি পোল করা সম্ভব (যদি কনসোল ডিভাইসগুলি সরিয়ে ফেলা হয়?)

একটি systemd-nspawnধারকের ভিতরে , স্ট্যান্ডার্ড /dev/consoleফাইলটি সিউডো-টার্মিনাল ডিভাইস (পিটিওয়াই) দিয়ে প্রতিস্থাপন করা হয়। এগুলি সর্বোত্তমভাবে ভার্চুয়াল টার্মিনাল ডিভাইস হিসাবে বর্ণনা করা হবে। এগুলি গতিশীলভাবে তৈরি করা হয় এবং এটি জিনোম টার্মিনালের মতো গ্রাফিকাল টার্মিনাল এমুলেটর বাস্তবায়ন করতে এবং দূরবর্তী অ্যাক্সেসের মতো ব্যবহার করতে ব্যবহৃত হয় ssh

আপনার / dev / tty0

লিনাক্স পির TTY ডিভাইস নোড tty1 মাধ্যমে tty63ভার্চুয়াল টার্মিনাল হয়। এগুলিকে ভিটি, বা ভার্চুয়াল কনসোল হিসাবেও উল্লেখ করা হয়। তারা শারীরিক কনসোল ডিভাইস ড্রাইভারের উপরে একাধিক কনসোল অনুকরণ করে। একবারে কেবল একটি ভার্চুয়াল কনসোল প্রদর্শিত এবং নিয়ন্ত্রণ করা হয়। সক্রিয় টার্মিনালটি স্যুইচ করা যেতে পারে, যেমন ব্যবহার করা chvtবা আপনার কাছে থাকা অনেকগুলি ফাংশন কীগুলির মাধ্যমে Ctrl + Alt + F1।

আপনি বর্তমান ভিটি ব্যবহার করে পড়তে এবং লিখতেও পারেন /dev/tty0tty0হ'ল সাধারন কার্নেল কনসোল, উদাহরণস্বরূপ যদি আপনি একটি স্পষ্টভাবে নির্বাচন না করেন। "সিস্টেমটি প্রথমে একটি ভিজিএ কার্ড [যা ভিটিগুলি চালিত হয়] এবং তারপরে সিরিয়াল পোর্টের জন্য সন্ধান করে"। আপনি কনসোলকে একটি নির্দিষ্ট ভিটিতেও সেট করতে পারেন, যেমন console=tty1

"আপনার সিস্টেমে যদি ভিজিএ কার্ড না থাকে তবে প্রথম সিরিয়াল পোর্টটি স্বয়ংক্রিয়ভাবে কনসোলে পরিণত হবে।" একটি "সিরিয়াল কনসোল" পছন্দ ttyS0সম্ভবত এর সবচেয়ে সাধারণ বিকল্প tty0। সিরিয়াল কনসোলের উপরে ভিটি সিস্টেম ব্যবহার করা সম্ভব নয়।

আপনার / dev / TTY

/dev/ttyপসিক্স দ্বারা নির্দিষ্ট করা তিনটি স্ট্যান্ডার্ড ডিভাইস ফাইলগুলির/dev/ মধ্যে একটি ( পসিক্স দ্বারা নির্দিষ্ট তিনটি ডিরেক্টরি নামের মধ্যে একটি)। এটি খোলার বর্তমান প্রক্রিয়ার নিয়ন্ত্রণকারী টার্মিনাল খোলার সমতুল্য। কমপক্ষে লিনাক্সে কোনও প্রক্রিয়া প্রথমে একটি টার্মিনাল খুললে নিয়ন্ত্রণকারী টার্মিনাল সেট করা হয় । উদাহরণস্বরূপ, মধ্যে init, এটি উল্লেখ করা হবে /dev/console

নিয়ন্ত্রক টার্মিনাল থেকে বিচ্ছিন্নকরণ একটি পটভূমি প্রক্রিয়া শুরু করার জন্য traditionতিহ্যগতভাবে প্রয়োজনীয় পদক্ষেপগুলির মধ্যে একটি, উদাহরণস্বরূপ সিস্টেম লগিং ডেমন । একটি পটভূমি প্রক্রিয়া হয়ে ওঠার পদক্ষেপগুলি মারাত্মকভাবে জটিল, তবে সুনির্দিষ্টভাবে বলা যায় যে, কন্ট্রোলিং টার্মিনাল থেকে পৃথক হওয়া পদক্ষেপটি সেটসিড সিস্টেম কল। আরও আধুনিক সিস্টেমে, init সিস্টেম যেমন systemd প্রথমে কোনও নিয়ন্ত্রণকারী টার্মিনাল ছাড়াই পরিষেবা শুরু করে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.