سؤال كيفية تمكين أو تعطيل الخدمات؟


قرأت عن كيفية تمكين وتعطيل الخدمات في أوبونتو ويبدو أن هناك احتمالات مختلفة لإدارتها.

الطريقة الأولى التي وجدتها هي update-rc.d لإضافة خدمات جديدة لبدء التشغيل ، والتي تهدف إلى /etc/init.d المجلد ومحتوياته.

الآخر الذي وجدته هو أن أحرر .conf الملفات في /etc/init مجلد.

ما هي الطريقة الموصى بها لتمكين / تعطيل / إضافة الخدمات ولماذا؟

هل يمكنك من فضلك إعطاء خطوة قصيرة ضد الرصاص من خلال مثال خطوة على كيفية إضافة خدمة في أوبونتو وتمكينها وتعطيلها؟


761
2017-12-29 21:03


الأصل


للتواصل يرجى الاطلاع على: askubuntu.com/questions/230698/... - Jorge Castro
هذه سيكون مفيدا لأولئك الذين تمسك في فيدورا 12 وهبطوا هنا. في حال linkrot chkconfigهو ما تبحث عنه. - Bleeding Fingers
لاحظ أن إجابة أوبونتو 14.04 لا تزال مفقودة هنا. - Reinier Post
MarcelloNuccio: بدءًا من Ubuntu 15.04 ، تم إيقاف Upstart لصالح Systemd. - Dan Dascalescu


الأجوبة:


هناك خدمات يمكن تمكينها / تعطيلها باستخدام واجهة المستخدم الرسومية (مثل startup التطبيق) أو المحطة.

للمحطة لديك عدة خيارات. أولاً ، افتح طرفية (اكتب "terminal" في الشرطة ، على سبيل المثال ، وافتحه). ثم:

خدمات التمكين / تعطيل مؤقت

لوقف وبدء الخدمات مؤقتا (لا يتم تمكين / تعطيلها للأحذية المستقبلية) ، يمكنك الكتابة service SERVICE_NAME. فمثلا:

  • sudo service apache2 stop (سوف توقف خدمة أباتشي حتى إعادة التشغيل أو حتى تبدأ مرة أخرى).

  • sudo service apache2 start (سوف بداية توقفت خدمة أباتشي على افتراض أنه قبل.).

  • service apache2 status (سيخبرك بحالة الخدمة ، إذا تم تمكين / تشغيل معطل / لا يعمل.).

  • sudo service apache2 restart (سوف إعادة بدء الخدمة. هذا هو الأكثر استخداما عندما قمت بتغيير ، ملف التكوين. في هذه الحالة ، إذا قمت بتغيير إما تكوين PHP أو تكوين Apache. سيؤدي إعادة التشغيل إلى إجبارك على التوقف / البدء باستخدام سطور الأوامر 2)

  • service apache2 (في هذه الحالة ، بما أنك لم تذكر ACTION لتنفيذ الخدمة ، فسوف تظهر لك جميع الخيارات المتاحة لهذه الخدمة المحددة.) هذا الجانب يختلف باختلاف الخدمة ، على سبيل المثال ، مع MySQL ، فإنه سيشير فقط إلى أنه يفتقد معلمة. بالنسبة للخدمات الأخرى مثل خدمة الشبكة ، سوف يذكر القائمة الصغيرة لجميع الخيارات المتاحة.


سيستم دي

بدءًا من Ubuntu 15.04 ، سيتم إيقاف ميزة Upstart لصالح Systemd. مع Systemd لإدارة الخدمات ، يمكننا القيام بما يلي:

systemctl start SERVICE - استخدمه لبدء خدمة. لا تستمر بعد إعادة التشغيل

systemctl stop SERVICE - استخدمه لإيقاف الخدمة. لا تستمر بعد إعادة التشغيل

systemctl restart SERVICE - استخدمه لإعادة تشغيل الخدمة

systemctl reload SERVICE - إذا كانت الخدمة تدعمه ، فسيتم إعادة تحميل ملفات التهيئة المرتبطة به دون مقاطعة أي عملية تستخدم الخدمة.

systemctl status SERVICE - يعرض حالة الخدمة. يوضح ما إذا كانت الخدمة قيد التشغيل حاليًا.

systemctl enable SERVICE - تشغيل الخدمة ، عند إعادة التمهيد التالية أو في حدث البدء التالي. انها لا تزال مستمرة بعد إعادة التشغيل.

