نظرة عامة
يواجه مهندسو الأنظمة ومديرو الخوادم تحدياً شائعاً عند إدارة بيئات Ubuntu السحابية عبر بروتوكول SSH، حيث يؤدي أي انقطاع مفاجئ في الاتصال إلى توقف العمليات الجارية فوراً. توفر أداة screen حلاً جذرياً لهذه المعضلة عبر إنشاء جلسات عمل افتراضية مستقلة تواصل التنفيذ في الخلفية دون تأثر بحالة اتصال الطرفية. يستعرض هذا الدليل العملي منهجية استخدام الأداة لإدارة العمليات المستمرة، واستعادة الجلسات المفصولة، وحل المشكلات التشغيلية مع تخصيص بيئة العمل بما يلائم متطلبات الإنتاج.
تثبيت screen وإنشاء الجلسات واستعراضها
تتطلب تهيئة بيئة العمل تحديث مستودعات النظام البرمجية وتثبيت حزمة screen لضمان الحصول على النسخة المتوافقة والمستقرة.

للتحقق من إتمام التثبيت بنجاح وجاهزية الأداة للاستخدام، يُستعلم عن رقم الإصدار عبر الأمر screen -version.
تؤكد المخرجات الظاهرة على الطرفية اكتمال التثبيت وتوفر الأداة للعمل الميداني.
⚙️ [الخيارات والمعاملات الأساسية]
-S : تعيين اسم مخصص للجلسة لتسهيل الرجوع إليها والتعرف على طبيعة عملها.-ls : استعراض قائمة الجلسات الحالية النشطة وبيان حالة اتصالها بالطرفية.-d : فصل الجلسة المفتوحة (Detach) لنقلها إلى الخلفية دون إيقاف المعالجة.-m : إجبار النظام على بدء جلسة جديدة بالكامل، ويُعتمد عليه غالباً مع المهام الصامتة.-r : إعادة الاتصال بجلسة مفصولة ومتابعة التفاعل مع واجهتها النصية.-wipe : تنظيف وحذف سجلات الجلسات المنقطعة غير القابلة للوصول.

عند الحاجة لإطلاق مهمة مباشرة في الخلفية دون فتح شاشة الجلسة والتنقل إليها، يُنفذ الأمر screen -S backup_task -d -m sleep 60.
يحدد الخيار -S backup_task معرفاً واضحاً للمهمة، بينما يدمج الوسيطان -d -m تشغيل العملية sleep 60 كإجراء خلفي معزول فور الإنشاء.

يُعتمد الأمر screen -ls لفحص خريطة الجلسات القائمة ومعرفة العمليات المشغلة داخل الخادم.
توضح النتائج وجود الجلسة backup_task مصحوبة برقم المعرف الفريد (PID) مع تصنيفها كجلسة منفصلة (Detached)، مما يؤكد سيرها بصورة طبيعية دون ارتباط بجلسة المستخدم الحالية.

تشغيل العمليات في الخلفية وتتبع مخرجاتها
لبناء بيئة تجريبية تتيح فحص المخرجات الحية، يُنشأ مجلد عمل مستقل وملف سجل أولي عبر الأمر mkdir -p ~/screen_demo && echo '작업 준비 완료' > ~/screen_demo/task.log.

يُتيح الأمر screen -S build_job -d -m bash -c 'for i in {1..5}; do echo "진행 단계: $i" >> ~/screen_demo/task.log; sleep 1; done' تشغيل سكربت تكراري في الخلفية لمعالجة مهام طويلة المدى دون الحاجة لفتح واجهة تفاعلية.
تم ربط الجلسة بالاسم build_job مع تضمين أمر حلقة تكرارية يوثق مراحل التقدم في ملف السجل بفارق زمني قدره ثانية واحدة لكل دورة معالجة.

يُعاد الاستعلام عن الجلسات الجارية بواسطة screen -ls للتحقق من توزيع الموارد والمهام المتزامنة.
تُظهر القائمة ظهور المهمة الحديثة build_job إلى جوار الجلسة السابقة backup_task، حيث تعمل كلتاهما في حالة الانفصال (Detached) دون أي تداخل تقني.

