Jannah Theme License is not validated, Go to the theme options page to validate the license, You need a single license for each domain name.

كيفية تشغيل العمليات الخلفية والتحكم فيها على نظام Linux

استخدم Bash Shell في Linux لإدارة العمليات الأمامية والخلفية. يمكنك استخدام وظائف وإشارات التحكم في الوظائف الخاصة بـ Bash لتمنحك المزيد من المرونة في كيفية تشغيل الأوامر. نعرض لك كيف.

52865227384_8b80bb45d1_o كيفية تشغيل العمليات الخلفية والتحكم فيها على نظام Linux

كل شيء عن العمليات

عندما يتم تنفيذ برنامج في نظام تشغيل Linux أو Unix، تبدأ العملية. “العملية” هو اسم التمثيل الداخلي للبرنامج المنفذ في ذاكرة الكمبيوتر. هناك عملية لكل برنامج نشط. في الواقع، هناك عملية لكل ما يتم تشغيله على جهاز الكمبيوتر الخاص بك تقريبًا. يتضمن ذلك مكونات بيئة سطح المكتب الرسومية (GDE) مثل GNOME أو KDE، وبرامج النظام التي يتم تشغيلها عند بدء التشغيل.

لماذا تقريبا كل ما هو قيد التشغيل؟ حسنًا، لا تحتاج مكونات Bash المضمنة، مثل cd وpwd وalias، إلى إطلاق عملية (أو “إنتاجها”) عند تشغيلها. ينفذ Bash هذه الأوامر داخل مثيل Bash Shell الذي يعمل في نافذتك الطرفية. هذه الأوامر سريعة على وجه التحديد لأنها لا تحتاج إلى بدء عملية لتنفيذها. (يمكنك كتابة تعليمات في نافذة طرفية لرؤية قائمة مكونات Bash المضمنة.)

يمكن تشغيل العمليات في المقدمة، وفي هذه الحالة ستتولى مهام جهازك حتى تكتمل، أو يمكن تشغيلها في الخلفية. العمليات التي يتم تشغيلها في الخلفية لا تهيمن على النافذة الطرفية ويمكنك الاستمرار في العمل فيها. أو على الأقل، لا يهيمنون على النافذة الطرفية إذا لم يقوموا بإنشاء مخرجات الشاشة.

مثال فوضوي

سنبدأ بتشغيل تتبع ping بسيط. سنقوم بإجراء اختبار ping على مجال How-To Geek. سيتم تنفيذ هذا كعملية مقدمة.

ping www.howtogeek.com

1-10 كيفية تشغيل العمليات الخلفية والتحكم فيها على نظام Linux

نحصل على النتائج المتوقعة، بالتمرير إلى أسفل النافذة الطرفية. لا يمكننا فعل أي شيء آخر في النافذة الطرفية أثناء تشغيل اختبار ping. لإنهاء الأمر، اضغط على Ctrl+C.

Ctrl+C

2-9 كيفية تشغيل العمليات الخلفية والتحكم فيها على نظام Linux

يتم تمييز التأثير المرئي لـ Ctrl+C في لقطة الشاشة. يقدم ping ملخصًا قصيرًا ثم يتوقف.

دعونا نكرر ذلك. لكن هذه المرة سنضغط على Ctrl+Z بدلاً من Ctrl+C. لن يتم إنهاء المهمة. وسوف تصبح مهمة الخلفية. حصلنا على السيطرة على النافذة الطرفية التي عادت إلينا.

ping www.howtogeek.com
Ctrl+Z

3-10 كيفية تشغيل العمليات الخلفية والتحكم فيها على نظام Linux

يتم تمييز التأثير المرئي للضغط على Ctrl + Z في لقطة الشاشة.

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

سيقوم أمر الوظائف بإدراج المهام التي بدأت في الجلسة الطرفية الحالية. ولأن الوظائف هي (حتمًا) عمليات، فيمكننا أيضًا استخدام الأمر ps لرؤيتها. دعونا نستخدم كلا الأمرين ونقارن مخرجاتهما. سنستخدم خيار T (المحطة الطرفية) لسرد العمليات التي يتم تشغيلها في هذه النافذة الطرفية فقط. لاحظ أنه ليست هناك حاجة لاستخدام واصلة – مع خيار T.

jobs
ps T

4-5 كيفية تشغيل العمليات الخلفية والتحكم فيها على نظام Linux