systemctl disable SERVICE - إيقاف تشغيل الخدمة عند إعادة التشغيل التالية أو في حدث التوقف التالي. انها لا تزال مستمرة بعد إعادة التشغيل.

systemctl is-enabled SERVICE - تحقق مما إذا كانت الخدمة مهيأة حاليًا لبدء التشغيل أم لا عند إعادة التشغيل التالية.

systemctl is-active SERVICE - تحقق مما إذا كانت الخدمة نشطة حاليًا.

systemctl show SERVICE - عرض جميع المعلومات حول الخدمة.

sudo systemctl mask SERVICE - تعطيل الخدمة بالكامل عن طريق ربطها بـ /dev/null. لا يمكنك بدء الخدمة يدويًا أو تمكين الخدمة.

sudo systemctl unmask SERVICE - يزيل الرابط ل /dev/null ويستعيد القدرة على تمكين الخدمة أو بدء تشغيلها يدويًا.


UPSTART (موقوف منذ 15.04)

إذا أردنا استخدام طريقة Upstart الرسمية (لاحظ أنه ، في الوقت الحالي ، لم يتم تحويل جميع الخدمات إلى Upstart) ، يمكننا استخدام الأوامر التالية:

status SERVICE - سيخبرنا هذا ما إذا كانت الخدمة المحولة قيد التشغيل أم لا. لاحظ أن هذا موقوف لصالحه start، stop، status و restart. كما سيخبرنا أيضًا ما إذا كانت الخدمة لم يتم تحويلها بعد إلى مبتدئ:

عادة ما تقوم الخدمة المحولة بإخراج الحالة الحالية (البدء ، التشغيل ، الإيقاف ...) ومعرف العملية. خدمة غير محولة تعطي خطأ حول عمل غير معروف.

بعض الاختصارات قد تعمل فقط مع service الأمر أعلاه ولكن ليس بالأوامر أدناه ما لم يتم تحويلها بنسبة 100٪ إلى خدمات مغردة:

  • بداية - sudo start mysql

  • توقف - sudo stop mysql

  • إعادة بدء - sudo restart mysql

  • الحالة - sudo status smbd

تمكين / تعطيل الخدمة

لتبديل خدمة من البداية أو التوقف نهائيًا ، يلزمك ما يلي:

echo manual | sudo tee /etc/init/SERVICE.override

حيث مقطع manual سوف يتوقف Upstart من تحميل الخدمة تلقائيًا عند التشغيل التالي. أي خدمة مع .override النهاية سيكون لها الأولوية على ملف الخدمة الأصلي. ستتمكن فقط من بدء الخدمة يدويًا بعد ذلك. إذا كنت لا تريد هذا ثم ببساطة حذف .override. فمثلا:

echo manual | sudo tee /etc/init/mysql.override

سوف تضع خدمة الخلية في manual الوضع. إذا كنت لا تريد هذا ، بعد ذلك يمكنك ببساطة القيام به

sudo rm /etc/init/mysql.override

وأعد تشغيل الخدمة لبدء التشغيل تلقائيًا مرة أخرى. وبطبيعة الحال لتمكين الخدمة ، فإن الطريقة الأكثر شيوعًا هي تثبيتها. إذا قمت بتركيب Apache أو Nginx أو MySQL أو غيرها ، فإنها تبدأ تلقائيًا عند الانتهاء من التثبيت وستبدأ في كل مرة يتم فيها تشغيل الكمبيوتر. تعطيل ، كما ذكر أعلاه ، سوف تستخدم هذه الخدمة manual.


757
2017-12-29 21:26



هل تحتاج إلى إضافة .service لكل أمر؟ systemctl mongod status عملت على ما يرام. - Dan Dascalescu
DanDascalescu لا لا ولكن اسمحوا لي أن أوضح أنه هناك. - Luis Alvarado♦
هل يجب وضع ملف .override في /etc/init.d/ ، على سبيل المثال ، أين يتم وضع الخدمة؟ - Obi Wan - PallavJha
لماذا يتم إيقاف مغرور في 15.04؟ ما هي الطريقة الصحيحة لتشغيل البرامج النصية عند البدء / إعادة التشغيل في ubuntu 16.04 أو ما بعده؟ - Kamalakannan J
KamalakannanJ لقد قمت باستخدام مستويات الصليب الأحمر؟ (على سبيل المثال /etc/rc0.d) أو /etc/rc.local؟ - Luis Alvarado♦


