هل لديك خمس علامات تبويب مفتوحة على الأقل في متصفحك، تبحث عن حل لمشكلة Linux واجهتها؟
هذا السلوك ليس حكراً عليك أو على البشر عموماً. الأجهزة أيضاً تُنفّذ مهام متعددة في آنٍ واحد. وتماماً كما تفعل، فإن Linux يُشغّل عدة عمليات في الوقت ذاته. سواء كنت مطوراً يستخدم Linux باحترافية، أو مستخدماً عادياً يعمل به في مهامه اليومية، فمن الضروري أن تفهم هذه العمليات المتوازية لتحتفظ بالتحكم الكامل في نظامك. إدارة العمليات والتحكم في النظام ركيزتان أساسيتان لتشغيل أي نظام Linux.
لإدارة العمليات الجارية على النظام بكفاءة، ومتابعة ما يحدث في الوقت الفعلي، والاطلاع على العمليات التي تعمل في الخلفية، والتحكم في موارد النظام، تحتاج إلى معرفة تقنية بإدارة العمليات. الأمر ps aux أمر قوي يؤدي دوراً محورياً في إدارة العمليات والتحكم في النظام. في هذا المقال، نستعرض الأمر ps aux واستخداماته، ونشرح أساسيات آلية عمل عمليات Linux.
فهم إدارة العمليات في Linux
عند العمل مع Linux، تتمّ معظم تفاعلاتنا مع النظام عبر الأوامر. في Linux، العملية هي تنفيذ أمر معين. وتشمل إدارة عمليات Linux التحكم في العمليات التي أطلقها أمر ما، إذ يمكنك إيقاف عملية، أو تشغيل عملية جديدة، أو استئناف عملية تم إيقافها. كما يمكنك التعامل مع الأوامر قيد التنفيذ.
تنقسم عمليات Linux إلى نوعين:
- العمليات الأمامية
- العمليات الخلفية
العمليات الأمامية في Linux
العملية الأمامية هي عملية تُنفَّذ بصورة نشطة وتستلزم عادةً تفاعلاً مستمراً وفورياً مع المستخدم. وعندما تكون عملية أمامية قيد التشغيل، تتوقف العمليات الأخرى عن التنفيذ، مما يعني أنك لا تستطيع تشغيل أي أوامر أخرى. تتلقى العملية الأمامية المدخلات من لوحة المفاتيح عبر ما يُعرف بالمدخل القياسي stdin. ولتوضيح المصطلحات، فإن stdin وstdout هما تدفقان للبيانات في Linux إلى جانب stderr، وهي الطريقة التي يتفاعل بها المستخدم مع العملية ويُزوّدها بالبيانات. أما المخرج القياسي stdout فهو ما تُنتجه العملية بناءً على وظيفتها والمدخلات المقدَّمة إليها. العمليات الأمامية هي وضع التنفيذ الافتراضي في Linux.
العمليات الخلفية في Linux
العمليات الخلفية هي نقيض العمليات الأمامية تماماً؛ فهي لا تستلزم تفاعل المستخدم، ولا تستأثر بالطرفية بالكامل، مما يُتيح تشغيل عمليات أخرى في الوقت ذاته. كذلك تختلف طبيعة المدخلات والمخرجات في العمليات الخلفية؛ إذ لا تأخذ stdin في الغالب، غير أن نتائجها يمكن عرضها بوصفها stdout. ويتزامن عرض مخرجات العمليات الخلفية مع مخرجات العمليات الأمامية الأخرى، فتستطيع متابعة تقدم العملية الخلفية أو نتائجها دون مقاطعة أي إجراءات أخرى.
نظراً لاعتماد تنفيذ طيف واسع من المهام في Linux على سطر الأوامر، قد تكون العمليات الأمامية عائقاً، في حين أن تشغيل العمليات في الخلفية يُحرّر الطرفية لتنفيذ مهام أخرى. لذا، من المنطقي نقل مهمة أمامية إلى الخلفية. ولتتمكن من إرسال عملية إلى الخلفية عليك أولاً إيقاف تنفيذها في المقدمة، وذلك بالضغط على CTRL+Z. ثم بكتابة الأمر bg، ستُستأنف العملية الموقوفة في الخلفية. أما الأمر fg فيعكس ذلك ويُعيد العملية إلى المقدمة.
حالة العملية: البنية والأوامر وتفسير المخرجات
تستلزم إدارة العمليات الفعّالة في Linux فهم حالات العمليات التي يمكن رصدها عبر الأمر ps aux. لكن قبل التعمق في هذا الأمر، لنتعرف على حالات العمليات المختلفة. رغم تعدد أنواع العمليات وحالاتها، إليك جدولاً بأكثرها شيوعاً:
| حالة العملية | الوصف | |
| قيد التشغيل (R) | العملية تعمل حالياً وتستهلك موارد CPU. | |
| في وضع الانتظار | قابلة للمقاطعة (S) | العملية في انتظار مدخل معين أو حدث لاستئناف التشغيل، وهي لا تستهلك موارد CPU حالياً. عند توفر الموارد أو ورود إشارة، تستأنف العملية عملها. |
| غير قابلة للمقاطعة (D) | على غرار العملية التي تكون في حالة نوم قابل للمقاطعة، فإن العملية في حالة النوم غير القابل للمقاطعة لا تستهلك موارد CPU. الفرق الوحيد أنها لا تستجيب للإشارات، ولا تستأنف عملها إلا عند توفر الموارد. | |
| متوقفة (T) | أدى إدخال المستخدم أو حدث معين إلى إيقاف العملية مؤقتاً. العملية في هذه الحالة لا تستهلك أي موارد من CPU. | |
| منتهية (X) | انتهت العملية ولم تعد موجودة. | |
الفهم الجيد لحالات العمليات هذه أمر أساسي لإدارة أنظمة Linux واستكشاف أخطائها بفعالية. فيما يلي استعراض للصياغة والأوامر المستخدمة للحصول على حالة العمليات في Linux، وكيفية تفسير المخرجات.
الصياغة والأوامر للحصول على حالة العمليات
يمكنك الحصول على حالة العمليات في Linux باستخدام الصياغة الأساسية لأمر ps:
ps [process name]
ثمة خيارات أخرى يمكن استخدامها مع أمر ps:
إلى: يعرض هذا الخيار قائمة شاملة بجميع العمليات الجارية على النظام، وتشمل المعلومات المقدمة: معرّفات العمليات (PIDs)، ومعرّفات العمليات الأصلية (PPIDs)، واستخدام CPU والذاكرة، وحالات العمليات. مخرجات الأمر ps aux أكثر تنظيماً وقابلية للقراءة، وتحتوي على معلومات أكثر فائدة مقارنةً بأمر ps الأساسي.
ef: يعرض هذا الخيار قائمة بتنسيق كامل للعمليات مع تفاصيل إضافية، بما فيها التسلسل الهرمي للعمليات على شكل بنية شجرية.
l: يعرض هذا الخيار قائمة بتنسيق مطوّل تتضمن معلومات أكثر تفصيلاً عن العمليات.
فهم المخرجات
عند تنفيذ أمر ps مع الخيارات المطلوبة، تظهر مخرجات تمثّل العمليات الجارية حالياً على نظامك. تتكون هذه المخرجات من أعمدة تعرض خصائص مختلفة للعمليات، منها: معرّف العملية (PID)، ومعرّف العملية الأصلية (PPID)، واستخدام CPU والذاكرة، وحالة العملية، ونوع الطرفية، واسم الأمر.
فيما يلي شرح لما يعنيه كل عمود من هذه الأعمدة:
معرّف العملية: يعرض هذا العمود المعرّف الفريد للعملية.
TTY: يعرض هذا العمود نوع الطرفية التي سجّل المستخدم دخوله عبرها.
الوقت: يشير هذا العمود إلى مقدار CPU الذي استهلكته العملية بالدقائق والثواني.
CMD: يمثّل هذا العمود اسم الأمر الذي أطلق هذه العملية.
تحليل المعلومات التي يوفرها الأمر ps يمنحك فهماً أعمق لسلوك جهازك Linux.
تقنيات متقدمة في الأمر ps لإدارة العمليات
لنستعرض بعض الميزات المتقدمة للأمر ps وكيفية الاستفادة منها بفاعلية:
١. ترتيب العمليات
يمكن استخدام الأمر ps aux لترتيب النتائج بحسب أعمدة مختلفة. على سبيل المثال، يمكنك ترتيب العمليات حسب معرّف العملية أو استخدام CPU لعرضها بالترتيب الذي تريده.
إليك مثالاً على ترتيب العمليات حسب معرّف العملية باستخدام ps aux:
ps aux –-sort pid
يُستخدم الأمر head للحصول على أول خمسة أسطر من الناتج فقط.

