terminal در لینوکس چیست و آشنایی با تاریخچه و جزئیات ترمینال لینوکس

terminal در لینوکس چیست و آشنایی با تاریخچه و جزئیات ترمینال لینوکس

لینوکس نیز مثل سیستم عامل های معروف Microsoft Windows و macOS  دارای رابط کاربری گرافیکی است.
در این نوشته درباره رابط‌ کاربری گرافیکی صحبت نمی‌شود بلکه با مفهوم ترمینال و کنسول در لینوکس آشنا خواهید شد.
در این آموزش با اصطلاحات console, tty, pty, ptm, pts و terminal در لینوکس بصورت کامل آشنا خواهید شد.
در ضمن می توانید از این لینک سایر آموزشهای لینوکس را مشاهده و مطالعه کنید.

مفهوم terminal

terminal از کلمه terminate می آید که پایان کار یا پایان فرایند ارتباطی را مشخص می کند.
در ادامه متوجه خواهید شد داستان جالب ترمینال یا terminal در لینوکس از کجا شروع شده است!

teletype

در سالهای بین 1830 تا 1830 میلادی ماشینهای teletypewriter یا teleprinter یا teletype  یا TTY ساخته و توسعه داده شدند.
این ماشین تحریر الکترومکانیکی، پیام‌های تایپ شده بوسیله صفحه کلید را از طریق سیم به مکانهای دور ارسال می‌کرد.
پیامها در مقصد بر روی کاغذ چاپ می‌شدند که انقلابی در تلگراف بود چون دیگر نیازی به Morse نبود.

linux terminal

رمزگذاری در teletype

پیام ها رمزگذاری و ارسال می شدند ، سپس دریافت ، رمزگشایی و چاپ می شدند.
چندین روش برای رمزگذاری و رمزگشایی پیام ها وجود داشت.

baud rate

یکی از معروف‌ترین و پرکاربردترین آنها، baud rate است که توسط Emile Baudot در 1874 میلادی ثبت اختراع شد.
رمزگذاری کاراکتری baud rate مربوط به 89 سال قبل از رمزگذاری کاراکتری ASCII  بوده است.

Baudot

رمزگذاری Baudot سرانجام به نزدیکترین مورد به یک استاندارد در رمزگذاری teleprinter تبدیل شد.
توسط اکثر سازندگان پذیرفته شد. طراحی سخت افزاری اصلی Baudot  همانند کلیدهای پیانو فقط پنج کلید داشت.
اپراتور ملزم به یادگیری یک ترکیب کلید خاص برای هر حرف بود.
سرانجام ، سیستم رمزگذاری Baudot با طرح بندی صفحه کلید سنتی جفت شد.

ASCII

هنگامی که ASCII در سال 1963 ایجاد شد، توسط تولیدکنندگان teletype پذیرفته شد.
با وجود اختراع و استفاده گسترده از تلفن، انواع teletype هنوز کاربردی بودند.

Telex

Telex یک شبکه گسترده جهانی از انواع مختلف teletypes بود که اجازه ارسال پیام‌های نوشتاری به سراسر جهان را می‌داد.
آنها وسیله اصلی انتقال پیام های نوشتاری در دوره پس از جنگ جهانی دوم تا زمان رونق دستگاه fax در دهه 1980 بودند.
کامپیوترها نیز در حال پیشرفت بودند. آنها قادر به تعامل با کاربران در زمان واقعی و پشتیبانی از چندین کاربر بودند.
روش دسته ای قدیمی کار ناکافی بود. مردم نمی خواستند 24 ساعت یا بیشتر منتظر نتایج خود باشند.
ساختن کارتهای پانچ شده و انتظار ۲۴ ساعته برای نتایج دیگر قابل قبول نبود.
به دستگاهی با کارایی بالا نیاز داشتند که بتوانند دستورالعمل‌ها را وارد کنند و نتیجه را برای آنها ارسال کند.

استفاده مجدد از Teletype

teletype بعنوان یک دستگاه ورودی/خروجی بهترین گزینه بود.
این وسیله ای بود که اجازه می داد پیام ها تایپ، رمزگذاری، ارسال، دریافت، رمزگشایی و چاپ شوند.

چه اهمیتی برای teletype داشت اگر دستگاهی که در انتهای اتصال قرار داشت از نوع teletype  نباشد ؟
مهم این بود که teletype با همان زبان رمزگذاری با دستگاه انتهای اتصال صحبت می‌کرد و می‌توانست پیام را دریافت و ارسال کند.
البته دستگاه مقصد نیز کم و بیش از یک صفحه کلید استاندارد استفاده می کرد.

console

در آن دوران teletype وسیله پیش فرض برای تعامل با کامپیوترهای mainframe و mini شد.