يخبرنا أمر الوظائف بما يلي:

[1]: الرقم الموجود بين قوسين مربعين هو رقم الوظيفة. يمكننا استخدام هذا للإشارة إلى الوظيفة عندما نحتاج إلى التحكم فيها باستخدام أوامر التحكم في الوظيفة.
+: علامة الزائد + توضح أن هذه هي الوظيفة التي سيتم التصرف بناءً عليها إذا استخدمنا أمر التحكم في الوظيفة بدون رقم وظيفة محدد. يطلق عليه الوظيفة الافتراضية. الوظيفة الافتراضية هي دائمًا الوظيفة التي تمت إضافتها مؤخرًا إلى قائمة الوظائف.
متوقف: العملية ليست قيد التشغيل.
ping www.howtogeek.com: سطر الأوامر الذي أطلق العملية.

اقرأ أيضا:  أهم أوامر الشبكات التي يحتاج كل مستخدم Linux لمعرفتها

يخبرنا الأمر ps:

PID: معرف العملية للعملية. كل عملية لها معرف فريد.
TTY: المبرقة الزائفة (النافذة الطرفية) التي تم تنفيذ العملية منها.
STAT: حالة العملية.
TIME: مقدار وقت وحدة المعالجة المركزية الذي تستهلكه العملية.
الأمر: الأمر الذي أطلق العملية.
هذه هي القيم الشائعة لعمود STAT:

  • D: النوم المتواصل. تكون العملية في حالة انتظار، وتنتظر عادةً الإدخال أو الإخراج، ولا يمكن مقاطعتها.
  • I: Idle
  • R: تشغيل.
  • S: النوم المتقطع.
  • T: متوقف بواسطة إشارة التحكم في الوظيفة.
  • Z: عملية الزومبي. تم إنهاء العملية ولكن لم يتم “تنظيفها” بواسطة العملية الأصلية.

يمكن أن يتبع القيمة الموجودة في عمود STAT أحد هذه المؤشرات الإضافية:

  • <: مهمة ذات أولوية عالية (ليست مناسبة للعمليات الأخرى).
  • N: أولوية منخفضة (مناسبة للعمليات الأخرى).
  • L: تحتوي العملية على صفحات مقفلة في الذاكرة (تُستخدم عادةً في العمليات في الوقت الفعلي).
  • s: قائد الجلسة. قائد الجلسة هو العملية التي أطلقت مجموعات العمليات. الصدفة هي قائد الجلسة.
  • l: عملية متعددة الخيوط.
  • +: عملية المقدمة.

يمكننا أن نرى أن Bash لديه حالة Ss. يخبرنا الحرف الكبير “S” أن Bash Shell في وضع السكون وغير قابل للمقاطعة. بمجرد أن نحتاج إليها، وسوف تستجيب. يخبرنا الحرف الصغير “s” أن الصدفة هي قائد الجلسة.

يحتوي أمر ping على حالة T. وهذا يخبرنا أنه تم إيقاف ping بواسطة إشارة التحكم في الوظيفة. في هذا المثال، كان هذا هو الضغط على Ctrl+Z الذي استخدمناه لوضعه في الخلفية.

الأمر ps T له حالة R، والتي تعني التشغيل. يشير + إلى أن هذه العملية عضو في المجموعة الأمامية. لذا فإن الأمر ps T يعمل في المقدمة.

أمر bg

يتم استخدام الأمر bg لاستئناف عملية الخلفية. ويمكن استخدامه مع أو بدون رقم الوظيفة. إذا كنت تستخدمه بدون رقم مهمة، فسيتم عرض المهمة الافتراضية في المقدمة. لا تزال العملية تعمل في الخلفية. لا يمكنك إرسال أي مدخلات إليها.

إذا أصدرنا الأمر bg، فسنستأنف أمر ping:

bg

5-5 كيفية تشغيل العمليات الخلفية والتحكم فيها على نظام Linux

يتم استئناف الأمر ping ونرى إخراج التمرير في النافذة الطرفية مرة أخرى. يتم عرض اسم الأمر الذي تمت إعادة تشغيله لك. تم تسليط الضوء على هذا في لقطة الشاشة.

6-5-1 كيفية تشغيل العمليات الخلفية والتحكم فيها على نظام Linux

