المحتوى عن 'عمليات'.



مزيد من الخيارات

  • ابحث بالكلمات المفتاحية

    أضف وسومًا وافصل بينها بفواصل ","
  • ابحث باسم الكاتب

نوع المُحتوى


التصنيفات

  • التخطيط وسير العمل
  • التمويل
  • فريق العمل
  • دراسة حالات
  • نصائح وإرشادات
  • التعامل مع العملاء
  • التعهيد الخارجي
  • التجارة الإلكترونية
  • الإدارة والقيادة
  • مقالات ريادة أعمال عامة

التصنيفات

  • PHP
    • Laravel
    • ووردبريس
  • جافاسكريبت
    • Node.js
    • jQuery
    • AngularJS
    • Cordova
  • HTML
    • HTML5
  • CSS
  • SQL
  • سي شارب #C
    • منصة Xamarin
  • بايثون
    • Flask
    • Django
  • لغة روبي
    • Sass
    • إطار عمل Bootstrap
    • إطار العمل Ruby on Rails
  • لغة Go
  • لغة جافا
  • لغة Kotlin
  • برمجة أندرويد
  • لغة Swift
  • لغة R
  • لغة TypeScript
  • ASP.NET
    • ASP.NET Core
  • سير العمل
    • Git
  • صناعة الألعاب
    • Unity3D
  • سهولة الوصول
  • مقالات برمجة عامة

التصنيفات

  • تجربة المستخدم
  • الرسوميات
    • إنكسكيب
    • أدوبي إليستريتور
    • كوريل درو
  • التصميم الجرافيكي
    • أدوبي فوتوشوب
    • أدوبي إن ديزاين
    • جيمب
  • التصميم ثلاثي الأبعاد
    • 3Ds Max
    • Blender
  • نصائح وإرشادات
  • مقالات تصميم عامة

التصنيفات

  • خواديم
    • الويب HTTP
    • قواعد البيانات
    • البريد الإلكتروني
    • DNS
    • Samba
  • الحوسبة السّحابية
    • Docker
  • إدارة الإعدادات والنّشر
    • Chef
    • Puppet
    • Ansible
  • لينكس
  • FreeBSD
  • حماية
    • الجدران النارية
    • VPN
    • SSH
  • مقالات DevOps عامة

التصنيفات

  • التسويق بالأداء
    • أدوات تحليل الزوار
  • تهيئة محركات البحث SEO
  • الشبكات الاجتماعية
  • التسويق بالبريد الالكتروني
  • التسويق الضمني
  • التسويق بالرسائل النصية القصيرة
  • استسراع النمو
  • المبيعات
  • تجارب ونصائح

التصنيفات

  • إدارة مالية
  • الإنتاجية
  • تجارب
  • مشاريع جانبية
  • التعامل مع العملاء
  • الحفاظ على الصحة
  • التسويق الذاتي
  • مقالات عمل حر عامة

التصنيفات

  • الإنتاجية وسير العمل
    • مايكروسوفت أوفيس
    • ليبر أوفيس
    • جوجل درايف
    • شيربوينت
    • Evernote
    • Trello
  • تطبيقات الويب
    • ووردبريس
    • ماجنتو
  • أندرويد
  • iOS
  • macOS
  • ويندوز

التصنيفات

  • شهادات سيسكو
    • CCNA
  • شهادات مايكروسوفت
  • شهادات Amazon Web Services
  • شهادات ريدهات
    • RHCSA
  • شهادات CompTIA
  • مقالات عامة

أسئلة وأجوبة

  • الأقسام
    • أسئلة ريادة الأعمال
    • أسئلة العمل الحر
    • أسئلة التسويق والمبيعات
    • أسئلة البرمجة
    • أسئلة التصميم
    • أسئلة DevOps
    • أسئلة البرامج والتطبيقات
    • أسئلة الشهادات المتخصصة

التصنيفات

  • ريادة الأعمال
  • العمل الحر
  • التسويق والمبيعات
  • البرمجة
  • التصميم
  • DevOps