سرانجام دستگاه های الکترومکانیکی با دستگاههای الکترونیکی شبیه سازی شده جایگزین شدند.
در این دستگاهها، لامپ پرتوی کاتدی یا Cathode Ray Tube (CRT) جایگزین کاغذ لوله ای یا همان paper rolls شدند.
آنها در هنگام ارسال پاسخ از کامپیوتر نمی لرزند در صورتی که در دستگاههای الکترومکانیکی لرزش وجود داشت.
قابلیت‌هایی مثل حرکت موس داخل صفحه نمایش، پاک‌ کردن صفحه و پر‌رنگ کردن متن که تا آن زمان غیر‌ممکن بودِ، امکان‌پذیر شد.
DEC VT05  که video terminal است نمونه اولیه teletype مجازی بود در سال 1974 میلادی توسط شرکت Digital Equipment Corporation معرفی شد.
dec vt05 terminal
DEC VT100 معروف ترین و پرفروش ترین video terminal بود که در سال 1978 میلادی معرفی شد.
dec vt100 terminal

terminal در لینوکس

در محیط دسکتاپ های سیستم عامل لینوکسی و شبه لینوکسی مثل Mac، پنجره terminal در لینوکس و برنامه های کاربردی مثل Xterm و Konsole نمونه هایی از teletype مجازی هستند که بصورت نرم‌افزاری شبیه سازی شده اند.

tty در ترمینال لینوکس

در لینوکس، tty، اتصال‌های مستقیم به کامیوتر مثل اتصال موس و کیبورد از طریق پورتهای سریال را نمایش می‌دهد.
اتصال هایی که در سخت افزار شبیه سازی شده اند.
tty کوتاه شده کلمه teletype می‌باشد.
زمانی که در دسکتاپ یا محیط گرافیکی لینوکس هستید با فشرده ctrl + alt + F1 به tty1 متصل می‌شوید.
زدن  ctrl + alt + F2 برای اتصال به tty2 و ctrl + alt + F3 برای اتصال به tty3 و … با توجه به تنظیمات کرنل امکان‌پذیر است.

مثال

