قسمت ۱۰۲ از مجموعه آموزشی پیکربندی سرور لینوکس را با شما هستیم. یکی از دستورات لینوکس که در اصل یک بسته نرم افزاری است، Screen نام دارد. کاربرد این دستور اوقاتی است که اتصال به اینترنت ما، برای دسترسی به سرور از طریق خط فرمان یا SSH ضعیف است و احتمال قطع شدن آن وجود دارد. از طرف دیگر اجرای یک دستور طولانی را داریم که زمان زیادی را صرف می کند تا به اتمام برسد. مثلاً در مواقعی که قصد نصب کنترل پنل هایی مثل cPanel یا DirectAdmin را داریم، بهره بردن از Screen هم از خراب شدن سرور جلوگیری می کند. هم عملیات را بدون شکست به اتمام می رساند. در صورتی که حتی می توانیم اتصال SSH خود به سرور را قطع کنیم.
کار دستور Screen چیست؟
از آن جایی که در هنگام کار با خط فرمان لینوکس به واسطۀ SSH اگر ارتباط ما با شبکه قطع شود، عملیات مختل شده و اجرای دستورات از همان جا قطع می گردد، باید روشی وجود داشته باشد که دستور یا دستورات مورد نظر ما را بدون در نظر گرفتن اینکه آیا همچنان دسترسی ما به SSH برقرار است یا خیر، تا انتها دنبال کند.
این کار توسط بستۀ نرم افزاری ای به نام screen به سادگی انجام می شود. طریقه استفاده از آن هم ساده است. تنها کافی است دستور screen را در ابتدای هر دستور دیگری بیاورید تا یک صفحۀ دیگر باز شده و شما بتوانید دستورات خود را در آنجا وارد نمایید.
بدون هیچ محدودیتی می توان چندین screen باز کرد و هر screen دستورات مختص خود را اجرا کند. حتی اگر اتصال به کلی قطع گردد. برای باز کردن یک screen خالی هم همین دستور را در خط فرمان وارد می کنیم.
نصب Screen
در اولین گام بهتر است بررسی کنید که ببینید آیا Screen روی سیستم شما نصب شده یا خیر. برای این کار دستور زیر را بزنید که نسخه Screen را نمایش می دهد.
screen --version
اگر این دستور خروجی داشت و نسخه Screen را نشان داد، یعنی Screen نصب شده است. در غیر این صورت دستور زیر را در سرورهای CentOS برای نصب آن بزنید.
yum -y install screen
شروع یک Screen جدید
برای ایجاد کردن یک Screen جدید، به محض اینکه دستور screen را بدون هیچ گونه نشانوندی بزنید، این کار انجام می شود. حالا هر دستوری که بزنید، این دستور در محیط این نما یا Screen اجرا می گردد و اگر هم حتی پنجره Putty یا Terminal را ببندید، دستور تا انتها به کار خودش ادامه می دهد. حتی بعد از باز کردن مجدد Putty یا Terminal می توانید با وارد شدن به همان نما نتیجه را ببینید یا ادامه کار را پی بگیرید.
زمانی که در محیط Screen هستید، اگر Ctrl+a را بزنید و سپس ? را تایپ کنید، راهنمای کل دستورات مرتبط با دستور screen ظاهر می گردد. دقت داشته باشید که در محیط screen اگر بدون Ctrl+a دستوری را بزنید، دستور روی سرور اجرا می شود. اما وقتی Ctrl+a را می زنید و چیزی تایپ می کنید، در اصل در حال دادن دستور به خود برنامه Screen هستید. به این نکته دقت کافی داشته باشید.
هر نما یا جلسه یا Screen ای که ساخته می شود برای خودش نامی دارد. برای باز کردن مجدد همان Screen باید نام آن را دانست. با ساخت یک Screen جدید، نامگذاری به صورت خودکار انجام می شود. اما اگر بخواهیم نام گذاری دلخواه باشد باید از ساختار دستور زیر استفاده گردد:
screen -S session_name
به جای session_name باید نام دلخواه جلسه جایگزین شود.
خارج شدن از محیط Screen یا نما (Detach)
شما در هر زمانی بدون اینکه Screen را ببندید، می توانید از آن خارج شده و در مواقع بعدی مجدد به آن وارد شوید. برای خروج از همان Screen ای که درون آن هستید، Ctrl+a را بزنید و حالا d را تایپ کنید.
Ctrl+a d
دقت کنید وقتی از یک نما خارج می شوید، هنوز آن نما یا Screen وجود دارد و فقط شما از آن خارج شدید. بعداً می توانید مجدد وارد آن شوید.
فهرست کردن نام و شناسۀ تمامی Screen ها
زمانی که این دستور را چه در محیط یک Screen یا چه در محیط اصلی SSH می زنید، نام و شناسه کل Screen هایی که تا به حال ساخته شدند فهرست می شوند.
screen -ls
اگر همینک درون یک Screen باشید، عبارت Attached در روبروی همان Screen نمایش داده خواهد شد که نشان از فعال بودن همان نما دارد. پس این طوری می توانید بفهمید که الان درون کدام نما یا Screen هستید.
اگر هم هیچ نمایی وجود نداشته باشد، عبارت زیر به نمایش در خواهد آمد:
No Sockets found in /var/run/screen/S-root.
ورود مجدد به یک Screen که قبلاً از آن خارج شدیم (Reattach)
اگر فقط یک نما یا Screen ساخته باشیم، فقط کافی است دستور زیر را بزنیم تا مجدد وارد آن شویم. screen –r
اما اگر چندین Screen وجود داشته باشد، با زدن دستور بالا، فهرست شناسۀ تمامیِ Screen ها نشان داده می شود و باید از دستور زیر برای وارد شدن به یکی از آنها استفاده کنیم.
Screen -r [pid.]tty.host
به جای [pid.]tty.host باید شناسه و نام Screen را بزنیم. مثلا:
screen -r 2365.pts-0.localhost
بستن کامل یک Screen یا نما
برای بستن کامل نما و خروج از آن که همینک درون آن هستید، باید از ساختار دستور زیر استفاده کنید:
Ctrl+a :quit
یعنی Ctrl + A را از صفحه کلید بزنید و سپس علامت : و عبارت quit را تایپ کنید و Enter بزنید.
اما اگر خارج از محیط هر Screen ای خواسته باشید یک نما را ببندید، باید از دستور زیر استفاده کنید.
screen -S 23536 -X quit
به جای عدد بالا، باید شناسه یا همان pid نما را بزنید.
جمع بندی
این مقاله یک آموزش تقریباً کامل برای کار با دستور screen در سرور لینوکس بود که به عنوان مدیر سرور باید قادر باشید از آن استفاده نمایید. خیلی از مواقع در وقت و منابع شما صرفه جویی می کند.
آقا خیلی زیبا و ساده و روان و راحت توضیح دادین و تست کرد و جواب داد 😉
ممنون از آموزش خوبتون 🙂