ولكن لدينا مشكلة. المهمة تعمل في الخلفية ولن تقبل الإدخال. فكيف نوقفه؟ Ctrl+C لا يفعل أي شيء. يمكننا رؤيته عندما نكتبه ولكن مهمة الخلفية لا تتلقى ضغطات المفاتيح هذه، لذا تستمر في تنفيذ الأمر بمرح.

7-5 كيفية تشغيل العمليات الخلفية والتحكم فيها على نظام Linux

في الواقع، نحن الآن في وضع مختلط غريب. يمكننا الكتابة في النافذة الطرفية ولكن ما نكتبه يتم مسحه بسرعة من خلال إخراج التمرير من أمر ping. أي شيء نكتبه يصبح ساري المفعول في المقدمة.

لإيقاف مهمتنا في الخلفية، نحتاج إلى وضعها في المقدمة ثم إيقافها.

الأمر fg

سيجلب الأمر fg مهمة الخلفية إلى المقدمة. تمامًا مثل الأمر bg، يمكن استخدامه مع أو بدون رقم المهمة. استخدامه مع رقم وظيفي يعني أنه سيعمل على وظيفة محددة. إذا تم استخدامه بدون رقم مهمة، فسيتم استخدام الأمر الأخير الذي تم إرساله إلى الخلفية.

اقرأ أيضا:  كيفية تحقيق أقصى أداء لوحدة معالجة الرسومات على Linux بدون تعقيدات

إذا كتبنا fg، فسيتم عرض أمر ping الخاص بنا في المقدمة. يتم خلط الأحرف التي نكتبها مع مخرجات الأمر ping، ولكن يتم تشغيلها بواسطة الصدفة كما لو تم إدخالها في سطر الأوامر كالمعتاد. وفي الواقع، من وجهة نظر قذيفة باش، هذا هو بالضبط ما حدث.

fg

8-6 كيفية تشغيل العمليات الخلفية والتحكم فيها على نظام Linux

والآن بعد أن أصبح الأمر ping قيد التشغيل في المقدمة مرة أخرى، يمكننا استخدام Ctrl+C لإيقافه.

Ctrl+C

9-4 كيفية تشغيل العمليات الخلفية والتحكم فيها على نظام Linux

نحن بحاجة إلى إرسال الإشارات الصحيحة

لم يكن ذلك جميلًا تمامًا. من الواضح أن تشغيل العملية في الخلفية يعمل بشكل أفضل عندما لا تنتج العملية مخرجات ولا تتطلب إدخالاً.

ولكن، سواء كان فوضويًا أم لا، فإن مثالنا قد أنجز ما يلي:

  • وضع العملية في الخلفية.
  • استعادة العملية إلى حالة التشغيل في الخلفية.
  • إعادة العملية إلى المقدمة.
  • إنهاء العملية.

عند استخدام Ctrl+C وCtrl+Z، فإنك ترسل إشارات إلى العملية. هذه طرق مختصرة لاستخدام أمر القتل. هناك 64 إشارة مختلفة يمكن إرسالها للقتل. استخدم kill -l في سطر الأوامر لإدراجها. القتل ليس المصدر الوحيد لهذه الإشارات. يتم رفع بعضها تلقائيًا من خلال عمليات أخرى داخل النظام

وهنا بعض من تلك شائعة الاستخدام.

  • SIGHUP: الإشارة 1. يتم إرسالها تلقائيًا إلى العملية عندما تكون المحطة التي تعمل فيها مغلقة.
  • SIGINT: الإشارة 2. تم إرسالها إلى عملية قمت بالضغط على Ctrl+C. تمت مقاطعة العملية وطلب منها الإنهاء.
  • SIGQUIT: الإشارة 3. يتم إرسالها إلى العملية إذا أرسل المستخدم إشارة إنهاء Ctrl+D.
  • SIGKILL: الإشارة 9. يتم إيقاف العملية على الفور ولن تحاول إغلاقها بشكل نظيف. العملية لا تسير بأمان.
  • SIGTERM: الإشارة 15. هذه هي الإشارة الافتراضية التي يتم إرسالها عن طريق القتل. إنها إشارة إنهاء البرنامج القياسية.
  • SIGTSTP: الإشارة 20. يتم إرسالها إلى العملية عند استخدام Ctrl+Z. فإنه يوقف العملية ويضعها في الخلفية.

يجب علينا استخدام أمر القتل لإصدار الإشارات التي لا تحتوي على مجموعات مفاتيح مخصصة لها.

مزيد من التحكم في الوظيفة

