امر screen في لينكس ما هو ؟ ولماذا يستخدم؟ وكيفية استخدامه؟

من عرب اندكس

امر screen في نظام التشغيل لينكس يسمح لك بمحاكاة اكثر من نافذة (multiple windows) في طرفية لينكس ويونكس وشبيهات يونكس. ويعتبر من اهم استخدامات الامر screen هو من اجل فصل عملية قد يطول وقت تنفيذها عن الجلسة الحالية  ويمكن فيما بعد ضمها من جديد واستكمال العمل عليها.

باستخدامك لـ screen سوف تنشئ افتراضيا اكثر من طرفية SSH في نفس الطرفية التي تعمل عليها وبالتالي يمكنك التنقل بين الشاشات بكل سهولة ايضا.

يمكن تنصيب البرنامج عن طريق yum install screen في توزيعات ريدهات وشبيهاتها او عن طريق الامر apt-get install screen في توزيعات ديبيان وشبيهاتها.

لماذا يستخدم الامر screen؟

حتى نفهم اهمية استخدام الامر screen في بعض الاحيان دعنا ناخذ المثال التالي:

لو فرضنا ان لدينا ملف بحجم 100 جيجا بايت نود ان نقوم بتنزيله من شبكة الانترنت الى الخادم عن طريق الامر wget ، ولكن كما نعلم فان حجم 100 جيجا بايت يعتبر كبيرا وسوف يؤخذ وقتا طويلا ربما للتنزيل من شبكة الانترنت فماذا سوف يحدث لو نفذنا امر wget في نافذة SSH ومن ثم بعد بضع ثواني تم قطع اتصالنا بالخادم؟ بكل تاكيد الجواب هو ان عملية التحميل سوف تتوقف وسوف يتم انهائها.

ياتي هنا دور استخدام الامر screen ، حيث اننا نقوم باستخدام الامر screen والدخول الى الشاشة الافتراضية وتنفيذ الامر wget وبعدها لو تم قطع اتصالنا بالسيرفر لاي سبب من الاسباب فانه يمكننا اعادة الاتصال بالسيرفر ومن ثم الدخول الى الامر screen لنجد ان الامر wget ما زال يعمل بشكل طبيعي ولم يحدث عليه اي عملية انقطاع.

دعنا نجرب ذلك من ناحية عملية ، لدينا الملف على الرابط التالي https://speed.hetzner.de/10GB.bin وهو بحجم 10 جيجا بايت وهو ملف ببيانات افتراضية لغايات التجربة ونود ان نقوم باختبار screen لذلك.

سجل الدخول الى طرفية SSH ومن ثم نفذ الاوامر التالية

screen
wget https://speed.hetzner.de/10GB.bin

وبعد بدء التحميل للملف قم وبشكل مفاجئ على اغلاق نافذة ssh. بالوضع الطبيعي لو حصل هذا الامر بدون ادخال الامر في برنامج screen فان عملية التحميل سوف يتم انهائها ، ولكن الان جرب الدخول الى طرفية SSH مرة اخرى ونفذ الامر

screen -r

والتي تعني استعادة ما كان يتم تنفيذه في شاشة الامر screen الى النافذة الحالية ، وسوف تلاحظ ان عملية التحميل ما زالت جارية ولم يحدث اي توقف لها ، لا بل وانها لم تتاثر اصلا بعملية اغلاقك للنافذة حيث انه عند اغلاقك للنافذة بقي الامر قيد التنفيذ (الملف يتم تنزيله حتى وانت مسجلا الخروج من طرفية SSH). للعلم اثناء العمل داخل الامر screen يمكنك الخروج من الشاشة والعودة للشاشة الاساسية مع ابقاء الامر فعالا وذلك بالضغط على CTRL+a مع حرف d والتي تعني detach وللعودة للشاشة كل ما عليك هو تنفيذ الامر screen -r ، واما في حالة كان هناك اكثر من امر screen يعمل حاليا فانه بامكانك تنفيذ الامر screen -ls والذي سوف يقوم بعرض الشاشات المتوفرة حاليا ، مثلا

$ screen -ls
There are screens on:
32696.pts-0.osg1 (Detached)
615.pts-0.osg1 (Detached)
2 Sockets in /var/run/screen/S-root.

وعندها يمكنك العودة للشاشة المطلوبة باضافة رقمها بعد الامر ، مثلا للعودة للشاشة 615 فاننا نقوم بتنفيذ الامر screen -r 615 وهكذا.

ولانهاء الجلسة مع الامر screen للشاشة الحالية كل ما عهليك هو تنفيذ الامر exit داخل الشاشة.

في بعض الاحيان وعلى الرغم من وجود رقم الجلسة عن اجراء screen -ls ولمن اجراء الامر screen -r 615 مثلا لا يقوم بالعودة للجلسة وتظهر عبارة الخطا There is no screen to be resumed ، وبالتالي لتفاذي هذا الامر نبقوم باستخدام التعليمة x عند اجراء امر screen -r ليكون مثلا screen -rx 615 عندما تكون 615 هي رقم الجلسة على سبيل المثال.

للمزيد من المعلومات حول الامر والبرامترز المتوفرة معه انصحك بمراجعة https://kb.iu.edu/d/acuy.

ادوات بديلة احدث من screen

تجدر الاشارة الى ان هناك بدائل حديثة لأمر screen في نظام تشغيل Linux. واحدة من هذه البدائل هي tmux (Terminal Multiplexer)، وهي أداة مفتوحة المصدر تسمح لك بإدارة عدة نوافذ في واجهة سطر الأوامر وتشغيل العمليات في الخلفية.

tmux توفر العديد من الميزات المفيدة، بما في ذلك:

  1. تقسيم الشاشة: يمكنك تقسيم الشاشة إلى عدة نوافذ أو أقسام لعرض محتويات متعددة في وقت واحد.
  2. توجيه المدخلات: يمكنك توجيه المدخلات إلى أي نافذة أو جلسة منفصلة دون الحاجة إلى فتح نافذة جديدة.
  3. الدعم للعمليات في الخلفية: يمكنك تشغيل العمليات في الخلفية دون الحاجة إلى اتصال مستمر.
  4. الحفاظ على الجلسة بعد الانقطاع: تسمح لك بإيقاف واستئناف الجلسة بسهولة بعد انقطاع الاتصال.

لاحظ أنه على الرغم من أن tmux توفر ميزات مشابهة لـ screen، إلا أنها قد تكون أكثر قوة ومرونة بالنسبة لبعض المستخدمين. تعتبر tmux شائعة بشكل خاص في بيئات الخوادم وعلى أنظمة Linux.