للتأكد من استمرار السكربت في كتابة بيانات المعالجة وفق الخطة الزمنية، يُنفذ الأمر sleep 2 && cat ~/screen_demo/task.log للانتظار لثانيتين ثم طباعة محتوى السجل.
تُثبت البيانات المطبوعة توالي كتابة الأسطر خطوة بخطوة، ما يبرهن على فاعلية تنفيذ السكربتات البرمجية خلف الكواليس وبصورة مستقلة تماماً.

إيقاف الجلسات المعلقة وتنظيف الاتصالات التالفة
لتطبيق سيناريو عملي حول إدارة العمليات الزائدة وكيفية تصفيتها، تُطلق جلسة تجريبية باستخدام screen -S zombie_task -d -m sleep 100.
يقوم هذا الإيعاز بتخصيص جلسة تحت اسم zombie_task تدير أمراً خاملاً لمدة 100 ثانية بغرض إجراء اختبارات الإنهاء والفرز.

يُطلب سرد الجلسات المتصلة مجدداً بالأمر screen -ls لرصد الحالة الشاملة للخادم.
يؤكد الناتج تواجد ثلاث جلسات متزامنة في وضعية العمل الخلفي (Detached)، من ضمنها المهمة المؤقتة zombie_task.

يُمكن إيقاف أي جلسة دون الدخول إليها والتشويش على واجهتها، وذلك بإرسال إشارة إنهاء مباشرة عبر الأمر screen -S zombie_task -X quit.
يقوم الوسيط -X quit بتمرير أمر الخروج إلى الجلسة المحددة بالاسم zombie_task مما يؤدي لإغلاق مقابسها وحذفها بأمان.

عند انقطاع الاتصالات بشكل غير طبيعي قد تتبقى مقابس تالفة (Dead sessions) تشغل سجلاً وهمياً؛ لذا يُستخدم الأمر screen -wipe للتحقق من سلامة قنوات الاتصال وإزالة الإدخالات المعدومة.
يُجري الأمر مسحاً شاملاً لقائمة الجلسات، ويُظهر بقاء الجلستين الصالحتين build_job وbackup_task دون تأثر.

يُختتم هذا الفحص بإعادة تنفيذ screen -ls للتثبت من الحالة النهائية للنظام.
يتضح من الشاشة اختفاء الجلسة الملغاة zombie_task بالكامل، مع ثبات واستقرار العمليات التشغيلية الأخرى المتبقية في الخلفية.

تهيئة ملف screenrc وتوسيع سجل التمرير
لإضفاء طابع احترافي وتحسين الإنتاجية، تُنشأ إعدادات المستخدم المخصصة عبر الأمر touch ~/.screenrc.

تفادياً لضياع المخرجات السابقة عند التعامل مع سكربتات تفرز نصوصاً كثيفة، يُرفع حد سجل التمرير إلى 5000 سطر بالأمر echo 'defscrollback 5000' >> ~/.screenrc.

لإظهار شريط معلومات سفلي دائم يعرض رقم النافذة وعنوانها واسم الجهاز المضيف، يُمرر التكوين التالي: echo 'caption always "%{= kw}%-w%{= wk}%n %t%{-}%+w = %H"' >> ~/.screenrc.

يُراجع ضبط الملف والتأكد من إدراج الخيارات بصورة صحيحة عبر تنفيذ tail -n 2 ~/.screenrc.
تُظهر الأسطر الأخيرة تثبيت قيمة التمرير وتنسيق شريط البيانات بنجاح، مما يجعل الأداة جاهزة للعمل وفق التفضيلات المحددة عند كل إقلاع.

تناول هذا الدليل آليات الاعتماد على أداة screen داخل أنظمة Ubuntu لضمان استمرارية المعالجة في الخلفية وتجنب مخاطر انقطاع جلسات SSH. يُوصى بتطبيق هذه الممارسات عند تنفيذ عمليات الترقية، وضغط الملفات الضخمة، والمهام التي تتطلب ساعات عمل متواصلة لضمان بيئة إدارة خوادم مرنة وموثوقة.