یکی از نقاط قوت لینوکس رویکردی است که نسبت به شبکه دارد که این موضوع عمدتا به خاطر میراثی است که از یونیکس به ارث برده است. به همین دلیل لینوکس سیستم عامل انتخابی ما به عنوان سرور است.
اصلی ترین راه حل برای دسترسی به یک سرور لینوکسی از طریق SSH یا همان Secure Shell است. هر دو راه حل مفید و امن هستند ولی مشکل اینجا است که هر دو قبل از دوره ای که فناوری وایفای و سلولار متداول بشوند طراحی شده اند. در نتیجه اگر به وایفای دیگری وصل شوید یا سیستمتان sleep شود، اتصالتان به سرور قطع خواهد شد.
Mosh و Tmux چیست؟
خوشبختانه چند ابزار وجود دارند که کار کردن با SSH را آسانتر و قابل اعتمادتر از قبل میکنند. شما میتوانید در هر سیستمی از این ابزارها استفاده کنید، از یک ترمینال فیزیکی در دیتاسنتر گرفته تا سرور خانگی، سرور ابری و حتی یک سیستم رو میزی که از یونیکس استفاده میکند.
Mosh ابزاری است با این قابلیت که SSH را از تغییرات شبکه آگاه کند و Tmux به ترمینال شما اجازه میدهد که یک شل را بین لاگینهای مختلف نگه دارید یا حتی آن را به اشتراک بگذارید.
برای معرفی از Mosh شروع کنیم. Mosh یه پروژه متن باز است که باعث میشود SSH بر روی رومینگ و اتصالات متناوب کار کند. با استفاده از Mosh شما میتوانید کامپیوتر خود را از یک شبکه سیمی به یک شبکه بی سیم تغییر دهید و اتصالتون بر قرار خواهد ماند؛ حتی این امکان وجود داره که لپتاپتون رو در حالی که به شبکه متصل هست در حالت sleep قرار بدید و وقتی که دوباره به شبکه متصل میشود، خواهید توانست از ترمینال استفاده کنید. اگر اتصال به شبکه را از دست بدهید Mosh به شما اطلاع خواهد داد. همچنین اگر سرور به آرامی پاسخ میدهد، mosh تا زمانی که اتصال بهبود پیدا کند، دستوراتی که تایپ میکنید را برایتان به نوعی ذخیره میکند.
نصب Mosh تقریبا خیلی ساده است بوده و مدیریت پکیج توزیع های مختلف لینوکس، Mosh را در خود جای داده اند. هم چنین Mosh بر روی گوگل کروم نیز موجود است.
نصب Mosh روی لینوکس
برای مثال، برای نصب روی اوبونتو طبق دستورهای زیر عمل میکنیم:
Sudo apt install mosh
البته سرور نیز بایستی Mosh server را نصب داشته باشد. مزیتی که در اینجا داریم این است که برای نصب میتوان از حالت یوزر نیز استفاده کرد و لزومی برای روت بودن وجود ندارد.
استفاده از Mosh
وقتی که میخواهید به سرور وصل شوید کافی است دستور زیر را تایپ کنید:
mosh username@server
واضح است که در دستور بالا به جای یوزرنیم، یوزر خودتان و به جای سرور اسم ماشینی که میخواهید به آن متصل شوید را وارد میکنید. اگر همه چیز درست کار کند شما به مانند گذشته یک session ریموتی به وسیله ترمینال دارید که با SSH کار میکند. همه چیز مثل گذشته کار میکند با این تفاوت که اتصال شما قابل اطمینان تر است.
نصب و استفاده از Tmux
بسیار خب، حالا ما یک کانکشن بهتر داریم که به واسطه تغییر شبکه از کار نمی افتد. فرض کنید که یکی از دستورات ما (مثل نصب نرم افزار یا کامپایل کردن) بیشتر از زمان عادی طول میکشد. اگر در حین اجرا اتصال قطع شود ترمینال نیز بسته خواهد شد و نصب نرم افزار با مشکل مواجه میشود.
علاوه بر این ما تنها میتوانیم در یک زمان مشخص فقط یک کار مشخص در ترمینال انجام دهیم و مثلا اگر بخواهید یک editor ران کنید، کل ترمینال شما مشغول خواهد شد.
Tmux راه حلی برای این مشکلات است. تیماکس به عنوان یک مالتیپلکسر ترمینال عمل کرده و به شما اجازه میدهد تا در یک پنجره چندین ترمینال اجرا کنید. دقیقا مثل یک تب جدید برای ترمینال ولی بسیار منعطف تر.
به وسیله تیماکس شما میتوانید از یک session لاگ اوت شوید و بعد که بازمیگردید دوباره از همان جا شروع به کار کنید. میتوانید چندین پنجره ترمینال داشته باشید. میتوانید یک برنامه را در یک پنجره ادیت کنید و در یک پنجره دیگر آن را تست کنید.
نصب Tmux بسیار آسان است. برای مثال برای نصب روی اوبونتو کافی است طبق زیر عمل کنیم:
Sudo apt install tmux
وقتی که تیماکس نصب شد تنها با دستور زیر آن را اجرا میکنیم:
tmux
سپس وارد یک پنجره ترمینال خواهید شد و یک نوار وضعیت خواهید دید که نشان میدهد شما در کدام پنجره هستید. تیماکس صفحه را به چندین پنجره تقسیم کرده و ترمینال هر کدام را به تفکیک نشان میدهد. شما همینطور میتوانید پنجرهها را جا به جا کنید و سایز آنها را عوض کنید. هر چند که ممکن است یادگیری تی ماکس تا حدی زمان گیر و مشکل باشد اما کاربرانی که زمان خود را صرف یادگیری آن کرده اند معتقد اند ویژگیهایی که تی ماکس ارائه میدهد به نسبت زمانی که لازم است برای یادگیری صرف کنیم ارزش دارد.
برای مثال یکی از ویژگیهای جالبی که تی ماکس ارائه میدهد امکان ترک session و بازگشت دوباره به آن است. برای این کار کافی است کلید ctrl+D را بزنید و برای بازگشت دوباره کافی است از دستور tmux attach استفاده کنید و میبینید که دوباره به همان session بازگشته اید.
ویژگی بالا این امکان را میدهد که تا زمانی که سرور ما روشن است session نیز همراه آن باشد و از بین نرود.
ترکیب Mosh و Tmux
قدرت اصلی در یک session ریموتی وقتی به دست ما میرسد که این دو نرم افزار را با هم ترکیب کنیم.
با استفاده از Mosh از هر نقطهای به سرور وصل خواهیم بود و دیگر نگران این که اتصال تا چه حد پایدار است نیستیم و با استفاده از Tmux، اگر در حال اجرای دستوری هستیم میتوانیم Session خود را ببندیم و بعدا بدون آن که چیزی از بین رفته باشد به آن بازگردیم.
ترکیب این دو با یکدیگر، به ما بیشترین توان قابل اطمینان بودن و منعطف بودن در یک کانکشن ریموتی را خواهد داد.