٢. عرض شجرة العمليات
إن أردت رؤية العلاقة بين العمليات الأصلية والفرعية بوضوح، يمكنك استخدام الأمر ps مع خيار forest.
ps -aux --forest

لعرض العلاقة بين العمليات على شكل شجرة، يمكنك أيضاً استخدام الأمر pstree. ينتج هذا الأمر مخرجاً أكثر وضوحاً ويُجسّد التسلسل الهرمي بين العمليات بدقة. لاستخدامه، اكتب الأمر التالي:
pstree [pid or username]
بتمرير PID إلى هذا الأمر، فإنك تحدد تلك العملية بوصفها جذر الشجرة.
٣. تصفية العمليات
تخيّل أنك تريد العمل مع مجموعة محددة من العمليات، كأن تعرض جميع عمليات مستخدم بعينه. يمكن تصفية العمليات بحسب خاصية معينة باستخدام الأمر ps. في هذا المثال، صفّينا العمليات بحسب اسم المستخدم.
ps -u [username]

يستطيع الأمر ps aux grep تصفية العمليات بحسب أي نمط أو كلمة مفتاحية تمرّرها إليه. انظر إلى الكود أدناه كمثال توضيحي:

يعرض هذا الأمر أولاً قائمة بجميع العمليات، ثم يمرّر الناتج إلى الأمر grep لتصفية تلك القائمة الطويلة بحسب معرّف العملية. في الصورة أعلاه، ترى قائمة بجميع العمليات التي يحتوي سجلها على الرقم 15.
للمزيد من المعلومات حول الأمر ps وإمكانياته، يمكنك الرجوع إلى صفحة الدليل الخاصة به. الكود أدناه سيعرض لك تلك الصفحة:
man ps
إدارة أولوية المهام في Linux
لشرح آلية إدارة العمليات في Linux بصورة أوضح، لا بد من التطرق إلى أولوية العمليات وكيفية تغييرها. تخيّل موقفاً تُشغّل فيه عدة عمليات في آنٍ واحد، وأن CPU مثقل بالمهام. للتحكم في الموارد بفاعلية في هذه الحالة، تحتاج إلى تعديل أولوية المهام الجارية. لكل عملية في Linux قيمة أولوية تساعد النواة على ترتيب المهام حسب الأهمية. تتراوح قيم الأولوية بين -20 و19، إذ تمثل 19 أدنى الأولويات و-20 أعلاها. العملية ذات الأولوية الأعلى تحصل على وقت أكبر من CPU مقارنةً بغيرها. يُشار إلى قيم الأولوية عادةً بـ«قيم nice»، وكلما انخفضت قيمة nice، كانت الأولوية أعلى.
يمكنك استخدام الأمرين nice و renice لتوزيع موارد النظام بكفاءة.
لكن قبل تعديل أولوية العمليات، لنستعرض أولاً حالة الاستخدام الأولى للأمر ps.
- عرض الأولوية الحالية لجميع العمليات باستخدام الأمر ps:
يسرد هذا الأمر جميع العمليات مع معرفات العملية (PID) وأسماء الأوامر والأولوية الحالية (قيمة nice):
ps -eo pid,cmd,nice

