إرسال عملية إلى الخلفية لينكس

Send Process Background Linux



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

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







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



ما هي العملية؟

اسمح لي أن أبدأ من المستوى الأساسي: ما هي العملية؟



في لينكس ، العملية هي مثيل لبرنامج. عادةً ما يعني هذا أن أي أمر أو ملف تنفيذي في قذيفة هو عملية.





هناك نوعان رئيسيان من العمليات:

  • عمليات المقدمة
  • عمليات الخلفية

عمليات المقدمة هي في الأساس تطبيقات نموذجية نطلقها ونتفاعل معها. مثال على ذلك هو مدير ملفات نوتيلوس في جنوم. في معظم الحالات ، يمكننا بدء العمليات الأمامية من shell أو بيئة سطح المكتب.



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

كيفية تشغيل عملية في الخلفية

لنفترض أن لدينا عملية تشغل جلسة shell أثناء التشغيل وتمنعنا من تنفيذ الأوامر حتى الخروج منها.

على سبيل المثال ، إذا قمنا بتشغيل متصفح Firefox في shell ، فسيشغل الجلسة حتى إنهاء العملية.

$ثعلب النار


كما ترى ، طالما أن Firefox قيد التشغيل ، فإن موجه shell غير متاح ، ولا يمكننا تنفيذ أي أوامر أخرى.

لحل هذا ، يمكننا القيام بذلك بطريقتين:

1: استخدام علامة العطف (&)

الطريقة الأولى هي استخدام علامة العطف وعلامة. هذا يخبر shell بتشغيل أي أمر يسبق علامة العطف في الخلفية.

مثال:

ثعلب النار&

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

كما أنه يعطي معرّفين عدديين. الأول المضمن بين قوسين مربعين هو معرف الوظيفة ، بينما التالي هو معرف العملية.

2: باستخدام CTRL + Z ، أمر bg.

الطريقة التالية التي يمكنك استخدامها لوضع عملية في الخلفية هي استخدام الاختصار CTRL + Z. هذا يمنع العملية من حظر الغلاف. يمكنك بعد ذلك استخدام الأمر bg لدفعه إلى الخلفية.

على سبيل المثال ، ابدأ بتشغيل Firefox على النحو التالي:

$ثعلب النار

أثناء تشغيل العملية ، اضغط على CTRL + Z. يؤدي ذلك إلى إرجاع موجه الأوامر. أخيرًا ، أدخل الأمر bg لدفع العملية في الخلفية.

كيفية إظهار العمليات في الخلفية

لعرض العمليات وإدارتها في الخلفية ، استخدم الأمر jobs في shell. سيُظهر ذلك وظائف الخلفية في الجلسة الطرفية الحالية.

على سبيل المثال:

$وظائف

مثال على إخراج وظائف الخلفية:

لإحضار عملية تعمل في الخلفية إلى المقدمة ، استخدم الأمر fg متبوعًا بمعرف الوظيفة.

على سبيل المثال ، لإحضار وظيفة Firefox في المقدمة ، نستخدم الأمر:

$fg ٪1

لوضع الخلفية مرة أخرى ، اضغط على CTRL + Z متبوعًا بأمر bg.

كيفية جعل العملية مستمرة بعد وفاة شل

عندما تقوم بتشغيل عمليات في الخلفية ، وتموت جلسة shell الخاصة بك ، تنتهي جميع العمليات المرتبطة بها ، مما قد يمثل مشكلة ، خاصة إذا كانت جلسة SSH.

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

ومع ذلك ، إذا قمت بتشغيل جلسة shell بدون مُضاعِف إرسال ، يمكنك استخدام الأمر nohup.

أمر nohup محصن ضد انقطاع الاتصال ويمكن أن يتجاهل إشارة SIGHUP المرسلة إلى العملية.

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

على سبيل المثال ، لتشغيل Firefox باستخدام nohup ، استخدم الأمر:

nohupثعلب النار&

سيؤدي هذا إلى تشغيل العملية في الخلفية مع استمرار إنهاء shell.

يمكنك تشغيل جلسة طرفية جديدة وعرض وظائف الخلفية. سترى العملية لا تزال قيد التشغيل في الخلفية.

استنتاج

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