يتم وضع العملية التي تم نقلها إلى الخلفية باستخدام Ctrl+Z في حالة التوقف. يتعين علينا استخدام الأمر bg لبدء تشغيله مرة أخرى. إن إطلاق برنامج كعملية خلفية هو أمر بسيط. إلحاق علامة العطف & بنهاية سطر الأوامر.

على الرغم من أنه من الأفضل عدم كتابة العمليات الخلفية في النافذة الطرفية، إلا أننا سنستخدم الأمثلة التي تفعل ذلك. نحن بحاجة إلى شيء ما في لقطات الشاشة التي يمكننا الرجوع إليها. سيبدأ هذا الأمر حلقة لا نهاية لها كعملية خلفية:

احيانا صحيح؛ افعل صدى “عملية حلقة Geek” ؛ النوم 3؛ منتهي &

10-4 كيفية تشغيل العمليات الخلفية والتحكم فيها على نظام Linux

يتم إخبارنا برقم الوظيفة ومعرف العملية الخاص بالعملية. رقم مهمتنا هو 1، ومعرف العملية هو 1979. يمكننا استخدام هذه المعرفات للتحكم في العملية.

يبدأ ظهور مخرجات الحلقة التي لا نهاية لها في النافذة الطرفية. كما كان من قبل، يمكننا استخدام سطر الأوامر ولكن أي أوامر نصدرها تتخللها مخرجات عملية الحلقة.

ls

11-4 كيفية تشغيل العمليات الخلفية والتحكم فيها على نظام Linux

لإيقاف عمليتنا، يمكننا استخدام الوظائف لتذكير أنفسنا برقم الوظيفة، ثم استخدام القتل.

اقرأ أيضا:  كيفية تمكين عمليات تسجيل الدخول عبر SSH بدون كلمة مرور على نظام Linux

تشير الوظائف إلى أن عمليتنا هي الوظيفة رقم 1. لاستخدام هذا الرقم مع القتل، يجب أن نسبقه بعلامة النسبة المئوية %.

jobs
kill %1

12-5 كيفية تشغيل العمليات الخلفية والتحكم فيها على نظام Linux

يرسل Kill إشارة SIGTERM، الإشارة رقم 15، إلى العملية ويتم إنهاؤها. عند الضغط على مفتاح Enter بعد ذلك، تظهر حالة المهمة. يسرد العملية كـ “منتهية”. إذا لم تستجب العملية لأمر القتل، فيمكنك رفع مستوى الأمر. استخدم القتل مع SIGKILL، الإشارة رقم 9. فقط ضع الرقم 9 بين أمر القتل ورقم المهمة.

kill 9 %1

الأشياء التي قمنا بتغطيتها

  • Ctrl+C: يرسل SIGINT، الإشارة 2، إلى العملية — إذا كانت تقبل الإدخال — ويطلب منها الإنهاء.
  • Ctrl+D: يرسل SISQUIT، الإشارة 3، إلى العملية — إذا كانت تقبل الإدخال — ويطلب منها إنهاء العملية.
  • Ctrl+Z: يرسل SIGSTP، الإشارة رقم 20، إلى العملية ويطلب منها التوقف (التعليق) وتصبح عملية في الخلفية.
  • الوظائف: يسرد وظائف الخلفية ويعرض رقم وظيفتها.
  • bg job_number: إعادة تشغيل عملية الخلفية. إذا لم تقم بتوفير رقم الوظيفة، فسيتم استخدام العملية الأخيرة التي تم تحويلها إلى مهمة في الخلفية.
  • fg job_number: إحضار عملية الخلفية إلى المقدمة وإعادة تشغيلها. إذا لم تقم بتوفير رقم الوظيفة، فسيتم استخدام العملية الأخيرة التي تم تحويلها إلى مهمة في الخلفية.
  • سطر الأوامر &: تؤدي إضافة علامة الضم & إلى نهاية سطر الأوامر إلى تنفيذ هذا الأمر كمهمة خلفية قيد التشغيل.
  • kill %job_number: يرسل SIGTERM، الإشارة رقم 15، إلى العملية لإنهائها.
  • kill 9%job_number: يرسل SIGKILL، الإشارة 9، إلى العملية وينهيها فجأة.

 

Linux Commands
Files tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm · scp · gzip · chattr · cut · find · umask · wc · tr
Processes alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg · pidof · nohup · pmap
Networking netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld

زر الذهاب إلى الأعلى