আমি কীভাবে স্ক্রিনটি ব্যবহার না করে ttys এর মধ্যে স্যুইচ করতে পারি?


17

সুতরাং আসুন আমরা ডেস্কটপ থেকে আপনার লিনাক্স ইনস্টল সমস্ত ধাপে বুট করা যাক। আপনি একটি জিনোম-টার্মিনাল / কনসোল / যা-ই শুরু করুন, যাতে আপনার কাছে কমান্ড সন্নিবেশ করার tty আছে have

এবার আসি আমি একই মেশিনে এসএসএইচ করি। কমান্ডগুলি প্রবেশ করানোর জন্য এটি আমাকে অন্য টাইটির সাথে আবদ্ধ করবে।

এখন ধরা যাক আমি আমার মূল এসটিএইচটি থেকে জিনোম-টার্মিনালটিতে আমার টিটিটি "স্যুইচ" করতে চাই one

মূলত আমি জিজ্ঞাসা করছি screen -xপর্দা ছাড়া একই জিনিসটি করার কোনও উপায় আছে কি ?

আমি জানি আপনি খুব সহজেই অন্য টিটিতে আউটপুট প্রেরণ করতে পারবেন / ডিভিল ফাইলে কিছু প্রতিধ্বনি দিয়ে, তবে টিটিটিতে কী আছে তা 'দেখার' উপায় আমি জানি না।

কোন ধারনা?



উত্তর:


16

হতে পারে এই স্কিমা পরিস্থিতি স্পষ্ট করতে পারে। এটি হ'ল সাধারন সেটিং:

                               Terminal  (/dev/ttyX or /dev/pts/x)
                                device
                                   |
                    (screen)<--[<output]----x-------(stdout) Process1
        Terminal  (keyboard)---[input >]---o-\----->(stdin)
                                            \ \
(hardware console or                         \ `----(stdout) Process2
 virtual console or terminal                  `---->(stdin)
 emulators like xterm, …)

এবং এর মতো নতুন কিছু প্লাগ করার কোনও উপায় নেইProcess3 :

                             Terminal
                              device
                                 |
             (screen)<---o---[<output]--x------(stdout) Process1
  Terminal (keyboard)---/-x--[input >]-o-\---->(stdin)
                       | /              \ \
                       | |               \ `---(stdout) Process2
                       | |                `--->(stdin)
                       | |
                       \ `---------------------(stdout) Process3
                        `--------------------->(stdin)

কোন স্ক্রিন (এবং অন্যরা) কিছু সিউডো টার্মিনাল ডিভাইস বরাদ্দ করে (যেমন এক্সটারেম দেয়) এবং এটিকে এক বা একাধিক "রিয়েল" টার্মিনালগুলিতে (শারীরিক, ভার্চুয়াল বা অনুকরণযুক্ত) পুনঃনির্দেশিত করে:

             Terminal                   pseudo
             devices              ,--> Terminal (/dev/pts/x)
                |         _______/      device
Terminal <--[<output]--- |       |        |
 1       ---[input >]--> |screen | <--[<output]---x-----(stdout) Process1
                         |Process| ---[input >]--o-\--->(stdin)
Terminal <--[<output]--- |       |                \ \
 2       ---[input >]--> |_______|                 \ `--(stdout) Process2
                                                    `-->(stdin)

screen -xআপনি ব্যবহার করে আরও একটি টার্মিনাল সংযুক্ত করতে পারবেন, এক্সটারম, Terminal 3স্ক্রিন সেশনে যা কিছু (যাই বলুন )।

সুতরাং না, আপনি স্ট্যান্ডিন / স্টডআউটের মাধ্যমে কোনও আলাদা টার্মিনালের সাথে সংযুক্ত প্রক্রিয়াগুলির সাথে সরাসরি যোগাযোগ করতে পারবেন না। আপনি কেবলমাত্র সেই প্রক্রিয়াটির মাধ্যমে এটি করতে পারেন যা এই টার্মিনালটিকে সিউডো টার্মিনাল বলে মনে হয় এবং যদি এই প্রক্রিয়াটি এটি করার জন্য স্থির হয় (পর্দার মতো)।


এটি একটি দুর্দান্ত ব্যাখ্যা! আমি মনে করি এটি এখানে সত্যই উত্তর নয়, তবে এই প্রশ্নের উপযুক্ত হবে। একটি পর্যবেক্ষণ: "উপায় নেই" কেবল সত্য যদি আপনি নিষেধ করেন ptrace; ধন্যবাদ ptrace, মত প্রোগ্রাম neercs, rettyএবং তাই কখনও কখনও এটি করতে পারে।
গিলস 'অশুভ হওয়া বন্ধ করুন'

@Gilles: ভাল তারা অন্য কিছু: তারা (ফাইল বর্ণনাকারী মান পরিবর্তন stdin, stdoutস্কিমা এর ডান দিকে) সরাসরি প্রক্রিয়া ছিনতাইয়ের দ্বারা। বিশুদ্ধ দুষ্ট!
স্টাফেন গিমেনেজ

1
হুম, আপনি ঠিক বলেছেন, তারা একটি আলাদা তীর পরিবর্তন করে। মন্দ, কিন্তু সুবিধাজনক!
গিলস 'অশুভ হওয়া বন্ধ করুন'

8

আপনার বর্তমান টার্মিনালের সাথে অন্য টার্মিনালের প্রক্রিয়াগুলি পুনরায় সংযোগ স্থাপন করা নোংরা কৌশল ছাড়া সম্ভব নয়। প্রক্রিয়াটি নির্দিষ্ট সিস্টেম কলগুলি (সহ ptrace) করতে বাধ্য করেই সম্ভব ; এর ফলে কিছু প্রোগ্রাম ক্রাশ হয়ে যায়। বিভিন্ন সরঞ্জাম যা এই, কি করতে হয় যেমন neercs, retty, cryopid, reptyr, ...; দেখুন কীভাবে আমি এটিকে চলমান প্রক্রিয়াটি অস্বীকার করব এবং এটিকে একটি নতুন স্ক্রিন শেলের সাথে যুক্ত করব? এবং লিঙ্কযুক্ত প্রশ্ন।

অন্য টার্মিনালে ইতিমধ্যে প্রদর্শিত আউটপুট প্রাপ্ত করা একটি ভিন্ন সমস্যা। কোনও সম্পূর্ণ সাধারণ সমাধান নেই: নীতিগতভাবে, একবার আউটপুট রেন্ডার হয়ে গেলে, টার্মিনালটি এটি কেবল একটি চিত্র হিসাবে সংরক্ষণ করতে পারে। অনুশীলনে, সমস্ত এক্স টার্মিনাল এমুলেটর তাদের আউটপুট বাফারটিকে পাঠ্য আকারে রাখে যাতে আপনি এটি অনুলিপি করতে পারেন। যে আউটপুট দখল করার উপায় টার্মিনাল এমুলেটর উপর নির্ভর করে; প্রাথমিক ধারণাটি পুরো স্ক্রোলব্যাক বাফারটি নির্বাচন করে অনুকরণ করা। লিনাক্স কনসোলের জন্য যেমন /dev/tty1, স্ক্রলব্যাক বাফারটি সহজেই /dev/vcs1(এবং /dev/vcsa1পাঠ্যের বৈশিষ্ট্য সহ) উপলব্ধ।

এর সহজ উত্তরটি হ'ল আপনি যদি অন্য কোনও জায়গা থেকে টার্মিনালের সাথে পুনরায় সংযোগ স্থাপন করতে চান তবে ব্যবহার করুন screenবা tmux

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