- بدء عملية بأولوية عالية افتراضية باستخدام أمر nice:
يمكنك بدء عملية بالأولوية التي تختارها باستخدام هذا الأمر:
nice -n [priority] [command]
استبدل [priority] بالقيمة السالبة التي تمثل مستوى الأولوية، و[command] بالأمر الذي تريد تنفيذه.
إليك مثالاً:

- تغيير أولوية عملية قيد التشغيل:
renice -n [priority] -p [PID]
استبدل [PID] بمعرف العملية التي تريد التعامل معها.
إذا كنت تبحث عن جهاز Linux قوي لتنفيذ جميع أنواع المهام، فإن Linux VPS هو الخيار الأمثل لك. Cloudzy توفر Cloudzy خططاً متعددة لـ Linux VPS مع التوزيعة التي تختارها مثبتةً مسبقاً. بفضل مزايا عديدة كالدعم على مدار الساعة طوال أيام الأسبوع، وسياسة استرداد المبالغ خلال 30 يوماً، وضمان وقت تشغيل بنسبة 99.95%، تمكنت Cloudzy من إبقاء الأسعار منخفضة. تبدأ أسعار Linux VPS لدينا من 4.95 دولار فقط في الشهر.
احصل على VPS اقتصادي أو متميز يعمل بنظام Linux لاستضافة موقعك الإلكتروني أو سطح المكتب البعيد، بأفضل الأسعار المتاحة. يعمل VPS على Linux KVM لكفاءة أعلى، ويستند إلى أجهزة قوية مع تخزين NVMe SSD لسرعة أكبر.
اقرأ المزيدخلاصة
خلاصة القول، إتقان إدارة العمليات والتحكم في النظام أمر ضروري لمسؤولي الأنظمة ومحبي Linux الراغبين في التعمق أكثر، والمستخدمين العاديين على حدٍّ سواء. إن فهم إمكانيات أمر ps ووظائفه يُسهّل عليك تعلم إدارة العمليات، ولهذا تناول هذا المقال أبرز حالات استخدام أمر ps إلى جانب تقديم مقدمة لعمليات Linux.
الأسئلة الشائعة
ما هو أمر ps aux في Linux؟
أمر ps aux هو أحد أكثر الأوامر شيوعاً في Linux للحصول على معلومات حول العمليات الجارية. يوفر قائمة شاملة بالعمليات بتنسيق سهل القراءة، تشمل معرفات العمليات (PIDs) واستخدام CPU والذاكرة وحالات التنفيذ وتفاصيل أساسية أخرى.
ما نوعا العمليات في Linux؟
العمليات الأمامية والعمليات الخلفية. تشغل العمليات الأمامية الطرفية أثناء تشغيلها ولا تسمح بتنفيذ عمليات أخرى، بينما تعمل العمليات الخلفية في الخلفية دون أن تستأثر بالطرفية بالكامل.
كيف يمكنني عرض قائمة العمليات الجارية على نظام Linux؟
يمكن الاطلاع على قائمة العمليات الجارية على نظام Linux باستخدام أوامر مثل ps أو top أو htop. على سبيل المثال، يوفر أمر ps aux في Linux معلومات تفصيلية حول جميع العمليات الجارية.