چگونه Screen را روی یک سرور مجازی اوبونتو نصب و استفاده کنیم؟
۲۲ اسفند ۱۴۰۳
اگر نیاز دارید چندین جلسه ترمینال را همزمان مدیریت کنید، اما باز کردن چندین پنجره برای شما امکان پذیر نیست، Screen یک راهکار قدرتمند و کارآمد است. این به شما اجازه میدهد چندین جلسه ترمینال را در یک محیط یکپارچه مدیریت کنید، بدون نیاز به اجرای X Server.
با استفاده از Screen میتواند به صورت همزمان به چندین سرور متصل شوید، خروجی یک برنامه در حال اجرا را بدون اختلال در کارهای دیگر مشاهده کنید و حتی پس از قطع ارتباط، جلسات ترمینال خود را بدون از دست دادن دادهها بازیابی کنید. در حالی که ابزارهایی مانند tmux نیز برای مدیریت جلسات ترمینال وجود دارند، Screen یکی از قدیمیترین و پایدارترین گزینهها با قابلیتهای قدرتمند مخصوص خود است؛ با لیارا همراه باشید.
در ادامه خواهید خواند:
- نصب Screen
- استفاده از Screen
- مدیریت نشستهای Screen
- مدیریت ترمینالها در Screen
- استفاده از Byobu همراه با Screen
- جمع بندی
نصب Screen
در این مقاله از اوبونتو 22.04 استفاده شده است، اما به جز مراحل نصب، سایر بخشها در اکثر توزیعهای ندرت لینوکس یکسان خواهد بود.
در بسیاری از نسخههای اوبونتو، Screen به صورت پیشفرض نصب شده است. با این حال، میتوانید با استفاده از apt
، منابع بستههای خود را بهروز کرده و screen
را نصب کنید.
با سرور مجاری ابری لیارا، بدون دردسر زیرساخت، کسبوکار خود را رشد دهید!
✅ پایدار ✅ پرسرعت ✅ اقتصادی
خرید سرور مجازی ابری لیارا

