حاليا هناك في الواقع ثلاث طرق مختلفة للبرمجيات أن تبدأ كخدمة في أوبونتو, سيسف, مغرور و النظام (د). يتم تعريف الخدمة هنا كبرنامج يديره النظام في الخلفية ، بدلا من واحد بدأ وتشغيله مباشرة من قبل المستخدم.
سيسف
كانت الطريقة التقليدية لبدء الخدمات في لينكس هي وضع نص برمجي في /etc/init.d
، ثم استخدم update-rc.d
القيادة (أو في التوزيعات القائمة على ريدهات, chkconfig
) لتمكينه أو تعطيله.
يستخدم هذا الأمر بعض المنطق المعقد بشكل معتدل لإنشاء روابط رمزية في /etc/rc#.d
، التي تتحكم في ترتيب بدء الخدمات. إذا قمت بتشغيل ls /etc/rc2.d
يمكنك أن ترى الترتيب الذي سيتم قتل الخدمات مع اسم ملف مثل K##xxxx
وبدأت مع أسماء الملفات S##xxxx
. ال ##
في S##xxxx
يعني "بدء الطلب" للخدمة xxxx
. على العكس من ذلك ، فإن ##
في K##xxxx
يعني أمر القتل للخدمة xxxx
.
قضية رئيسية واحدة مع سيسف كان ذلك عند تمهيد النظام, كان لا بد من القيام بكل شيء في المسلسل ، شيئا تلو الآخر، مما يجعل أوقات تمهيد النظام بطيئة حقا. جرت محاولات لموازاة ذلك ، لكنها كانت عشوائية ويصعب الاستفادة منها بشكل كامل. كان هذا هو السبب الرئيسي الذي مغرور تم إنشاؤه.
مغرور
يستخدم مغرور ملفات تعريف الوظيفة في /etc/init
لتحديد الأحداث التي يجب أن تبدأ فيها الخدمة. لذلك ، في حين أن النظام هو تمهيد ، مغرور عمليات الأحداث المختلفة ، ومن ثم يمكن أن تبدأ خدمات متعددة في نفس الوقت. وهذا يسمح لهم بالاستفادة الكاملة من موارد النظام، على سبيل المثال ، عن طريق بدء تشغيل خدمة مرتبطة بالقرص أثناء تشغيل خدمة أخرى مرتبطة بو ، أو أثناء انتظار الشبكة لتعيين عنوان إب ديناميكي.
يمكنك ان ترى كل من الملفات المهمة مغرور عن طريق تشغيل ls /etc/init/*.conf
اسمحوا لي أن أتوقف هنا وأقول أنه إذا كنت لا تعرف ما هي الخدمة ، أو ما تفعله، فلا تقم بتعطيلها!
لم يتم تحويل جميع الخدمات إلى مغرور. بينما كان يعمل على فريق الخادم في الكنسي خلال الأشهر القليلة الماضية ، لقد عملت على عدد من الملفات المهمة المحولة ، وأجمل جزء هو أنه يسمح واحد للتخلص من كل النصي "ماجيك" وضعت للتو في عدد قليل من الأوامر هنا وهناك لتحديد بالضبط كيفية بدء تشغيل الخدمة ، وليس أكثر من ذلك. ولكن في الوقت الراهن ، سوى عدد قليل من خدمات الشبكة التقليدية ، مثل الحبار و سامبا، تم تحويلها.
هي خدمة قائمة على مغرور?
من أجل معرفة ما إذا كانت الخدمة مستندة إلى مغرور ، يمكنك تشغيل أمر الحالة:
status servicename
إذا كان مغرور وظيفة ، وسوف تظهر هذه:
$ status statdstatd start/running, process 942
ولكن إذا لم يكن كذلك ، سترى شيئا أكثر من هذا القبيل:
$ status apache2status: Unknown job: apache2
في هذه الحالة, apache2
لم يتم تحويلها إلى مغرور. لذلك ، لتعطيل apache2
أنت فقط تركض
sudo update-rc.d apache2 disablesudo service apache2 stop
تعطيل الخدمات (وظائف) في مغرور
تعريفات وظيفة مغرور لم يكن لديك update-rc.d
الأمر. لتعطيل المهمة ، تحتاج إلى تحرير ملف المهمة مباشرة لتعطيله. هناك طريقتان للقيام بذلك.
إذا كنت تريد أن تظل قادرا على بدء تشغيله يدويا، فأنت بحاجة إلى التعليق على start on
شرط. لنفترض أنك تريد التثبيت سامبا، ولكن لا يكون ذلك يبدأ تلقائيا. هنا هو ملف العمل (في ناتي):
description "SMB/CIFS File Server"author "Steve Langasek <steve.langasek@ubuntu.com>"start on local-filesystemsstop on runlevel [!2345]respawnpre-start script RUN_MODE="daemons" [ -r /etc/default/samba ] && . /etc/default/samba [ "$RUN_MODE" = inetd ] && { stop; exit 0; } install -o root -g root -m 755 -d /var/run/sambaend scriptexec smbd -F
لتعطيل سامبا، يمكنك فقط وضع #
أمام "start on local-filesystems
". لاحظ أنه على الرغم من أنه لن يبدأ النسخ الاحتياطي في التمهيد، إلا أنك لا تزال بحاجة إلى إيقافه هذه المرة باستخدام
sudo service smbd stop
إذا, ومع ذلك, أنت لا تريد أبدا سامبا للبدء ، أقترح بالفعل إزالة الحزمة. إذا ، ومع ذلك ، كنت تريد تثبيته ، ولكن ليس ستارتبل ، يمكنك أيضا القيام به:
mv /etc/init/smbd.conf /etc/init/smbd.conf.disabled
تعطيل خدمة باستخدام بدء / إيقاف مقطع (اعتبارا من 11.04)
بدءا من إصدار مغرور التي ستكون في 11.04 ، هناك كلمة رئيسية جديدة تعطيل start on
و stop on
موشحات: manual
. لذلك هناك طريقة أخرى لتعطيل الخدمة اعتبارا من 11.04 وهي القيام بذلك:
echo 'manual' | sudo tee /etc/init/mysql.override# command from root shellecho manual >> /etc/init/mysql.override
يمكنك إنشاء override
ملف لتعطيل خدمة دون تحرير تعريف المهمة على الإطلاق ، فقط عن طريق وضع manual
الكلمة في ذلك.