در تصویر زیر که مربوط به terminal در لینوکس است یک اتصال tty با نام tty1 وجود دارد.
این اتصال مربوط به پروسه login به ترمینال و زمان شروع اتصال 2021-01-01 22:13 بوده است.
id فرایند یا (process id ( pid آن 811 می‌باشد و id=tty1 برای توضیحات بیشتر استفاده شده است.

tty teletype linux

اطلاعات بیشتر درباره فرایند یا process در ترمینال لینوکس

در تصویر زیر می‌توان اطلاعات بیشتری از فرایند 811 را مشاهده کرد که نام  process یا فرایند آن agetty است.

pid process id details

دستور tty در ترمینال لینوکس

با دستور tty می توان نام فایل ترمینال متصل شده به standard input یا ورودی استاندارد را مشاهده کرد.
tty teletype linux

pty و ptm و pts در ترمینال لینوکس

در لینوکس، pts، اتصال های غیر مستقیم به کامپیوتراز طریق یک سرویس لینوکسی را نمایش می‌دهد.
اتصال هایی که در نرم افزار شبیه سازی شده اند.
برای مثال، اتصالی که از طریق سرویسهایی مثل SSH وFTP و TELNET به کامپیوتر انجام می‌شود.
مثال دیگر برای زمانی است که در محیط گرافیکی لینوکس یک ترمینال را باز می‌کنید.
pty کوتاه شده PseudoTerminal interfaces می‌باشد.
pts کوتاه شده PseudoTerminal Slave می‌باشد
ptm کوتاه شده PseudoTerminal Master می‌باشد.

pty و ptm و pts با یکدیگر معنا پیدا می‌کنند.

pty در ترمینال لینوکس

pty از یک جفت دستگاه های کاراکتر مجازی تشکیل شده است که یک کانال ارتباطی ۲ طرفه را فراهم می‌کند.
یک سمت این کانال master یا همان ptm است و سمت دیگر slave یا همان pts می باشد.
شبه ترمینال slave شبیه یک ترمینال کلاسیک عمل می‌کند.

فرایندی که قصد اتصال به ترمینال دارد، سمت slave را باز می‌کند و توسط برنامه‌ای هدایت می‌شود تا سمت master را باز کند.
هر چیزی که در سمت master بعنوان ورودی ترمینال نوشته می‌شود برای سمت slave قابل خواندن است.
برای مثال زمانی که   کلیدهای ترکیبی control-C در صفحه کلید را میزنید یک interrupt signal یا SIGINT یا سیگنال قطع از سمت master برای گروه فرایند که در بک گراند و در سمت slave است ارسال می شود تا  آن فرایند را توسط پردازشگر یا cpu قطع کند.
برعکس این مورد نیز امکان‌پذیر است یعنی وروی که وارد سمت slave می شود قابل خواندن برای سمت master است.

جریان داده بین master و slave دقیقا مثل جریان داده در ترمینال واقعی بصورت غیرهمزمان یا asynchronously است.
داده هایی که در سمت slave نوشته می‌شود همیشه سریعا قابل خواندن یا در دسترس سمت master نیست و برعکس.
یعنی داده هایی در سمت master نوشته می‌شود همیشه سریعا قابل خواندن یا در دسترس slave نیست.

مثال 1

در ردیف زرد رنگ، کاربر root در2021-01-06 10:14 وارد ترمینال شده و بصورت خودکار پوسته bash فعال شده است.
علامت به این معناست که شبه ترمینال pts/0 قابل wirte نیست.
شبه ترمینال فعلی که کاربر دستور را اجرا کرده است pts/3 می باشد.
شبه ترمینال slave با شماره 0 یعنی pts/0 ایجاد شده است که زمان idle یا بیکاری آن یک ثانیه است.
pid و آدرس ip  کاربر نیز مشخص است.

مثال 2

در ردیف سبز رنگ، شبه ترمینال های مربوط به فرایندهای مرده یا dead processes را مشاهده می کنید.
۲ عدد pts/2 می‌بینید که دلیل آن ایجاد انها در زمانهای متفاوت بوده است یعنی در زمانی که دومی ایجاد شده است مورد اول یک فراینده مرده بوده است.
term مربوط به کلمه terminate است و مقدار 0 یعنی با موفقیت terminate و exit انجام شده است.
به منظور مشاهده معنای کدها، می توانید به این لینک مراجعه کنید.

مثال 3

در ردیف قرمز رنگ، علامت + به معنای قابل write بودن شبه کنسول pts/3 است که در تصویر دوم کاملا مشخص است.
pty pts ptm linux

pts status write linuxتعداد شبه ترمینال های مجازی pty در زمان کامپایل کرنل از طریق CONFIG_UNIX98_PTYS قابل تنظیم است.
برای مشاهده حداکثر تعداد مجاز شبه ترمینال های مجازی pty می توانید از دستور زیر استفاده کنید:

برای مشاهده تعداد شبه ترمینال های pty که در حال حاضر فعال هستند می توانید از دستور زیر استفاده کنید:

max nr current number pty linux

API های terminal در لینوکس

دو API با نامهای BSD و System V برای شبه ترمینال وجود دارند که برنامه‌های جدید از System V استفاده می‌کنند.
از نام UNIX 98 برای نام System V نیز استفاده می کنند.

UNIX 98 با فراخوانی تابع posix_openpt دستگاه کپی master  یا master clone device یعنی dev/ptmx/ را باز می‌کند.
فایل  dev/ptmx/ بعنوان یک دستگاه multiplexer یک فایل کاراکتری است که برای ایجاد جفت های ptm وpts استفاده می‌شود.

زمانی که فرایندی فایل dev/ptmx/ را باز می‌کند شبه ترمینال ptm باز می‌شود ولی قبل از باز شدن شبه ترمینال pts، مالکیت و سطح سترسی (permission) شبه ترمینال pts با تابع grantpt تغییر و با تابع unlockpt قفل آن باز می‌شود.
در ادامه شبه ترمینال pts با فرخوانی تابع سیستمی open و بازگردانی نام pts توسط تابع ptsname در مسیر dev/pts/ باز می‌شود.

اصطلاح dumb terminal برای زمانی است که در جلوی رایانه نشسته‌اید و در محیط متنی ترمینال آن فقط ورودی میگیرید.
در واقع کار اصلی در یک رایانه قوی و قدرتمند دیگر انجام می‌شود و فقط خروجی آن را مشاهده می‌کنید.

نرم افزار Windows Terminal یک ترمینال برای سیستم عامل ویندوز نسخه 10 است که از این لینک قابل دانلود است.

سخن پایانی

مفهوم و تاریخچه و انواع terminal در لینوکس بصورت کامل در این آموزش گفته شد.
چنانچه نکته یا سوال خاصی در این خصوص داشتید حتما در نظرات مطرح نمایید تا در اسرع وقت بررسی شود.
پیشنهاد می شود آموزش shell در لینوکس که مبحث بعدی و مرتبط به ترمینال در لینوکس است را مشاهده نمایید.
از اینکه با iran admin همراه هستید بی نهایت سپاسگزاریم


5/5 - (1 امتیاز)
برچسب‌ها: , , , , , , , , , , ,
درباره نویسنده
ادمین
تجربه ۱۰ ساله در زمینه هاستینگ دارد و به صاحبان وب‌سایت‌ها کمک می‌کند از سرویس هاست با کیفیت برای موفقیت کسب‌و‌کار خود استفاده کنند. دلیل عمده نارضایتی مشتری نبود تعامل پشتیبان هاست با صاحبان وب‌سایت‌ها است. روش ایران ادمین ارائه مشاوره در خصوص انتخاب سرویس هاست مناسب و کمک به بهینه‌سازی وب سایت‌شان است.
اشتراک
اطلاع از
guest

0 نظرات
قدیمی ترین
جدیدترین بیشترین آرا
بازخورد بین خطی
مشاهده همه نظرات
0
نظرت درباره این نوشته چیه ؟x