sudo apt update
sudo apt install screen
برای اطمینان از نصب موفقیتآمیز screen
، دستور را اجرا کنید.
which screen
Output
/usr/bin/screen
حالا میتوانید در مرحله بعد، کار با screen
را آغاز کنید.
استفاده از Screen
برای شروع یک جلسه جدید screen، دستور زیر را اجرا کنید.
$ screen
[secondary_label Output
GNU Screen version 4.09.00 (GNU) 30-Jan-22
Copyright (c) 2018-2020 Alexander Naumov, Amadeusz Slawinski
Copyright (c) 2015-2017 Juergen Weigert, Alexander Naumov, Amadeusz Slawinski
Copyright (c) 2010-2014 Juergen Weigert, Sadrul Habib Chowdhury
Copyright (c) 2008-2009 Juergen Weigert, Michael Schroeder, Micah Cowan, Sadrul Habib
Chowdhury
Copyright (c) 1993-2007 Juergen Weigert, Michael Schroeder
Copyright (c) 1987 Oliver Laumann
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; either version 2, or (at your option) any later version.
…
[Press Space for next page; Return to end.]
پس از اجرای برنامه، صفحهای حاوی مجوزهای مربوط به آن نمایش داده میشود. فقط کافی است Enter
را بزنید تا ادامه دهید.
ممکن است اتفاقی که بعد از آن میافتد کمی گیجکننده باشد. یک خط فرمان معمولی ظاهر میشود و به نظر میرسد که هیچ اتفاقی نیفتاده است. آیا screen به درستی اجرا نشده است؟ برای بررسی این موضوع، یک میانبر صفحه کلید را امتحان کنید. کلیدهای Ctrl-a
را فشار دهید و سپس v
را وارد کنید.
Output
screen 4.09.00 (GNU) 30-Jan-22
ما اکنون اطلاعات مربوط به نسخه screen را درخواست کردهایم و این پاسخ تأیید میکند که برنامه به درستی در حال اجراست.
Screen عمدتاً از طریق میانبرهای صفحه کلید کنترل میشود. هر میانبر صفحه کلید در screen با Ctrl+a
(فشردن کلید Ctrl
همراه با a
) شروع میشود. این ترکیب کلیدی به screen میگوید که منتظر کلید بعدی باشد.
قبلاً از این روش استفاده کردید تا نسخه screen را ببینید. حالا بیایید یک میانبر دیگر را امتحان کنیم. Ctrl+a ?
Output
Screen key bindings, page 1 of 2.
Command key: ^A Literal ^A: a
break ^B b license , removebuf =
clear C lockscreen ^X x reset Z
colon : log H screen ^C c
copy ^[ [ login L select '
detach ^D d meta a silence _
digraph ^V monitor M split S
displays * next ^@ ^N sp n suspend ^Z z
dumptermcap . number N time ^T t
fit F only Q title A
flow ^F f other ^A vbell ^G
focus ^I pow_break B version v
hardcopy h pow_detach D width W
help ? prev ^H ^P p ^? windows ^W w
history { } quit \ wrap ^R r
info i readbuf < writebuf >
kill K k redisplay ^L l xoff ^S s
lastmsg ^M m remove X xon ^Q q
[Press Space for next page; Return to end.]
این صفحه مربوط به میانبرهای داخلی screen است. احتمالاً دوست دارید نحوه دسترسی به این صفحه را به خاطر بسپارید، زیرا یک راهنمای سریع و عالی محسوب میشود. همانطور که در پایین صفحه میبینید، با زدن Space
میتوانید دستورات بیشتری ببینید.
برنامه top
را اجرا کنید تا اطلاعاتی درباره پردازشهای سیستم ببینید.
top
Output
top - 16:08:07 up 1:44, 1 user, load average: 0.00, 0.01, 0.05
Tasks: 58 total, 1 running, 57 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 507620k total, 262920k used, 244700k free, 8720k buffers
Swap: 0k total, 0k used, 0k free, 224584k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 3384 1836 1288 S 0.0 0.4 0:00.70 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.11 ksoftirqd/0
5 root 20 0 0 0 0 S 0.0 0.0 0:00.12 kworker/u:0
6 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
7 root RT 0 0 0 0 S 0.0 0.0 0:00.07 watchdog/0
8 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 cpuset
9 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 khelper
10 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs
11 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 netns
12 root 20 0 0 0 0 S 0.0 0.0 0:00.03 sync_supers
13 root 20 0 0 0 0 S 0.0 0.0 0:00.00 bdi-default
14 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kintegrityd
15 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kblockd
16 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 ata_sff
17 root 20 0 0 0 0 S 0.0 0.0 0:00.00 khubd
18 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 md
حالا که در حال نظارت بر فرآیندهای VPS خود هستیم، ممکن است نیاز داشته باشیم برخی دستورات را برای کسب اطلاعات بیشتر درباره برنامههایی که میبینیم اجرا کنیم. اما نیازی نیست که از محیط top
خارج شویم؛ میتوانیم یک پنجره جدید برای اجرای این دستورات ایجاد کنیم.
با استفاده از Ctrl + A, C
میتوان یک پنجره جدید باز کرد و هر دستوری را که میخواهیم، بدون ایجاد اختلال در نظارت پنجره دیگر، اجرا کنیم.
اما پنجره قبلی کجا رفت؟ میتوانیم با Ctrl + A, N
به آن بازگردیم. این میانبر، ما را به پنجره بعدی که در حال اجرا است، منتقل میکند. اگر به آخرین پنجره برسیم، دوباره به اولین پنجره برمیگردیم.
اگر بخواهیم در جهت مخالف جابهجا شویم، میتوانیم از Ctrl + A, P
استفاده کنیم. مثلاً اگر سه پنجره باز باشد و در پنجره سوم باشیم، این دستور ما را به پنجره دوم منتقل میکند.
یک میانبر مفید برای جابهجایی سریع بین دو پنجره اخیر، Ctrl + A, Ctrl + A
است. این دنباله ما را به آخرین پنجرهای که بازدید کردهایم، بازمیگرداند.
در این مرحله، شاید بخواهید تمام پنجرههایی را که ایجاد کردهاید، مدیریت کنید. خوشبختانه، screen چندین ابزار برای مدیریت جلسات دارد. ابتدا سه پنجره جدید ایجاد کنید تا مجموعاً چهار پنجره داشته باشید، سپس Ctrl + A, W
را امتحان کنید تا لیستی از تمام پنجرههای باز را مشاهده کنید.
Output
0$ bash 1$ bash 2-$ bash 3*$ bash
با اجرای این دستور، اطلاعات مفیدی دریافت میکنیم: لیستی از تمام پنجرههای فعلی. در این لیست، هر پنجره یک شماره دارد و شمارهگذاری از 0 شروع میشود. پنجرهای که در حال حاضر فعال است، با یک ستاره مشخص شده است.
برای مثال، اگر ببینیم که ستاره کنار شماره 3 قرار دارد، یعنی در حال حاضر در پنجره شماره 3 هستیم (که در واقع چهارمین پنجره است، زیرا شمارهگذاری از 0 شروع میشود).
اگر بخواهیم سریع به پنجره شماره 1 برویم، میتوانیم از میانبر Ctrl + A, 1
استفاده کنیم.
بهطور کلی، میتوانیم با استفاده از شماره شاخص هر پنجره، مستقیماً به آن بپریم. حالا دوباره لیست پنجرهها را با Ctrl + A, W
مشاهده میکنیم تا ببینیم چه پنجرههایی باز هستند.
Output
0$ bash 1*$ bash 2$ bash 3-$ bash
همانطور که مشاهده میکنید، ستاره نشان میدهد که در حال حاضر در پنجره شماره 1 هستیم.
اکنون روش دیگری برای جابهجایی بین پنجرهها را امتحان کنید. این بار از Ctrl-a “
استفاده کنید.
OutputNum Name Flags
0 bash $
1 bash $
2 bash $
3 bash $
این بار یک منوی ناوبری واقعی دریافت میکنید! میتوانیم با استفاده از کلیدهای جهت بالا و پایین بین پنجرهها حرکت کنید و با فشردن Enter به پنجره موردنظر بروید.
این روش بسیار کاربردی است، اما در حال حاضر همه پنجرههای ما “bash” نام دارند، که چندان مفید نیست. برای شناسایی بهتر، میتوانیم هر پنجره را نامگذاری کنید.
به پنجرهای بروید که میخواهید نامگذاری کنید، برای مثال با Ctrl-a 0
و سپس از Ctrl-a A
استفاده کنید.
Output
Set window's title to: bash
با استفاده از Ctrl-a A
، میتوانیم نام پنجرهها را تغییر دهیم. پس از فشردن این ترکیب، نام فعلی نمایش داده میشود و میتوان آن را به هر نام دلخواه تغییر داد.
به عنوان مثال، اگر در حال اجرا شدن در پنجره شماره 0 هستیم و از آن برای نظارت بر سرور استفاده میکنیم، میتوانیم نام آن را به Monitoring
تغییر دهیم.
نتیجه را Ctrl-a “
با ببینید.
Output
Num Name Flags
0 monitoring $
1 bash $
2 bash $
3 bash $
با استفاده از دنباله Ctrl-a A
، میتوانیم جلسات خود را نامگذاری کنیم. اکنون میتوانید نام پنجره را از “bash” تغییر دهید و هر نامی که میخواهید برای آن انتخاب کنید. ما دوباره در پنجره شماره 0 هستیم، بنابراین نام آن را “نظارت” میگذاریم.
نتیجه را با Ctrl-a “
مشاهده کنید.
Output
Really kill this window [y/n]
با سرور ابونتو لیارا، سرور خود را با هزینه بهصرفه و بالاترین کارایی مدیریت کنید.
✅ استقرار سریع ✅ منابع بهینه ✅ امنیت پیشرفته
خرید سرور اوبونتو لیارا
مدیریت نشستهای Screen
زمانی که میخواهید از screen خارج شوید و تمام پنجرههای خود را ببندید، میتوانید از دنباله Ctrl-a \
استفاده کنید.
Output
Really quit and kill all your windows [y/n]
این کار جلسه screen را از بین میبرد. تمام پنجرهایی که ایجاد شده است و هر کار ناتمامی که در حال انجام آن هستید از دست خواهد رفت.
اما ما در حال بررسی یکی از مزایای بزرگ استفاده از screen هستیم. قصد این نیست که جلسه از بین برود، بلکه قصد این است که آن را در detach شود. Detach کردن به برنامههای در حال اجرا در جلسه screen اجازه میدهد که همچنان به کار خود ادامه دهند، اما کنترل ترمینال را دوباره به جلسه پایه برمیگرداند. جلسه screen همچنان در پس زمینه اجرا میشود. برای detach کردن از Ctrl-a d
استفاده کنید.
Output
[detached from 1835.pts-0.Blank]
اکنون جلسه detach شده است. اما چگونه میتوان آن را دوباره متصل کرد.
screen –r
سوییچ -r
مخفف reattach است. اکنون دوباره به جلسه screen بازگشته اید.
اما اگر چندین جلسه screen داشته باشید چه؟ اگر یک جلسه screen ایجاد کرده و آن را detach کرده باشید، سپس یک جلسه جدید screen را شروع کرده و آن را نیز detach کرده باشید، چگونه مشخص کنید که به کدام جلسه متصل شوید؟

یک بار screen را اجرا کنید، سپس با Ctrl-a d
آن را detach کنید. سپس دوباره screen را اجرا کنید و مجدداً با Ctrl-a d
آن را detach کنید.
چطور مشخص کنید که کدام جلسه را متصل کنید؟
screen –ls
Output
There are screens on:
2171.pts-0.Blank (07/01/2013 05:00:39 PM) (Detached)
1835.pts-0.Blank (07/01/2013 03:50:43 PM) (Detached)
2 Sockets in /var/run/screen/S-justin.
اکنون لیستی از جلسات خود دارید. میتولنید جلسه دوم را با تایپ کردم شناسه آن بعد از سویچ -r
متصل کنید.
screen –r 1835
اما اگر بخواهید یم جلسه را همزمان روی دو کامپیوتر با دو پنجره ترمینال مجزا متصل کنید، چه؟ میتوانید از سوییچ -x
استفاده کنید که امکان اشتراکگذاری جلسه را فراهم کرده است.
screen –x
مدیریت ترمینالها در Screen
دستورات متعددی برای مدیریت جلسات ترمینالی که در screen اجرا میکنید، وجود دارد.
برای کپی کردن متن، میتوانید از Ctrl-a [
استفاده کنید.
این کار یک نشانگر را فعال میکند که میتوانید با کلید های جهت با HJKL حرکت دهید، به مکانی که میخواهید کپی را شروع کنید بروید و Enter
را بزنید. سپس به انتهای بخشی که میخواهید کپی شوید بروید و دوباره Enter
را بزنید، متن اکنون در کلیپبورد شما کپی شده است.
یک نکته مهم این این که این مکانیزم همچنین برای اسکرول کردن در screen استفاده میشود. اگر نیاز دارید متنی را که در خارج از صفحه است ببینید، میتوانید Ctrl-a [
را بزنید و سپس به بالا اسکرول کنید.
برای چسباندن متنی که کپی کردهاید، میتوانید از Ctrl-a ]
استفاده کنید.
یکی دیگر از کارهایی که ممکن است بخواهید انجام دهید، نظارت بر برنامههایی است که در یک پنجره دیگر اجرا میشوند.
فرض کنید که در یک پنجره در حال کامپایل کردن یک برنامه هستید و میخواهید بدانید چه زمانی کار آن تمام شده است. میتوانید از Ctrl-a _
استفاده کنید تا screen پنجره را برای سکوت نظارت کند و به شما اطلاع دهد که در 30 ثانیه اخیر هیچ خروجیای تولید نشده است.
بیایید این را با یک مثال دیگر امتحان کنیم. فرض کنید میخواهید screen به شما اطلاع دهد که چه زمانی ping به گوگل 4 بار انجام شده است.
ping –c 4 www.google.com
سپس Ctrl-a _
را وارد کنید.
Output
The window is now being monitored for 30 sec. Silence.
اکنون میتوانید در یک پنجره دیگر کار کنید و هنگامی که کار در این پنجره به پایان رسید، با ورود Ctrl-a 1
مطلع شوید.
Output
Window 2: silence for 30 seconds
همچنین میتوانید برعکس این کار را انجام دهید و هنگامی که در یک پنجره خاص فعالیتی رخ داد، مطلع شوید.
sleep 20 && echo “output”
سپس Ctrl-a M
را وارد کنید.
Output
Window 2 (bash) is now being monitored for all activity.
اکنون وقتی که دستور خروجی تولید کند، به ما اطلاع داده میشود. برای مشاهده نتایج، از Ctrl-a 1
استفاده کنید.
Output
Activity in window 2
فرض کنید قصد دارید تغییرات مهمی انجام دهید و میخواهید یک گزارش از تمام دستوراتی که اجرا میکنید داشته باشید. میتوانید جلسه را با Ctrl-a H
ثبت کنید.
Output
Creating logfile "screenlog.1".
تقسیم بندی صفحه (Screen Regions)
اگر نیاز دارید چندین پنجره را به صورت همزمان مشاهده کنید، میتوانید از قابلیتی که screen آن را regions مینامد، استفاده کنید.
برای ایجاد مناطق بیشتر، باید منطقه فعلی را تقسیم کنید. برای تقسیم صفحه به صورت افقی، از Ctrl-a S
استفاده کنید.
این کار پنجره فعالی را به نیمه بالایی منتقل میکند و یک منطقه خالی جدید در پایین صفحه باز میکند. میتوانید با Ctrl-a [tab]
به نیمه پایین بروید.
در این قسمت میتوان یک پنجره جدید ایجاد کرد یا نمای یک پنجره دیگر را تغییر داد.
اگر بخواهید منطقه فعلی را ببندید، میتوانید از Ctrl-a X
استفاده کنید.
این کار فقط نمای منطقه را حذف میکند و پنجره واقعی را از بین نمیبرد. یعنی اگر برنامهای در آن منطقه در حال اجرا باشد، همچنان میتوانید به آن از طریق یک پنجره عادی دسترسی داشته باشید، فقط نمای آن حذف شده است.
اگر بخواهید تقسیم صفحه را به صورت عمودی انجام دهید، میتوانید از Ctrl-a |
استفاده کنید.
کنترلهیا تقسیمبندی عمودی مشابه تقسیم بندی افقی است.
اگر چندین منطقه مختلف ایجاد کردهاید و میخواهید دوباره به یم منطقه واحد بازگردید، میتوانید از Ctrl-a Q
استفاده کنید. این کار تمام مناطق را به جز منطقه فعلی از بین میبرد.
بیشتر بخوانید: حل مشکل افزودن مخازن خارجی در اوبونتو 22.04 با gpg
استفاده از Byobu همراه با Screen
یک بهبود عالی برای screen، برنامه ای به نام byobu است. این برنامه به عنوان یک واسط برای screen عمل میکند و تجربه کاربری بهتری را ارائه میدهد.
در Ubuntu، میتوانید آن را با دستور زیر نصب کنید.
sudo apt install byobu
قبل از شروع، باید byobu را تنظیم کنید تا از screen به عنوان بکاند استفاده کند. این کار را میتوان با دستور زیر انجام داد.
byobu-select-backend
Output
Select the byobu backend:
1. tmux
2. screen
Choose 1-2 [1]:
در اینجا میتوانید screen را انتخاب کنید تا به عنوان مدیر پیشفرض ترمینال تنظیم شود.
اکنون به حای تایپ screen برای شروع یک جلسه، میتوانید byobu را اجرا کنید.
byobu
وقتی برای اولین بار Ctrl-a
را تایپ کنید، باید byobu را تنظیم کنید تا این کلید را به عنوان دستور screen بشناسید.
OutputConfigure Byobu's ctrl-a behavior...
When you press ctrl-a in Byobu, do you want it to operate in:
(1) Screen mode (GNU Screen's default escape sequence)
(2) Emacs mode (go to beginning of line)
Note that:
- F12 also operates as an escape in Byobu
- You can press F9 and choose your escape character
- You can run 'byobu-ctrl-a' at any time to change your selection
Select [1 or 2]:
گزینه 1
را انتخاب کنید تا byobu به صورت عادی کار کند.
رابط کاربری byobu اطلاعات مفیدی را ارائه میدهد، مانند لیست پنجرهها و اطلاعات سیستم. در Ubuntu، حتی تعداد بستههایی که بهروزرسانی امنیتی دارند را با یک عدد همراه با یک علامت تعجب روی زمینه قرمز نشان میدهد.
یکی از تفاوتهای byobu با screen در نحوه مدیریت جلسات است. اگر byobu را پس از جدا شدن (detach) اجرا کنید، جلسه قبلی شما را بازیابی میکند، نه اینکه یک جلسه جدید بسازد.
برای ایجاد یک جلسه جدید، از دستور زیر استفاده کنید.
byobu –S sessionname
کلمه sessionname
را با نام دلخواه برای جلسه خود جایگزین کنید. برای مشاهده لیست جلسات موجود، از دستور زیر استفاده کنید.
byobu –ls
Output
There are screens on:
22961.new (07/01/2013 06:42:52 PM) (Detached)
22281.byobu (07/01/2013 06:37:18 PM) (Detached)
2 Sockets in /var/run/screen/S-root.
اگر چندین جلسه باز باشد، هنگام اجرای byobu، منویی برای انتخاب جلسه مورد نظر نمایش داده میشود.
byobu
Output
Byobu sessions...
1. screen: 22961.new (07/01/2013 06:42:52 PM) (Detached)
2. screen: 22281.byobu (07/01/2013 06:37:18 PM) (Detached)
3. Create a new Byobu session (screen)
4. Run a shell without Byobu (/bin/bash)
Choose 1-4 [1]:
میتوانید یکی از جلسات فعلی را انتخاب کنید، یک جلسه جدید ایجاد کنید، یا حتی بدون استفاده از byobu یک شل جدید باز کنید.
یکی از گزینههای مفید برای سرورهای ابری که از راه دور مدیریت میشوند، اجرای خودکار byobu هنگام ورود به سیستم است. این ویژگی باعث میشود در صورت قطع اتصال، جلسات شما حفظ شوند و بتوانید دوباره متصل شوید و ادامه دهید.
برای فعال کردن اجرای خودکار byobu در هر ورود، این دستور را اجرا کنید.
byobu-enable
Output
The Byobu window manager will be launched automatically at each text login.
To disable this behavior later, just run:
byobu-disable
Press <enter> to continue…
همانطور که در پیام مشخص شده، اگر بخواهید این ویژگی را غیرفعال کنید، از دستور زیر استفاده کنید.
byobu-disable
پس از اجرای این دستور، byobu دیگر بهطور خودکار اجرا نخواهد شد.

مطالب مربوط: چگونه وردپرس را روی سرور مجازی اوبونتو Ubuntu بهینه کنیم؟
جمع بندی
در این مقاله، شما screen را نصب و استفاده کردید و سپس byobu را برای مدیریت جلسات ترمینال به کار بردید. شما چندین میانبر مختلف را برای جدا کردن (detach) و جابجایی بین محیطهای در حال اجرا بهصورت سریع یاد گرفتید.
مانند بسیاری از رابطهای ترمینال یونیکس، Screen ممکن است ویژگیهای خاص خود را داشته باشد، اما در عین حال قدرتمند و همهجا حاضر است، هیچوقت نمیدانید چه زمانی ممکن است مفید واقع شود.