تمّ العثور على 3 نتائج

  1. في كتابه The E-Myth Revisited، يشجّع Michael Gerber روّاد الأعمال على تطوير أنظمة العمل، ويصل إلى حدّ القول بأنّنا يجب أن نبني شركاتها كما لو كنّا نهدف إلى بناء مؤسسات امتياز. تحظى فكرة العمليات والأنظِمة بشعبية، وتلاقي استحسانًا خاصًا من قبل بعض الأشخاص مثل Tim Ferris في كتابه The Four Hour Workweek. ولكنّ هذه الأنْظَمَة الكاملة للشركات تواجه رفضًا مُستحقًّا من العديد من العاملين في المجال الإبداعي. لأنّ ابتكار شيء جديد لا يمكن كتابته كسلسة من الخطوات. وبذلك يكون للفرد المبدع، والفنّان أهمية كبيرة. فأدوارهم لا يمكن أن تُشغل من قبل مجرّد شخص قادر على اتباع التعليمات. في إحدى حلقات البودكاست Startups for the Rest of Us، دار النقاش حول الناس مقابل العمليات. يشير هذا إلى أنّ بمقدورك إما تقدير قيمة الناس وإبداعهم، أو بإمكانك تطوير شركة مبنية على العمليات، حيث تستطيع السماح لأي شخص بالانضمام لمتابعة المهام. هناك حلٌّ وسطٌ باعتقادي. إذ يمكن لتوثيق العمليات للمهام التي تستفيد من النُهُج المنظمة أن يتيح المزيد من المرونة عند معالجة العمل الإبداعي. ماذا نقصد بالعمليات؟ عندما نحوّل مهمّة ما إلى عملية، فإننا نحدّد كلّ الخطوات التي نمر بها لتنفيذ تلك المهمة ونحوّلها إلى قائمة تدقيق checklist. فيما يلي عملية تسوية المعاملات الخاصة بي في Xero: انظر إلى المعاملات المصرفية الواردة. ابحث عن إيصال أو فاتورة لهذه المعاملة. أضيف التفاصيل من الإيصال إلى Xero. إذا تم فرض الضريبة، أتحقق فيما إذا قمت بإدخال المعدّل الصحيح، وأنّه موضّح بالتفصيل على الإيصال. أرفع نسخة PDF من الإيصال إلى Xero، كما أقوم بخزنه على Dropbox مع تسميته بإضافة مرجع لاسم الحساب الذي وصَل منه. أضع علامة "تمت التسوية" على المعاملة. هذه العملية ليست عملًا إبداعيًا، بل هي مهمّة روتينية. ولاتباع هذه الممارسة عند تسوية المعاملات البنكية عددٌ من الفوائد: أعلم أنّ أيّة معاملة تمت تسويتها سيكون لها فاتورة أو إيصال. فإذا كنتُ بحاجة إلى استخراج ذلك الدليل، أعلمُ أين قمتُ بتخزينها، لأنّ العملية تمنع الأخطاء التي يمكن أن أتسبب بها بنسيان ما يجب القيام به هنا. تبسيط العمل وجعله أكثر سلاسة. فلا حاجة لي إلى بذل الطاقة لتذكّر ما يجب فعله. تُسهّل عليّ التفويض الخارجي للمهام. فإذا قمتُ بتوظيف محاسب جديد، بإمكاني أن أشرح له هذه العملية وأن أكون قادرة على رؤيته أثناء اتباع خطواتها. بإنشاء عملية لمهمّة ما، بإمكاني التوقّف عن التفكير بها. أنّا لا أفضّل العمل على تسوية الحسابات المصرفية، لكن عندما يتوجّب عليّ القيام بها، بإمكاني أن أحضّر فنجانًا من القهوة وأبدأ بتنفيذ كل خطوة من قائمة التدقيق دون أن أهدر الكثير من الوقت في التفكير بها. وعادةً ما أضيف هذه المهام المملة، والهامّة في نفس الوقت، إلى Context خاص في OmniFocus والذي يحتوي على المهام التي يمكنني العمل عليها خلال الأيام التي أواجه فيها صعوبة التركيز لسبب ما. كان هذا مثالًا بسيطًا جدًا على العمليات، لكن يمكن تطبيق الطريقة نفسها على مهام أكثر تعقيدًا في شركتك. على سبيل المثال، ما هي الخطوات التي يجب اتباعها عندما تبدأ مشروعًا مع عميلٍ جديد؟ قد تتضمّن هذه العملية التالي: إنشاء ملف (من قالب) لمعلومات العميل الأساسية، مثل إلى من ترسل الفاتورة، الشروط المتفق عليها، الخ. إرسال العقد إلى العميل لتوقيعه. حفظ العقد الموقّع. إرسال فاتورة أولية. التأكّد من الاتفاق على شروط الدفع. إضافته إلى إحدى أدوات التعاون، مثل Basecamp، أو Slack. الحفظ الآمن لتفاصيل تسجيل الدخول التي تحتاجها لاستضافته. مجددًا، هذا ليس بعملٍ إبداعي، وطريقة القيام به يمكن أن تختلف من عميل إلى آخر. فقد تتبّع هذه القائمة شخصيًا مع أحد العملاء، أو عبر البريد الإلكتروني مع عميل آخر. وبكلتي الطريقتين، تضمن قائمة التدقيق أنّكما متفقان على شروط الدفع. كما تضمن أنّ بحوزتك عقد، وأنّك استلمت مقدمًا كلّ الأصول التي يجب أن يوفرها لك العميل (مما قد يوفّر لك الوقت عندما تحتاج إلى شيء ما والعميل خارج المكتب). يمكن أيضًا لقوائم التدقيق والعمليات أن تسهّل الأعمال التي قد تستصعبها إلى حدّ كبير. فإذا كنت مثلًا تكره التحدّث عن المال مع العملاء الجدد، ستحاول دائمًا تسويف إرسال البريد الإلكتروني الذي يتضمّن السعر التقديري للوظيفة. أمّا إذا استخدمت قوائم التدقيق، فسيكون باستطاعتك التوقف عن التفكير في النتيجة المحتملة للتواصل، والتركيز على تنفيذ الخطوات للوصول إلى تلك المرحلة. تفريغ عقلك للإبداع تكمُن فعّالية العملية في أنّها توفّر الوقت والطاقة للقيام بالأشياء التي قد لا يمكن تقليصها إلى قائمة تدقيق. تريح قوائم المهام عقلك من التفكير فيما يجب القيام به اليوم، ويمكن لتوثيق العمليات أن يؤتي بنفس الثمار. لا حاجة لك بعد الآن إلى تذكّر ما يجب أن يحدث لإنهاء مهمّة معيّنة. وبالرغم من أنّ إنشاء العمليات يُعتبر أحيانًا طريقة للتفويض الخارجي لبعض أعمال شركتك، إلّا أنّه يمكن أن ينفع أيضًا في الشركات التي تتكون من شخص واحد أو شخصين. في حال كنت تسعى إلى توسيع شركتك، يمكن للعمليات السليمة أن تسهّل استقدام المساعدة المؤقتة أو الدائمة. كما يمكن إعطاء قوائم التدقيق المجرّبة والمُختبرة هذه إلى شخص بمقدوره تنفيذ المهام المتكررة، مما يتيح لك المجال للقيام بالمزيد من العمل الإبداعي الممتع. الأهم من ذلك، بإمكانك توفير المزيد من الوقت للقيام بالأعمال التي تحبّها والتي لا يمكن لأحد سواك إنجازها من خلال عدم إهدار الجهد على المهام الرتيبة. تستطيع عندئذ أن تُبعد عنك كلّ أفكار قوائم التدقيق وقوائم المهام، والعمل بالطريقة التي توقِن بأنّها تساعدك على تحقيق أفضل الإنجازات. ترجمة-وبتصرّف-للمقال Creating Process to Free up Time for Creativity لصاحبته: Rachel Andrew حقوق الصورة البارزة محفوظة لـ Freepik
  2. تعرَضنا في دروس سابقة لكيفيّة إدارة الملفات و المستخدمين على RedHat Enterprise Linux؛ نواصل في هذا الدّرس تناول المهامّ الأساسيّة لإدارة خادوم بشرح مبادئ إدارة العمليّات على RedHat Enterprise Linux 7. نبدأ أوّلا بنظرة عامّة على ما يحدُث ابتداءً من اللحظة التي تشغّل فيها زرّ الطاقة على خادوم يعمل على توزيعة RHEL إلى اللحظة التي تظهر فيها شاشة تسجيل الدخول عبر سطر الأوامر. مراحل الإقلاع تنطبق هذه المراحل على توزيعات غنو/لينكس الأخرى مع وجود اختلافات طفيفة. يبدأ اختبار التشغيل الذاتي Power On Self Test بالتحقّق من العتاد Hardware. ينقل اختبار التشغيل الذاتي بعد اكتماله التحكمَ إلى محمِّل الإقلاع الأوّلي First stage boot loader الذي يوجد إما في مقطع الإقلاع على أحد أقراص الجهاز (نظام BIOS)؛ أو في تجزئة Partition منفصلة (نظام UEFI). يمرّر محمّل الإقلاع الأولي التحكّم إلى محمّل الإقلاع الثاني Second stage boot loader الذي يوجد في المجلّد boot/. محمّل الإقلاع الأكثر استخداما هو GRUB (اختصار لـ GRand Unified Boot Loader). يبحث محمّل الإقلاع عن نواة النظام Kernel ونظام ملفات خاصّ يُعرف بـ initramfs يحوي ملفّات وبرامج مهمتها إنجاز الخطوات الضروريّة لتركيب Mount نظام الملفّات الجذر (وهو نظام الملفّات المستخدَم في التجزئة التي يوجد عليها المجلّد root/). تضبط النواة العتاد الموصول بالنظام، ثم بعد تركيب نظام الملفات الجذر تشغّل عمليّة بمعرّف العمليات 1 PID. تجهّز هذه العمليّة بقيّة العمليّات التي من بينها العمليّة المسؤولة عن تسجيل الدخول. تُعرَف العمليّة ذات المعرّف 1 بعمليّة التمهيد Initialization (أو init اختصارا). ملحوظة: يغلب وصف محمّل الإقلاع Boot loader دون تحديد على محمّل الإقلاع الثاني. يمكننا باستخدام الأمر ps عرض لائحة بالعمليّات الحاليّة ذات العمليّة الأم (أي العمليّة التي بدأت تشغيلَ هذه العمليّات) systemd (عمليّة التمهيد في نظام التمهيد SystemD الذي انتقلت إليه أغلب توزيعات لينكس الحديثة): $ ps -o ppid,pid,uname,comm --ppid=1 يمكّننا الخيار o- من تحديد نوعيّة المخرجات التي نرغب في عرضها؛ وهي في هذه الحالة معرّف العمليّة الأمّ ppid، معرّف العمليّة pid، اسم المستخدم الذي شغّل العمليّة uname والأمر comm. يحدّد المعطى الأخير شرطا هو أن يكون معرّف العمليّة الأم يساوي 1 (عمليّة التمهيد). في ما يلي جزء من نتيجةِ تنفيذٍ للأمر: PPID PID USER COMMAND 1 478 root systemd-journal 1 497 root lvmetad 1 513 root systemd-udevd 1 620 root auditd 1 644 root alsactl 1 645 root smartd 1 646 libstor+ lsmd 1 649 root rngd 1 650 root abrtd 1 651 root abrt-watch-log 1 655 root ModemManager 1 656 root systemd-logind 1 657 root irqbalance 1 658 avahi avahi-daemon 1 659 root firewalld 1 662 root accounts-daemon 1 667 root rsyslogd 1 668 root abrt-watch-log 1 673 rtkit rtkit-daemon 1 675 dbus dbus-daemon 1 690 root gssproxy 1 752 root VBoxService 1 760 root ksmtuned 1 762 polkitd polkitd (...) ملحوظة: لجعل النتيجة أسهل للتصفح أعد توجيه الأمر ps أعلاه إلى less؛ ثم استخدم زرّ المسافة على لوحة المفاتيح للانتقال إلى الصفحة الموالية في النتائج، Ctrl+u للانتقال إلى الصفحة السابقة و q للعودة إلى سطر الأوامر: $ ps -o ppid,pid,uname,comm --ppid=1 | less يساعد تخصيص مخرجات الأمر ps في أمور منها على سبيل المثال معرفة العمليّات التي تتسبّب في زيادة استخدام المعالج أو الذاكرة: $ ps aux --sort=+pcpu # ترتيب العمليات تصاعديًّا حسب نسبة استخدام المعالج $ ps aux --sort=-pcpu # ترتيب العمليات تنازليًّا حسب نسبة استخدام المعالج $ ps aux --sort=+pmem # ترتيب العمليات تصاعديًّا حسب نسبة استخدام الذاكرة $ ps aux --sort=-pmem # ترتيب العمليات تنازليًّا حسب نسبة استخدام الذاكرة # ترتيب العمليّات تصاعديًّا حسب استخدام المعالج وتنازليًّا حسب استخدام الذاكرة $ ps aux --sort=+pcpu,-pmem مقدمة إلى SystemD اعتمدت أغلب توزيعات لينكس الحديثة نظام التمهيد SystemD بدلا من أنظمة التمهيد القديمة (مثل SysVinit) نظرا للميزات التي يقدّمها؛ ومن أهمها: إمكانيّة أكبر لتنفيذ العمليّات بالتوازي أثناء التمهيد؛ على عكس SysVinit الأبطأ (ينفّذ SysVinit العمليّات الواحدة تلو الأخرى وينتظر التحقّق من اعتماديّات العمليّات قبل البدء في تشغيل خدمات النظام). يعمل بعد التمهيد على إدارة موارد النظام بطريقة أفضل؛ فالخدمات تشغَّل عند الحاجة إليها فقط من أجل تجنّب استهلاك موارد النظام في عمليّات غير متسخدَمة. التوافق العكسيّ مع سكربتات SysVinit. تدير الأداة systemctl نظام التمهيد SystemD؛ التي تؤدي دورَ الأدوات chkconfig و service و shutdown في نظام التمهيد SysVinit. يبيِّن الجدول التالي التشابه بين عمل systemctl وعمل الأدوات المذكورة. الأمر في SysVinit الأمر في SystemD الوصف service name start systemctl start name تشغيل الخدمة name service name stop systemctl stop name إيقاف الخدمة name service name condrestart systemctl try-restart name إعادة تشغيل الخدمة بشرط أن تكون تعمل حاليا service name restart systemctl restart name إعادة تشغيل الخدمة service name reload systemctl reload name إعادة تحميل إعدادات الخدمة service name status systemctl status name عرض حالة الخدمة service –status-all systemctl عرض حالة جميع الخدمات chkconfig name on systemctl enable name تفعيل تشغيل الخدمة مع إقلاع النظام حسب ما هو محدّد في ملف الوحدة Unit file. تتمثّل عمليّة تفعيل خدمة للتشغيل التلقائي مع الإقلاع (أو تعطيلها) في إضافة وصلات رمزيّة (أو حذفها) إلى المجلّد etc/systemd/system/ (أو حذفها منه). chkconfig name off systemctl disable name تعطيل تشغيل خدمة مع إقلاع النظام. chkconfig --list name systemctl is-enabled name يتحقّق من ما إذا كانت الخدمة مفعَّلة حاليا أم لا chkconfig --list systemctl --type=service تعطيل جميع الخدمات مع ذكر ما إذا كانت الخدمة معطّلة أم مفعَّلة. shutdown -h now systemctl poweroff إيقاف الجهاز shutdown -r now systemctl reboot إعادة تشغيل النظام أضاف SystemD مفهومي الوحدة Unit إلى نظام التمهيد (التي يمكن أن تكون خدمة Service، نقطة تركيب Mount point، جهاز طرفي Device أو مقبس شبكي Network socket) والوجهة Target (الكيفيّة التي يدير بها SystemD عمليّات عدّة مرتبطة في ما بينها). راجع مقال أساسيات Systemd: العمل مع الخدمات، الوحدات Units، واليوميات Journal للمزيد حول نظام التمهيد SystemD. إدارة العمليات تعديل الأولوية في التنفيذ يُستخدَم الأمر renice للتعديل على الأولويّة المعطاة لعمليّة أو عدّة عمليات. تستخدم النواةُ الأولويات لتحديد الكيفيّة التي ستخصّص بها موارد الجهاز للعمليّات. تتراوح الأولويّات Priorities (وتُعرَف أيضا بـ Nices) بين 20- و 19: $ renice priority identifier نحدّد بالمعطى الأول priority الأولويّة التي نريد منحها؛ ثم نحدّد في المعطى الثاني معرّفات عمليّات p-، معرّفات مستخدمين (أو أسماءهم) u- أو معرّفات مجموعات مستخدمين (أو أسماءها) g-. يمكن للمستخدم العادي تغيير أولويّة عمليّاته فقط بشرط ألا يؤدّي التغيير إلى نقص قيمة الأولويّة (قيمة أقلّ تعني أولويّة أكبر). بمعنى أنه يمكن للمستخدم تقليص استخدام عمليّاته للموارد إلا أنه لا يمكنه زيادتها. يحاول الأمر التالي تغيير قيمة أولويّة العمليّة ذات المعرّف 10079 إلى 1-: $ renice -1 -p 10079 إن أردنا تغيير جميع عمليّات المستخدم academy إلى نفس القيمة نطبّق الأمر كالتالي: # renice -1 -u academy إنهاء عملية يُستخدَم الأمر kill لإنهاء العمليّات؛ إلا أن طريقة إنهاء العمليّة تختلف. ينهي الأمر kill العمليّة بإحدى طريقتيْن: إما أن يطلُب من العمليّة إنهاء مهامها (اجمعي أغراضك وانصرفي) أو يتولى هو المهمة بنفسه. إن لم نحدّد طريقة الإنهاء فسيستخدم الأمرُ الطريقةَ الأولى؛ لتحديد الطريقة الثانيّة نستخدم الخيّار 9-. في الواقع، 9 هو معرّف إشارة يُرسلها النظام إلى العمليّة؛ وتتميّز بأنها إشارة لا يمكن للعمليّة تجاهلها (عكسَ الإشارة 15 اللطيفة المستخدَمة في طريقة الإنهاء الأولى). يوجد الأمر pkill الذي يعمل على إنهاء العمليّات بطريقة مشابهة للأمر kill مع فرق أن kill ينهي عمليّة (أو مجموعة عمليّات) بناء على المعرّف؛ في حين أن pkill يمكن أن يستخدم اسم العمليّة أو خاصيّات أخرى. استخدم أمر pgrep إن أردت عرض عمليّات توافق شروطا معينة؛ إن طبّقت أمر pkill على نفس الشروط فسينهي جميع العمليّات التي تنطبق عليها. في المثال التالي نطلُب إنهاء جميع عمليّات المستخدم academy: # pkill -u academy إنهاء العمليّات ليس عمليّة هامشيّة؛ لذا من المستحسن عرض لائحة بالعمليّات التي ينطبق عليها الأمر أعلاه قبل تنفيذه: # pgrep -l -u academy يمكنك الحصول على مزيد من التفاصيل عن الأوامر ps، kill والإشارات Signals في مقال إدارة العمليات (Process) في لينكس باستخدام الطرفية. ترجمة -وبتصرّف- للمقال RHCSA Series: Process Management in RHEL 7: Boot, Shutdown, and Everything in Between – Part 5 لصاحبه Gabriel Cánepa.
  3. يُعتبر تشغيل التطبيقات على خادوم لينكس أمرًا اعتياديًا كما هو الحال مع أي جهاز حاسوب آخر، ويطلق الحاسب على تلك التطبيقات اسم "العمليات" Process. وبينما يعالج لينكس من وراء الكواليس العمليات على المستوى المنخفض ويدير [دورة حياتها][1] إلا أنك لا تزال بحاجة إلى أدوات تساعدك على إدارة هذه العمليات في المستوى العالي higher-level لإدارة النظام. في هذا الدّرس سنناقش بعض الجوانب البسيطة في إدارة العمليات تحت أنظمة لينكس، والتي توفّر عددًا كبيرًا من الأدوات لهذا الغرض. تم تطبيق الأمثلة على خادوم خاص VPS يعمل بتوزيعة Ubuntu 14.04، إلا أنها ستعمل بالتأكيد بذات الطريقة مع باقي التوزيعات. كيفية استعراض العمليات النشطة في لينكسtopلاستعراض العمليات النشطة حاليًا على الخادوم يمكن بسهولة تشغيل الأمر top: top top - 15:14:40 up 46 min, 1 user, load average: 0.00, 0.01, 0.05 Tasks: 56 total, 1 running, 55 sleeping, 0 stopped, 0 zombie Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 1019600k total, 316576k used, 703024k free, 7652k buffers Swap: 0k total, 0k used, 0k free, 258976k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 20 0 24188 2120 1300 S 0.0 0.2 0:00.56 init 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 3 root 20 0 0 0 0 S 0.0 0.0 0:00.07 ksoftirqd/0 6 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0 7 root RT 0 0 0 0 S 0.0 0.0 0:00.03 watchdog/0 8 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 cpuset 9 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 khelper 10 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs تضم السطور الأولى للخرج السابق معلومات عامة عن النظام مثل مدّة تشغيله، معدّل استخدام المعالج، عدد العمليات، وغيرها، ويمكن ملاحظة وجود عملية واحدة نشطة في مثالنا هذا، إضافة إلى 55 عملية في حالة سكون idle أي لا تستخدم شيئًا من موارد المعالج CPU. بينما يضم القسم الآخر والموزع في جدول على العمليات النشطة إضافةً لمعلومات مختلفة عنها (مثل مقدار استهلاكها للذاكرة أو المعالج). htopالنسخة المُحسّنة من top تدعى htop، وهي متاحة في المستودعات الرسمية لمعظم التوزيعات، على Ubuntu يمكن تركيبها بالأمر التالي: sudo apt-get install htopيعرض الأمر htop الخرج بأسلوب أيسر في القراءة والفهم: htop Mem[||||||||||| 49/995MB] Load average: 0.00 0.03 0.05 CPU[ 0.0%] Tasks: 21, 3 thr; 1 running Swp[ 0/0MB] Uptime: 00:58:11 PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command 1259 root 20 0 25660 1880 1368 R 0.0 0.2 0:00.06 htop 1 root 20 0 24188 2120 1300 S 0.0 0.2 0:00.56 /sbin/init 311 root 20 0 17224 636 440 S 0.0 0.1 0:00.07 upstart-udev-brid 314 root 20 0 21592 1280 760 S 0.0 0.1 0:00.06 /sbin/udevd --dae 389 messagebu 20 0 23808 688 444 S 0.0 0.1 0:00.01 dbus-daemon --sys 407 syslog 20 0 243M 1404 1080 S 0.0 0.1 0:00.02 rsyslogd -c5 408 syslog 20 0 243M 1404 1080 S 0.0 0.1 0:00.00 rsyslogd -c5 409 syslog 20 0 243M 1404 1080 S 0.0 0.1 0:00.00 rsyslogd -c5 406 syslog 20 0 243M 1404 1080 S 0.0 0.1 0:00.04 rsyslogd -c5 553 root 20 0 15180 400 204 S 0.0 0.0 0:00.01 upstart-socket-brلقراءة المزيد عن استخدام الأمرين top و htop هنا. استخدام ps في عرض العملياتكما شاهدنا فكلا الأداتين top و htop تعرضان العمليات بشكل مشابه لمدير المهام في الواجهات الرسومية، إلا أنهما ليستا مرنتين كفايةً لتغطية كافة الاحتياجات، وهنا يأتي دور الأداة ps للتعويض عن هذا القصور. للوهلة الأولى قد يخيب أملنا فيما لو استدعينا الأمر ps مباشرةً ودون معطيات Arguments إضافية، حيث لن يزيد عدد أسطر الخرج عن اثنين مع ثلاثة أعمدة: ps PID TTY TIME CMD 1017 pts/0 00:00:00 bash 1262 pts/0 00:00:00 psوالسبب هو أن الأمر ps بشكله المجرّد يعرض العمليات المرتبطة بالمستخدم الحالي وجلسة الطرفية فقط، وبالنظر إلى أننا لم نشغّل سوى الطرفية مع الأمر ps فإن الخرج السابق يبدو طبيعيًا. أما لاستعراض تفاصيل أكثر عن عمليات نظامنا الحالي يمكننا تشغيل الأمر التالي: ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.2 24188 2120 ? Ss 14:28 0:00 /sbin/init root 2 0.0 0.0 0 0 ? S 14:28 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S 14:28 0:00 [ksoftirqd/0] root 6 0.0 0.0 0 0 ? S 14:28 0:00 [migration/0] root 7 0.0 0.0 0 0 ? S 14:28 0:00 [watchdog/0] root 8 0.0 0.0 0 0 ? S< 14:28 0:00 [cpuset] root 9 0.0 0.0 0 0 ? S< 14:28 0:00 [khelper] . . . مع الخيار aur سوف يعرض الأمر ps العمليات التي تخص كافة المستخدمين على شكل جدول سهل الفهم. كما يمكننا ترتيب عرض العمليات بشكل متسلسل يوضّح العلاقات فيما بينها عن طريق إضافة الخيار axjf للأمر: ps axjf PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND 0 2 0 0 ? -1 S 0 0:00 [kthreadd] 2 3 0 0 ? -1 S 0 0:00 \_ [ksoftirqd/0] 2 6 0 0 ? -1 S 0 0:00 \_ [migration/0] 2 7 0 0 ? -1 S 0 0:00 \_ [watchdog/0] 2 8 0 0 ? -1 S< 0 0:00 \_ [cpuset] 2 9 0 0 ? -1 S< 0 0:00 \_ [khelper] 2 10 0 0 ? -1 S 0 0:00 \_ [kdevtmpfs] 2 11 0 0 ? -1 S< 0 0:00 \_ [netns] . . .وكما ترى يمكننا بسهولة ملاحظة أن العملية kthreadd هي عملية أب للعملية ksoftirqd/0 وما يليها. ملاحظات حول معرّفات العمليات Process IDsيخصّص لينكس والأنظمة الشبيهة بيونكس رقمًا معرفًا لكل عملية Process ID أو ما يعرف بـ PID، حيث يتمكّن النظام من التعرف بذلك على العمليات وتعقبها أثناء التشغيل. يتيح الأمر pgrep أسلوبًا سهلًا للحصول على رقم PID لأيّة عملية، حيث يستعلم عنه ويعيده كخرج على الشاشة: pgrep bash 1017 كمثال آخر فإن أوّل عملية يتم إطلاقها أثناء الإقلاع والتي تدعى init تعطى رقم PID يساوي الواحد: pgrep init 1تعمل هذه العملية على متابعة تشغيل باقي العمليات أثناء تشغيل النظام، كما أنها مسؤولة عن تشغيل باقي الخدمات، وفي المقابل فإن آخر عملية يتم تشغيلها تأخذ أكبر رقم PID. نقول عن عملية ما أنها عملية أب Parent Process إذا كانت تتولى تشغيل عملية أخرى، وهذا يعني أنه إذا تم إيقاف العملية الأب بشكل إجباري (أي قتلها) فستنهار العملية الابن، يشار في هذه الحالة لرقم PID الخاص بمعرّف عملية أب برقم PPID. تعرض الأدوات السابقة (top, htop, ps) أعمدة تضم أرقام كلًا من PID و PPID الخاصة بالعمليات المختلفة، إذ تتم إدارة العمليات بين المستخدم والنظام من خلال استدعاء رقم العملية بدلًا من اسمها. كيفية إرسال إشارات للعمليات في لينكستستجيب جميع العمليات في لينكس إلى نظام الإشارات، والإشارات Signals هي أسلوب يتبعه نظام التشغيل لإدارة العمليات (كتعديلها أو إنهائها)، ويقصد بذلك تنفيذ إجراء للعملية عند تمرير إشارة ما. إرسال إشارة لعملية عن طريق PIDيعتبر الأمر kill واحدًا من أكثر الأمثلة شيوعًا عن تمرير إشارة لبرنامج، وكما هو متوقع فإن الوظيفة التي تقوم بها هذه الأداة هي محاولة الإيقاف الإجباري للعملية: kill PID_of_target_processيرسل الأمر السابق إشارة "إمهال" للعملية، والتي تحمل رسالة مفادها: انتهِ رجاءً.. وهذا ما يسمح للبرنامج بتنفيذ عمليات تنظيف الذاكرة والإغلاق بشكل طبيعي، أما فيما لو انتهت مهلة الإشارة ولم يستجب لها البرنامج، فيمكننا زيادة قّوة الإشارة بإضافة المعامل "-KILL" لها: kill -KILL PID_of_target_processفي هذه الحالة لا يتم إرسال الإشارة إلى البرنامج، وبدلًا من ذلك يتم تمريرها إلى نواة نظام التشغيل مباشرةً لإغلاق العملية، تُستعمل هذه الإشارة في الحالات التي لا تستجيب فيها العمليات لطلبات الإنهاء. وكما هو الحال مع العمليات، تملك الإشارات أرقامًا خاصة يمكن استخدامها أثناء تمريرها. على سبيل المثال يمكن تمرير الرقم "-15" بدلا من "-TERM"، و "-9" بدلًا من "-KILL". استخدامات أخرى للإشاراتلا يقتصر عمل الإشارات على إيقاف تشغيل البرامج، بل يمكن تنفيذ إجراءات أخرى معها، مثل إعادة تشغيل بعض خدمات daemons عند تمرير HUP لها، أباتشي Apache واحدة من هذه الخدمات: sudo kill -HUP pid_of_apacheعند تنفيذ الأمر السابق سيعيد Apache تحميل ملف الضبط الخاص به ومن ثم يستأنف الخدمة. لاستعراض جميع الإشارات التي من الممكن استخدامها مع الأمر kill اكتب: kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM . . . إرسال إشارة لعملية باستخدام الاسمعلاوةً على الأسلوب السابق في استخدام معرّفات PID لإرسال الإشارات المختلفة إلى العمليات، تتيح الأداة pkill إرسال الإشارات عن طريق أسماء العمليات نفسها، حيث الأمر: pkill -9 pingيكافئ تمامًا الأمر: kill -9 `pgrep ping` كما يمكنك إرسال إشارة ما إلى مجموعة عمليات من أسرة واحدة باستخدام الأمر: killall: killall firefox حيث يرسل الأمر السابق إشارة المهلة TERM signal لكل عملية نشطة على الكمبيوتر تحمل الاسم firefox. ضبط أولويات العملياتفي إدارتك للخادوم الخاص بك كثيرًا ما ستحتاج إلى كيفية تضبط بها أولويات العمليات، لتحدّد أيها التي ترغب بإعطائها أفضلية قصوى، ففي حالاتٍ متفرقة تكون بعض العمليات حساسة وذات أهمية عالية، بينما يمكن لباقي العمليات أن تنتظر قليلًا من الوقت بينما تتوفر موارد شاغرة. يتم التحكم بأولويات العمليات في لينكس من خلال قيمة يطلق عليها اسم niceness. المهام ذات الأولوية المرتفعة تدعى less nice، باعتبار أنها لا تسمح بمشاركة موارد الخادوم كما يجب، وفي المقابل يطلق على العمليات ذات الأولوية المنخفضة اسم nice باعتبار أنها لا تستهلك سوى أقل قدر من الموارد فقط. وبالعودة إلى مخرجات الأمر top سنجد أن هناك عمود يدعى "NI" والذي يحدد قيمة الـ nice لكل عملية: top Tasks: 56 total, 1 running, 55 sleeping, 0 stopped, 0 zombie Cpu(s): 0.0%us, 0.3%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 1019600k total, 324496k used, 695104k free, 8512k buffers Swap: 0k total, 0k used, 0k free, 264812k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1635 root 20 0 17300 1200 920 R 0.3 0.1 0:00.01 top 1 root 20 0 24188 2120 1300 S 0.0 0.2 0:00.56 init 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 3 root 20 0 0 0 0 S 0.0 0.0 0:00.11 ksoftirqd/0حيث العمليات التي تأخذ قيمة من المجال "-19/-20" تعتبر ذات أولوية عالية، وتلك التي تأخذ قيمة محصورة ضمن المجال "19/20" تعتبر ذات أولوية منخفضة، وهذا يعتمد على نظام التشغيل. لتشغيل برنامج وفق قيمة محدّدة لـ nice يمكن استعمال الأمر التالي: nice -n 15 command_to_executeللتأكيد؛ الأمر السابق يُستخدم لتشغيل أمر جديد بقيمة محدّدة لـ nice، أما لتغيير قيمة nice لبرنامج يعمل بالفعل فإننا نستخدم أداة تدعي renice: renice 0 PID_to_prioritizeانتبه، بينما تتعامل الأداة nice مع العمليات وفق أسمائها، فإن renice تفعل ذلك باستخدام معرّفات PID، فوجب التفريق. خاتمةأحيانًا يشعر المستخدمون الجدد بصعوبة في فهم إدارة العمليات في لينكس والتعامل معها، باعتبار أن ذلك يتمّ ضمن سطر الأوامر خلافًا لما ألفوه من بدائل في الواجهات الرسومية. غير أن هذه الأفكار ما تلبث أن تصبح مألوفة وسهلة الاستخدام مع بعض الممارسة اليومية، إذ أن تعلم إدارة العمليات في لينكس يعدّ مهارة أساسية في كل ما تفعله مع نظام التشغيل. [1]: دورة حياة العملية أو Process Lifecycle، هي أسلوب في فهم "العمليات" انطلاقا من الحالة الابتدائية لها، مرورًا بمراحل النضج وحتى المرحلة النهائية لتطورها ونموها، حيث فهم وتحليل العمليات بهذا الأسلوب يساعدنا على فهم الكيفية التي تنسجم أو تتناسب بها العمليات مع النظام وفق صيرورة من النمو والنضج. ترجمة -وبتصرّف- للمقال How To Use ps, kill, and nice to Manage Processes in Linux