ما هي العمليات التي يطلق عليها مصطلح daemons
العمليات التي يطلق عليها مصطلح daemons
Daemons هي عمليات تبدأ غالبًا عندما يتم تمهيد النظام وتنتهي فقط عند إيقاف تشغيل النظام لأن ليس لديهم محطة تحكم فإنهم يعملون في الخلفية، حيث تتمتع أنظمة UNIX بالعديد من برامج المساعدة التي تؤدي الأنشطة اليومية
كما أنه يستكشف كيفية كتابة البرنامج الخفي نظرًا لأن البرنامج الخفي لا يحتوي على طرف تحكم متحكم فنحن بحاجة إلى معرفة كيف يمكن للبرنامج الخفي الإبلاغ عن حالات الخطأ عندما يحدث خطأ ما.
خصائص daemons
يصف هذا القسم بعض عفاريت النظام الشائعة مع مفاهيم مجموعات العمليات ومحطات التحكم، ومن هذه العمليات أو المفاهيم ما يأتي:
- ps -axj
- يعرض الخيار -a حالة العمليات التي يمتلكها الآخرون.
- يعرض الخيار -x العمليات التي لا تحتوي على محطة تحكم.
- يعرض الخيار -j المعلومات المتعلقة بالوظيفة:
- معرف جلسة العمل
- معرف مجموعة العمليات
- محطة التحكم
- معرف مجموعة العمليات الطرفية
كما يبدو الإخراج من ps على Linux 3.2.0 كما يلي:
- UID PID PPID PGID SID TTY CMD
- جذر 1 0 1 1؟ / sbin / init
- جذر 2 0 0 0؟ [kthreadd]
- جذر 3 2 0 0؟ [ksoftirqd / 0]
- جذر 6 2 0 0؟ [الهجرة / 0]
- جذر 7 2 0 0؟ [حراسة / 0]
- جذر 21 2 0 0؟ [cpuset]
- جذر 22 2 0 0؟ [خيلبر]
- جذر 26 2 0 0؟ [sync_supers]
- جذر 27 2 0 0؟ [bdi- افتراضي]
- جذر 29 2 0 0؟ [kblockd]
- جذر 35 2 0 0؟ [kswapd0]
- جذر 49 2 0 0؟ [scsi_eh_0]
- جذر 256 2 0 0؟ [jbd2 / sda5-8]
- جذر 257 2 0 0؟ [ext4-dio-unrit]
- 847 1843 843؟ rsyslogd -c5
- جذر 906 1906906؟ / usr / sbin / cupsd -F
- جذر 1037 1 1037 1037؟ / usr / sbin / inetd
- جذر 1067 1 1067 1067؟ كرون
- الشيطان 1068 1 1068 1068؟ ATD
- جذر 8196 1 8196 8196؟ / usr / sbin / sshd -D
- جذر 13047 2 0 0؟ [kworker / 1: 0]
- جذر 14596 2 0 0؟ [تدفق -8: 0]
- جذر 26464 1 26464 26464؟ rpcbind -w
- statd 28490 1 28490 28490؟ statd -L
- جذر 28553 2 0 0؟ [rpciod]
- جذر 28554 2 0 0؟ [nfsiod]
- جذر 28561 1 28561 28561؟ idmapd
- جذر 28761 2 0 0؟ [مغلق]
- جذر 28764 2 0 0؟ [nfsd]
- جذر 28775 1 28775 28775؟ /usr/sbin/rpc.mountd –manage-gids
عناوين الأعمدة
عناوين الأعمدة بالترتيب هي ما يلي:
- معرف المستخدم
- معرف العمليه
- معرف العملية الأصل
- معرف مجموعة العمليات
- معرف جلسة العمل
- اسم المحطة
- سلسلة الأمر
وظيفة daemons
كما تعتمد عمليات النظام في هذا الإخراج على تنفيذ نظام التشغيل وعادةً ما يكون أي شيء بمعرف عملية أصل عبارة عن عملية kernel التي بدأت كجزء من إجراء تمهيد النظام بإستثناء init وهو أمر على مستوى المستخدم بدأ بواسطة kernel في وقت التمهيد، كما تعتبر عمليات Kernel خاصة وهي موجودة بشكل عام طوال عمر النظام بالكامل حيث يتم تشغيلهم بامتيازات المستخدم المتميز وليس لديهم محطة تحكم ولا سطر أوامر
في نموذج إخراج ps توجد أسماء شيطان kernel بين قوسين مربعين، كما أن kthreadd هي عملية kernel خاصة على Linux تقوم بإنشاء عملية kernel أخرى وبالتالي تظهر كأصل لعناصر kernel الأخرى وعادةً ما يكون لمكون kernel الذي يجب تشغيله في سياق عملية ولكن لا يتم استدعاؤه من سياق عملية على مستوى المستخدم، كما أن البرنامج الخفي لـ kernel الخاص به على سبيل المثال
kswapd عفريت pageout الذي يدعم النظام الفرعي للذاكرة الظاهرية عن طريق كتابة الصفحات المتسخة على القرص ببطء بمرور
الوقت
بحيث يمكن استعادة الصفحات كما يقوم هذا البرنامج الخفي بمسح الصفحات المتسخة إلى القرص عندما تصل الذاكرة المتاحة إلى حد أدنى تم تكوينه، كما يقوم أيضًا بمسح الصفحات المتسخة مرة أخرى إلى القرص على فترات منتظمة لتقليل فقد البيانات في حالة فشل النظام.
كما يمكن أن توجد عدة شياطين دافقة لكل جهاز دعم، وإخراج العينة flush-8: 0 يعني أن جهاز الدعم يتم
تحديد
ه من خلال رقم الجهاز الرئيسي ورقم الجهاز الصغير
كما يقوم البرنامج الخفي sync_supers بمسح البيانات الوصفية لنظام
الملف
ات بشكل دوري إلى القرص ويساعد برنامج jbd daemon في تنفيذ المجلة في نظام الملفات ext4 وعادةً ما تكون العملية الأولى هي برنامج خفي للنظام مسئول من بين أمور أخرى عن بدء خدمات النظام الخاصة بمستويات التشغيل المختلفة، كما يوفر rpcbind خدمة تعيين أرقام برامج RPC (استدعاء الإجراء البعيد) لأرقام منافذ الشبكة
توفر شياطين nfsd و nfsiod و lockd و rpciod و rpc.idmapd و rpc.statd و rpc.mountd دعمًا لنظام ملفات الشبكة (NFS) كما تلاحظ أن الأربعة الأولى هي شياطين kernel بينما الثلاثة الأخيرة هي شياطين على مستوى المستخدم، حيث يمكن لـ rsyslogd تسجيل رسائل النظام لأي برنامج وقد تتم طباعة الرسائل على جهاز وحدة التحكم أو كتابتها في ملف حيث ينفذ cron الأوامر في التواريخ والأوقات المجدولة بانتظام
- يتم التعامل مع العديد من مهام إدارة النظام من خلال برامج تشغيل cron على فترات منتظمة
- ATD على غرار cron يسمح للمستخدمين بتنفيذ المهام في أوقات محددة وتكون مرة واحدة فقط
- cupsd هو التخزين المؤقت للطباعة الذي يعالج طلبات الطباعة على النظام
- يوفر sshd تسهيلات تسجيل الدخول والتنفيذ عن بعد
-
تعمل معظم
الشياطين
بامتيازات المستخدم المتميز (الجذر)
لا يحتوي أي من الشياطين على محطة تحكم حيث يتم تعيين اسم الجهاز على علامة استفهام كما يتم بدء تشغيل شياطين النواة بدون محطة تحكم وربما يكون الافتقار إلى محطة تحكم في الشياطين على مستوى المستخدم ناتجًا عن استدعاء الشياطين سيتسيد
حيث أن معظم الشياطين على مستوى المستخدم هم قادة مجموعة العمليات وقادة الجلسات وهي العمليات الوحيدة في مجموعة العملية والجلسة والاستثناء الوحيد هو rsyslogd، وأصل الشياطين على مستوى المستخدم هو عملية البادئ.
قواعد الترميز
يوضح هذا القسم القواعد الأساسية لتشفير البرنامج الخفي الذي يمنع حدوث التفاعلات غير المرغوب فيها وتليها وظيفة daemonize التي تنفذ هذه القواعد، اتصل بـ umask لتعيين قناع إنشاء وضع الملف على قيمة معروفة عادةً، وإذا أنشأت العملية الخفية ملفات فقد ترغب في تعيين أذونات محددة
ومن ناحية أخرى إذا كان البرنامج الخفي يستدعي وظائف المكتبة التي تؤدي إلى إنشاء الملفات فقد يكون من المنطقي تعيين وضع الملف لإنشاء قناع على قيمة أكثر تقييدًا نظرًا لأن وظائف المكتبة قد لا تسمح للمتصل لتحديد الأذونات من خلال حجة صريحة، وإذا بدأ البرنامج الخفي كأمر shell بسيط ، فإن إنهاء الأمر الأبوي يجعل الصدفة تعتقد أن الأمر قد تم تنفيذه
في مجموعات الاتصال لإنشاء جلسة جديدة تحدث الخطوات الثلاث المدرجة الآتية
- يصبح قائد جلسة جديدة
- يصبح قائدًا لمجموعة عمليات جديدة
- ويتم فصله عن محطة التحكم الخاصة به
ويكون ضمن الأنظمة المستندة إلى النظام V حيث يوصي بعض الأشخاص بالاتصال بالشوكة مرة أخرى في هذه المرحلة وإنهاء مراقبة الوالد ومواصلة البرنامج الخفي مع
الطفل
وهذا يضمن أن البرنامج الخفي ليس قائد جلسة مما يمنعه من الحصول على محطة تحكم بموجب قواعد النظام الخامس (القسم 9.6) بدلاً من ذلك لتجنب الحصول على محطة تحكم، لذا تأكد من تحديد O_NOCTTY عند فتح جهاز طرفي.[1]