توجد حاليًا ثلاث طرق مختلفة لبدء تشغيل البرنامج كخدمة في أوبونتو ، SysV، مغرور و سيستم دي. يتم تعريف الخدمة هنا على أنها برنامج يتم تشغيله بواسطة النظام في الخلفية ، على عكس البرنامج الذي يتم تشغيله وتشغيله مباشرة بواسطة المستخدم.

SysV

الطريقة التقليدية لبدء الخدمات في لينكس هي وضع برنامج نصي في /etc/init.dثم استخدم update-rc.d الأمر (أو في توزيعة RedHat ، chkconfig) لتمكينه أو تعطيله.

يستخدم هذا الأمر بعض المنطق الأقل تعقيدًا لإنشاء روابط في /etc/rc#.d، التي تتحكم في ترتيب بدء الخدمات. اذا ركضت ls /etc/rc2.d يمكنك أن ترى الترتيب الذي سيتم قتل الخدمات مع اسم ملف مثل K##xxxx وبدأت بأسماء الملفات S##xxxx. ال ## في S##xxxx يعني "طلب بداية" للخدمة xxxx. على العكس ، و ## في K##xxxx يعني أمر القتل للخدمة xxxx.

قضية واحدة كبيرة مع SysV كان ذلك عند تمهيد النظام ، كل شيء يجب القيام به في المسلسل ، شيء واحد تلو الآخر ، مما يجعل أوقات تمهيد النظام بطيئة حقا. وقد بذلت محاولات لموازاة ذلك ، لكنها كانت عشوائية ويصعب تحقيق الاستفادة الكاملة منها. كان هذا هو السبب الرئيسي لذلك مغرورتم انشائه.

مغرور

مبتدئ يستخدم ملفات تعريف المهمة في /etc/init لتحديد ما هي الأحداث التي يجب أن تبدأ الخدمة فيها. لذا ، في حين أن النظام يقوم بالتمهيد ، فإن مبتدئًا يعالج الأحداث المختلفة ، ومن ثم يمكنه بدء خدمات متعددة في نفس الوقت. ويتيح ذلك لهم الاستفادة الكاملة من موارد النظام ، على سبيل المثال ، عن طريق بدء خدمة مرتبطة بالقرص أثناء تشغيل خدمة أخرى مرتبطة بوحدة المعالجة المركزية (CPU) ، أو أثناء انتظار الشبكة لتحديد عنوان IP ديناميكي.

