الخميس، 1 أكتوبر 2020

مجموعات العمليات وجلسات العمل والتحكم في الوظائف

 

مجموعات العمليات وجلسات العمل والتحكم في الوظائف



في هذا الفصل ، سوف نتعرف على مجموعات العمليات والجلسات والتحكم في الوظائف.

مجموعة العمليات - مجموعة العمليات هي مجموعة من عملية واحدة أو أكثر. تتكون مجموعة العمليات من عملية واحدة أو أكثر تشترك في نفس معرف مجموعة العملية (PGID). معرف مجموعة العملية (PGID) من نفس النوع (pid_t) مثل معرف العملية. تحتوي مجموعة العمليات على قائد مجموعة العملية ، وهي العملية التي تنشئ المجموعة والتي يصبح معرف العملية الخاص بها معرف مجموعة العملية للمجموعة.

الجلسات - هي عبارة عن مجموعة من مجموعات العمليات المختلفة.

التحكم في الوظيفة - يسمح هذا لمستخدم shell بتنفيذ أوامر (أو مهام) متعددة في وقت واحد ، واحد في المقدمة وكل ما تبقى في الخلفية. من الممكن أيضًا نقل الوظائف من المقدمة إلى الخلفية والعكس صحيح.

دعنا نفهم ذلك بمساعدة أمثلة البرنامج / البرامج التي تستخدم shell (BASH).

  • برنامج شل النصي (في BASH) لتنفيذ الأوامر الأساسية (التاريخ ، وصدى الصوت ، والسكون ، و cal) المسماة basic_commands.sh

  • برنامج شل النصي (في BASH) لتنفيذ الأوامر الأساسية (ps ، echo)

#!/bin/bash
#basic_commands.sh

date
echo "Now sleeping for 250 seconds, so that testing job control functionality is smooth"
sleep 250
cal

#!/bin/bash
#process_status.sh

ps
echo "Now sleeping for 200 seconds, so that testing job control functionality is smooth"
sleep 200
ps

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

لإيقاف عملية التشغيل الحالية ، تحتاج إلى إدخال CTRL + Z. يمنحك هذا رقم الوظيفة. يمكن استئناف المهمة إما في المقدمة أو في الخلفية. إذا لزم الأمر ، لاستئناف المهمة في المقدمة ، استخدم الأمر "fg". إذا لزم الأمر ، لاستئناف المهمة في الخلفية ، استخدم الأمر "bg". باستخدام هذا ، سيتم تشغيل آخر عملية تم إيقافها فقط. ماذا لو كنت تريد البدء بخلاف آخر عملية تم إيقافها؟ ما عليك سوى استخدام رقم المهمة بعد fg أو bg (على سبيل المثال ، bg٪ 2 أو bg٪ 3 ، إلخ). إذا كانت الوظيفة قيد التشغيل في الخلفية ، يمكنك تشغيل أي مهام أخرى في المقدمة. للحصول على قائمة الوظائف ، استخدم الأمر ، الوظائف. من الممكن أيضًا إنهاء العملية إما باستخدام CTRL + C أو أمر القتل. يمكنك تمرير رقم الوظيفة أثناء استخدام أمر القتل.

تحقق من الإخراج التالي الذي يوضح إيقاف الوظائف ، ونقل الوظائف من المقدمة إلى الخلفية والعكس صحيح ، وإنهاء الوظائف ، إلخ.

chmod u+x basic_commands.sh
chmod u+x process_status.sh

./basic_commands.sh
Wed Jul 5 18:30:27 IST 2017
Now sleeping for 250 seconds, so that testing job control functionality is smooth
^Z
[1]+ Stopped ./basic_commands.sh
./process_status.sh
PID   TTY   TIME     CMD
2295  pts/1 00:00:00 bash
4222  pts/1 00:00:00 basic_commands.
4224  pts/1 00:00:00 sleep
4225  pts/1 00:00:00 process_status.
4226  pts/1 00:00:00 ps
Now sleeping for 200 seconds, so that testing job control functionality is smooth
^Z
[2]+ Stopped      ./process_status.sh
jobs
[1]- Stopped      ./basic_commands.sh
[2]+ Stopped      ./process_status.sh
fg
./process_status.sh
^Z
[2]+ Stopped      ./process_status.sh
fg %2
./process_status.sh
^Z
[2]+ Stopped      ./process_status.sh
fg %1
./basic_commands.sh
^Z
[1]+ Stopped      ./basic_commands.sh

jobs
[1]+ Stopped      ./basic_commands.sh
[2]- Stopped      ./process_status.sh

bg %2
[2]- ./process_status.sh &
fg
./basic_commands.sh
^Z
[1]+ Stopped      ./basic_commands.sh
jobs
[1]+ Stopped      ./basic_commands.sh
[2]- Running      ./process_status.sh &
fg %2
./process_status.sh
^Z
[2]+ Stopped      ./process_status.sh
jobs
[1]- Stopped      ./basic_commands.sh
[2]+ Stopped      ./process_status.sh
kill %1 %2
[1]- Stopped      ./basic_commands.sh
[2]+ Stopped      ./process_status.sh

[1]- Terminated   ./basic_commands.sh
[2]+ Terminated   ./process_status

التسميات: