Linux সিস্টেমে, কি মধ্যে পার্থক্য /dev/console
, /dev/tty
এবং /dev/tty0
?
তাদের নিজ নিজ ব্যবহার কি এবং তারা কীভাবে তুলনা করে?
Linux সিস্টেমে, কি মধ্যে পার্থক্য /dev/console
, /dev/tty
এবং /dev/tty0
?
তাদের নিজ নিজ ব্যবহার কি এবং তারা কীভাবে তুলনা করে?
উত্তর:
ডকুমেন্টেশন থেকে :
/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
সর্বদা বর্তমান কনসোল।
$ sudo sh -c "sleep5; echo tty0 > /dev/tty0"
sudo -i
- একটি মূল শেল।
sudo anycommand
কাজ করে তবে রুটও sudo -i
কাজ করে। লিনাক্স / বিএসডি / ইউনিক্সের মতো কোনও জিনিস নেই যেখানে আপনি রুট করতে পারবেন না। (তারপরে এটি আর লিনাক্স / বিএসডি / ইউনিক্স হবে না))
/dev/console
ডিভাইসের ভার্চুয়াল সেট যা বুট করার সময় প্যারামিটার হিসাবে সেট করা যায়। এটি সিরিয়াল ডিভাইস বা ভার্চুয়াল কনসোল এবং পুনরায় ডিফল্ট পয়েন্টে পুনঃনির্দেশিত হতে পারে /dev/tty0
। যখন একাধিক console=
বিকল্পগুলি কার্নেলে প্রেরণ করা হবে তখন কনসোল আউটপুট একাধিক ডিভাইসে যাবে।
/dev/tty0
বর্তমান ভার্চুয়াল কনসোল
/dev/tty[1-x]
আপনি যে ভার্চুয়াল কনসোলগুলিতে স্যুইচ করেন control- তার মধ্যে একটি alt- F1এবং আরও কিছু।
/dev/tty
এটি যে প্রক্রিয়াটি খোলার সাথে সম্পর্কিত তা কনসোলের (শারীরিক, ভার্চুয়াল বা সিউডো ডিভাইস, যদি থাকে তবে) একটি উপাধি। অন্যান্য ডিভাইসগুলির মতো নয়, এটিতে লেখার জন্য আপনার রুট সুবিধার দরকার নেই। এটিও নোট করুন যে দ্বারা চালু করা cron
অনুরূপ প্রক্রিয়াগুলি এবং অনুরূপ ব্যাচ প্রক্রিয়াগুলির কোনও ব্যবহারযোগ্য /dev/tty
হয় না, কারণ তারা কোনওটির সাথে সম্পর্কিত নয়। এই প্রক্রিয়াগুলির আউটপুট কলামে একটি ?
রয়েছে ।TTY
ps -ef
/dev/tty
এটি যে প্রক্রিয়াটি খোলায় তার উপর নির্ভর করে কোনও আলাদা ডিভাইস হতে পারে, যদি থাকে তবে। উত্তর আপডেট হয়েছে।
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
।
লিনাক্স পির TTY ডিভাইস নোড tty1
মাধ্যমে tty63
ভার্চুয়াল টার্মিনাল হয়। এগুলিকে ভিটি, বা ভার্চুয়াল কনসোল হিসাবেও উল্লেখ করা হয়। তারা শারীরিক কনসোল ডিভাইস ড্রাইভারের উপরে একাধিক কনসোল অনুকরণ করে। একবারে কেবল একটি ভার্চুয়াল কনসোল প্রদর্শিত এবং নিয়ন্ত্রণ করা হয়। সক্রিয় টার্মিনালটি স্যুইচ করা যেতে পারে, যেমন ব্যবহার করা chvt
বা আপনার কাছে থাকা অনেকগুলি ফাংশন কীগুলির মাধ্যমে Ctrl + Alt + F1।
আপনি বর্তমান ভিটি ব্যবহার করে পড়তে এবং লিখতেও পারেন /dev/tty0
। tty0
হ'ল সাধারন কার্নেল কনসোল, উদাহরণস্বরূপ যদি আপনি একটি স্পষ্টভাবে নির্বাচন না করেন। "সিস্টেমটি প্রথমে একটি ভিজিএ কার্ড [যা ভিটিগুলি চালিত হয়] এবং তারপরে সিরিয়াল পোর্টের জন্য সন্ধান করে"। আপনি কনসোলকে একটি নির্দিষ্ট ভিটিতেও সেট করতে পারেন, যেমন console=tty1
।
"আপনার সিস্টেমে যদি ভিজিএ কার্ড না থাকে তবে প্রথম সিরিয়াল পোর্টটি স্বয়ংক্রিয়ভাবে কনসোলে পরিণত হবে।" একটি "সিরিয়াল কনসোল" পছন্দ ttyS0
সম্ভবত এর সবচেয়ে সাধারণ বিকল্প tty0
। সিরিয়াল কনসোলের উপরে ভিটি সিস্টেম ব্যবহার করা সম্ভব নয়।
/dev/tty
পসিক্স দ্বারা নির্দিষ্ট করা তিনটি স্ট্যান্ডার্ড ডিভাইস ফাইলগুলির/dev/
মধ্যে একটি ( পসিক্স দ্বারা নির্দিষ্ট তিনটি ডিরেক্টরি নামের মধ্যে একটি)। এটি খোলার বর্তমান প্রক্রিয়ার নিয়ন্ত্রণকারী টার্মিনাল খোলার সমতুল্য। কমপক্ষে লিনাক্সে কোনও প্রক্রিয়া প্রথমে একটি টার্মিনাল খুললে নিয়ন্ত্রণকারী টার্মিনাল সেট করা হয় । উদাহরণস্বরূপ, মধ্যে init
, এটি উল্লেখ করা হবে /dev/console
।
নিয়ন্ত্রক টার্মিনাল থেকে বিচ্ছিন্নকরণ একটি পটভূমি প্রক্রিয়া শুরু করার জন্য traditionতিহ্যগতভাবে প্রয়োজনীয় পদক্ষেপগুলির মধ্যে একটি, উদাহরণস্বরূপ সিস্টেম লগিং ডেমন । একটি পটভূমি প্রক্রিয়া হয়ে ওঠার পদক্ষেপগুলি মারাত্মকভাবে জটিল, তবে সুনির্দিষ্টভাবে বলা যায় যে, কন্ট্রোলিং টার্মিনাল থেকে পৃথক হওয়া পদক্ষেপটি সেটসিড সিস্টেম কল। আরও আধুনিক সিস্টেমে, init সিস্টেম যেমন systemd প্রথমে কোনও নিয়ন্ত্রণকারী টার্মিনাল ছাড়াই পরিষেবা শুরু করে।