تستطيع أن ترى كل من ملفات الوظيفة مغرور عن طريق تشغيل ls /etc/init/*.conf

اسمحوا لي أن أتوقف هنا وأقول إنه إذا كنت لا تعرف ما هي الخدمة ، أو ما تفعله ، فلا تقم بتعطيله!

لم يتم تحويل جميع الخدمات إلى مغرور. أثناء العمل على فريق الخادم في Canonical خلال الأشهر القليلة الماضية ، عملت على عدد من ملفات العمل التي تم تحويلها ، والجزء الأهم هو أنه يسمح لأحد بالتخلص من كل "السحر" النصي ووضعه في بعض الأوامر هنا وهناك لتحديد بالضبط كيفية بدء تشغيل الخدمة ، وليس أكثر. ولكن في الوقت الراهن ، فقط عدد قليل من خدمات الشبكة التقليدية ، مثل حبار و السامبا، تم تحويلها.

هي خدمة مغرور القائم؟

لمعرفة ما إذا كانت الخدمة قائمة على أساس مغرٍ ، يمكنك تشغيل أمر الحالة:

status servicename

إذا كان مغرور وظيفة ، وسوف تظهر هذه:

$ status statd
statd start/running, process 942

ولكن إذا لم يكن الأمر كذلك ، فسترى شيئًا أشبه بهذا:

$ status apache2
status: Unknown job: apache2

في هذه الحالة، apache2 لم يتم تحويلها إلى مغرور. لذلك ، لتعطيل apache2 أنت فقط تركض

sudo update-rc.d apache2 disable
sudo service apache2 stop

تعطيل الخدمات (وظائف) في مغرور

لا تحتوي تعريفات الوظائف المبتدئة على update-rc.d أمر. لتعطيل المهمة ، تحتاج إلى تحرير ملف المهمة مباشرة لتعطيله. هناك طريقتان للقيام بذلك.

إذا كنت لا تزال قادرًا على بدء تشغيله يدويًا ، فأنت بحاجة إلى التعليق على start on شرط. قل تريد تثبيت السامبا، ولكن لم يبدأ تشغيله تلقائيًا. هنا ملف العمل (في natty):

description "SMB/CIFS File Server"
author      "Steve Langasek <steve.langasek@ubuntu.com>"

start on local-filesystems
stop on runlevel [!2345]

respawn

pre-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/samba
end script

exec 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 shell
echo manual >> /etc/init/mysql.override

يمكنك إنشاء override ملف لتعطيل خدمة دون تحرير تعريف المهمة على الإطلاق ، فقط عن طريق وضع manual الكلمة في ذلك.


335
2018-01-06 18:25



يبدو أن 11.04 تجاوزت أيضًا. وبالتالي echo manual >> /etc/init/<service>.override ويفضل كما يترك الأصلي .conf filke سليمة. على أي حال ، لا يزال من العار أن مثل هذا الأساسية تمكين / تعطيل استغرق 3 سنوات لتطوير ، وليس هناك أي واجهة المستخدم الرسومية لذلك. - MestreLion
التحديث rc.d هو ما يهم حقا - Tim
يبدو غريباً عن الموضوع الأصلي عن الإجابة التي تم وضع علامة عليها كإجابة صريحة في ملصق السؤال الأصلي. شكر! :) - Henning
في حالتي ، الملف /etc/init/ssh.conf موجود لكن status ssh و status sshd كلاهما يقول "وظيفة غير معروفة". لا يبدو أن هذا الجواب لمعالجة مثل هذا الاحتمال؟ - Brian Z
status ssh يعطيني "وظيفة غير معروفة" أيضًا ، ولكن service ssh status تناسبني - ptim


sysv-روتردام-أسيوط

جرب استخدام sysv-روتردام-أسيوط

sudo apt-get install sysv-rc-conf

والبدء في إدارة الخدمات وتنفيذها

sudo sysv-rc-conf

والتي سوف تظهر نافذة تفاعلية مثل هذا

enter image description here

يمكنك أيضًا التنقل خلال الصفحات باستخدام Ctrl+n للصفحة التالية و Ctrl+p للصفحة السابقة. يمكنك تمكين وتعطيل الخدمات عن طريق التحديد SPACEعلى runlevels المرجوة.

وظائف الادارية

بديل آخر سيكون وظائف الادارية عن طريق تثبيت

sudo apt-get install jobs-admin

الذي يوفر أيضا واجهة المستخدم الرسومية مثل هذا

jobs-admin preview

لإظهار المزيد من الوظائف ، يجب عليك تحديد إظهار الوظائف المحمية من قائمته.

chkconfig

والخيار الثالث سيكون chkconfig،

sudo apt-get install chkconfig

يمكن استخدامه عبر CLI chkconfig، تظهر قائمة من وظائف على / قبالة. أيضا يمكننا أن نرى خدمات النظام باستخدام chkconfig –list

يمكن تشغيل الخدمات باستخدام

chkconfig <service> on

يمكن إيقاف الخدمات باستخدام

chkconfig <service> off

ويمكننا أيضًا إضافة خدمتنا الخاصة ، باستخدام نص برمجي مسبق صحيح مع عناوين مناسبة.

chkconfig --add <service>

التحديث rc.d

ويمكن الإشارة إلى خيار آخر هنا update-rc.d ، وأوضح لفترة وجيزة هنا.

لاحظ أنه بالنسبة إلى Ubuntu Server 12.04 ، update-rc.d  يستخدم بدلا من chkconfig.


121
2018-06-28 18:00



على خادم أوبونتو: Package chkconfig is not available, but is referred to by another package. - pwned
pwned أنت حر في تحرير ونشر المعلومات المحدثة بخصوص إصدار الخادم. شكرًا لك. - atenz
فعلت كما اقترحت ، والآن الأمر متروك لاستعراض الأقران. - pwned
وظائف المشرف لا يسمح بتغيير الوظائف (Ubuntu 14.04) ، لإنتاج تقرير تحطم بدلاً من ذلك ؛-) - Sadi
sysv-rc-conf ليس مناسبًا للاستخدام مع النظام المبتدئ أو systemd ، فهو يكون فقط لنظام RC 5 القديم ، والذي لم يكن الافتراضي على نظام التشغيل Ubuntu Linux لمدة عقد تقريبًا. يعترف Debian Bug # 791689 بهذا وتساؤل لماذا لم يتم وضع علامة على أنه متعارض مع systemd. - JdeBP


لأولئك منا الذين يديرون أوبونتو على ssh ، أعتقد أن الخيار أجمل rcconf - برنامج يستند إلى نص:

sudo apt-get install rcconf
sudo rcconf

alt text

انتقل باستخدام علامة التبويب ومفاتيح الأسهم ، واضغط مفتاح المسافة لتمكين / تعطيل. التغييرات مستمرة عبر عمليات إعادة التشغيل.

لقطة مستعاره من هذا بلوق، مما يدل أيضا sysv-rc-conf - أداة مماثلة تسمح لك أيضًا بتعيين مستوى التشغيل. (بالنسبة لأولئك الذين يحدث لرعاية ما يكفي حول runlevels ترغب في تغييرها :)

للأسف ، لا يعمل rcconf مع مغرور (الخدمات المدرجة في /etc/init/*) ، فقط مع الآلية التقليدية (ls -l /etc/init.d/* - تلك التي ليست روابط رمزية).

لحسن الحظ ، لم يتم نقل العديد من الخدمات ذات الصلة عند إنشاء خادم إلى خادم (Apache ، Tomcat ، mdadm ، boinc-client ...) إلى البداية حتى الآن.


48
2018-01-06 18:44



هل لا يزال هذا العمل مع مغرور؟ - oKtosiTe
للاسف لا. ولكنها عملت في جميع الحالات التي أردت تغييرها - يبدو أن الوظائف الناشئة هي في الغالب أشياء لا أريد أن أقوم بتعطيلها - ساعة الأجهزة ، سجل الخفي ، الشبكة وما إلى ذلك (على خادم أوبونتو ، على الأقل). لكنه شيء يجب أن تكون على علم به (لم أكن :) ، لقد قمت بتحديث المنشور. - j-g-faustus
للأسف تم تحويل mysql إلى مغرور. وهذه هي الخدمة التي استخدمها فقط عندما أقوم ببعض المشاريع. - MestreLion
هناك خلل مع rcconf على Ubuntu 12.04 الذي يمنع البرنامج من البدء. لحل هذه المشكلة تحتاج إلى تثبيت حزمة الحوار. - devius
منذ كتابة هذه الإجابة ، update-rc.d تم تغييرها ، و تمت إزالة بعض وظائفها التي تم إيقافها. يلاحظ Debian bug # 727735 أن rcconf لم يتغير ليتماشى. لا ، لا يعمل rcconf مع systemd سواء ، وبالتالي لا ينطبق على أي من أنظمة init الافتراضية لـ Ubuntu Linux خلال العقد الماضي. - JdeBP


لقد اكتشفت أن هناك أداة واجهة المستخدم الرسومية هذه ، مثل BUM ولكنها متوافقة مع Upstart:

  • وظائف الادارية

    sudo apt-get install jobs-admin
    

18
2018-05-21 10:27



ولكن الأمر بسيط للغاية ، ولا تسمح بتغيير "الوظائف المحمية" (ما هي تلك الوظائف؟ أبل لديها وظائف ، ونظام التشغيل لديه الشياطين!) - kakaz
لا أسمح حتى بتغيير "الوظائف غير المحمية" (أوبونتو 14.04) ، بإصدار تقرير تحطم بدلاً من ذلك ؛-) - Sadi


لا يعد تحرير ملف تكوين مبتدأ موجود (كما هو موضح أعلاه) فكرة جيدة. يمكن أن توفر الحزمة المحدّثة تهيئة محدثة ، وكان عليك تكرار التغييرات مرارًا وتكرارًا.

من خلال إلقاء نظرة على man 5 init سيجد المرء حلًا أكثر ملاءمة: باستخدام تهيئة التهيئة. مثال قصير: قل لدينا خدمة تسمى "foobar" ، لذلك سيكون هناك ملف يسمى /etc/init/foobar.conf مع تكوين مغرور. أنت الآن لا تريد إزالة هذا الملف ، ولا تعديله - ولكن لا تريد تشغيل هذه الخدمة؟ لذلك ضع تجاوز ملف بجانبه: /etc/init/foobar.overrideتحتوي على (اختياريًا الرأس مع الوصف و) بدلاً من start on / stop on خطوط تضع سطرًا بكلمة واحدة: manual. بهذه الطريقة كنت اقول مغرور لاستخدام أساسا foobar.conf، لكن تجاوز تعريف بدء التشغيل لبدء هذه الخدمة فقط عند فرضها يدوياً (عبر service foobar start في مثالنا).


12
2018-06-30 20:27





هناك أيضا مدير التمهيد.

لتثبيت: sudo apt-get install bum

مزيد من المعلومات: http://www.marzocca.net/linux/bum.html

enter image description here


8
2018-05-20 14:47



لا تنس التحقق من الزر "متقدم". - not2qubit