كيفية: إدارة الخدمة في systemd و SysVinit و Upstart و runit و OpenRC

سوف تتعلم بعض الأوامر لإدارة عمليات بدء تشغيل النظام (الخدمات). ما إذا كان Systemd, SysV init, Upstart, runit او OpenRC.


اولاً اعلم ان:

  • اذا رأيت {SERVICE_NAME} إنه متغير ومن المفترض أن يتم استبداله باسم خدمة فعلية ، مثل sshd, apache2, iptables…… الخ.
  • Enabling a service، هذا يعني أن الخدمة تبدأ تلقائيًا في عملية التمهيد. و Disabling a service، هذا بعني عدم بدء تشغيله تلقائيًا في عملية التمهيد.
  • جميع الأوامر المذكورة أدناه ، باستثناء عند سرد الخدمات أو سرد حالتها ، من المفترض أن تكون الجذر (root) أو تستعمل امر الــ sudo.

SystemDSysV initUpstartRunitOpenRC

سيستم دي systemd هي مجموعة من العفاريت والمكتبات والأدوات المصممة لتكون منصة مركزية للإدارة والضبط لنظام تشغيل لينكس. يصفها مصمموها بأنها “لبنة بناء أساسية” لنظام التشغيل، يهدف systemd إلى إزاحة أنظمة التمهيد التقليدية المستخدمة في توزيعات لينكس، الموروثة من UNIX System V وتوزيعة برمجيات بيركلي. والاسم systemd يتفق مع طريقة يونكس في تمييز العفاريت بجعل الحرف d الحرف الأخير في اسم الملف.صُمم systemd للعمل على لينكس وبرمج خصيصًا لواجهة برمجة تطبيقات لينكس. وهو برنامج حر ومفتوح المصدر تحت رخصة جنو العمومية الصغرى (LGPL) الإصدارة 2.1 أو الأعلى منها.تصميم systemd ولد جدلًا ملحوظًا في مجتمع البرمجيات الحرة، إذ جادل النقاد بأن بنية systemd تخرق فلسفة يونكس وستؤدي في النهاية إلى نظام من اعتمادات متشابكة. ومع ذلك، اعتمدت معظم توزيعات لينكس الكبرى systemd وجعلته نظام init الافتراضي فيها.

المصدر: ويكيبيديا

لسرد جميع الخدمات:

$ systemctl list-unit-files

لسرد الخدمات الفاشلة:

$ systemctl --failed

لبدء الخدمة:

$ systemctl start {SERVICE_NAME}

لإعادة تشغيل الخدمة:

$ systemctl restart {SERVICE_NAME}

لتمكين الخدمة:

$ systemctl enable {SERVICE_NAME}

لسرد حالة الخدمات قيد التشغيل:

$ systemctl list-units

لسرد الخدمات المتاحة:

$ systemctl --all

لتوقيف الخدمة:

$ systemctl stop {SERVICE_NAME}

للحصول على حالة الخدمة:

$ systemctl status {SERVICE_NAME}

لتعطيل الخدمة:

$ systemctl disable {SERVICE_NAME}

إذا كانت توزيعتك توفر بعض الأدوات لإدارة الخدمات ، فمن المستحسن استخدامها بدلاً من إنشاء / إزالة الروابط الرمزية يدويًا عندما تريد تمكين أو تعطيل الخدمة. RedHat و Fedora كانت تستخدم Service و chkconfig، Debian و التوزيعات المبنية عليها مثل Ubuntu كان لديهم Service و update-rc.d.


لسرد الخدمات:

استخداماً أداة الــ Service:

$ service --status-all

العلامات تعني كالآتي:

  • [ + ] –الخدمات التي تحمل هذه العلامة قيد التشغيل حاليًا.
  • [ – ] –الخدمات التي تحمل هذه العلامة ليست قيد التشغيل حاليًا.
  • [ ? ] –الخدمات التي ليس لها مفتاح الحالة.

استخداماً أداة الــ chkconfig:

$ chkconfig --all

لاحظ أنه يمكنك الحصول على المزيد من التفاصيل حول كل واحدة {SERVICE_NAME} (مثلاً $ chkconfig {SERVICE_NAME} --list).

أو قم بسردها يدويًا:

$ ls /etc/init.d/

لبدء الخدمة:

استخداماً أداة الــ Service:

$ service {SERVICE_NAME} start

أو ابدأ تشغيله يدويًا:

$ /etc/init.d/{SERVICE_NAME} start

لإيقاف الخدمة:

استخداماً أداة الــ Service:

$ service {SERVICE_NAME} stop

أو أوقفه يدويًا:

$ /etc/init.d/{SERVICE_NAME} stop

لإعادة تشغيل الخدمة:

استخداماً أداة الــ Service:

$ service {SERVICE_NAME} restart

أو أعد تشغيله يدويًا:

$ /etc/init.d/{SERVICE_NAME} restart

للحصول على حالة الخدمة:

استخداماً أداة الــ Service:

$ service {SERVICE_NAME} status

أو احصل عليه يدويًا:

$ /etc/init.d/{SERVICE_NAME} status

لتمكين الخدمة:

استخداماً أداة الــ update-rc.d:

$ update-rc.d {SERVICE_NAME} defaults

أو باستخدام الروابط الرمزية (يدويًا):

$ cd /etc/rc3.d
$ ln -s ../init.d/{SERVICE_NAME} S95{SERVICE_NAME}

اعلم ان, الــ S95 يستخدم لتحديد الترتيب. S01 سوف يبدأ قبل S02, وهلم جرا.
تستطسع ان تستعمل /etc/rc2.d بدلاً من /etc/rc3.d.

استخداماً أداة الــ chkconfig:

$ chkconfig {SERVICE_NAME} on

وإذا كنت ترغب في تمكينه على مستويات تشغيل معينة (runlevels), استعمل خيار الــ --level. مثال:

$ chkconfig {SERVICE_NAME} on --level 3

لتعطيل الخدمة:

استخداماً أداة الــ update-rc.d:

$ update-rc.d -f {SERVICE_NAME} remove

اعلم انك, ستحتاج ان تستعمل خيار الــ -f اذا ملف الــ /etc/init.d موجود.

أو فقط قم بإزالة الإرتباطات الرمزية (يدويًا):

$ rm /etc/rc3.d/*{SERVICE_NAME}

او:

$ rm /etc/rc2.d/*{SERVICE_NAME}

استخداماً أداة الــ chkconfig:

$ chkconfig {SERVICE_NAME} off

وإذا كنت ترغب في تعطيله على مستويات تشغيل معينة (runlevels), استعمل خيار الــ --level. مثال:

$ chkconfig {SERVICE_NAME} off --level 3

Upstart is an event-based replacement for the traditional init daemon – the method by which several Unix-like computer operating systems perform tasks when the computer is started. It was written by Scott James Remnant, a former employee of Canonical Ltd.

Source: Wikipedia

لسرد الخدمات:

$ initctl list

لبدء الخدمة:

$ initctl start {SERVICE_NAME}

او:

$ start {SERVICE_NAME}

لإعادة تشغيل الخدمة:

$ initctl restart {SERVICE_NAME}

او:

$ restart {SERVICE_NAME}

لإيقاف الخدمة:

$ initctl stop {SERVICE_NAME}

او:

$ stop {SERVICE_NAME}

للحصول على حالة الخدمة:

$ initctl status {SERVICE_NAME}

او:

$ status {SERVICE_NAME}

لتمكين الخدمة:

عادة ، يتم تمكينها افتراضيًا. ولكن في حالة عدم حدوث ذلك ، أو إذا كنت ترغب في التغيير عند بدئها وأين لا تبدأ ، فستحتاج إلى تعديل /etc/init/{SERVICE_NAME}.conf ثم قم بإضافة أو تعديل الخطوط التي تبدأ مع Start و Stop. مثلاً:

$ start on runlevel [23]
$ stop on runlevel [!23]

لتعطيل الخدمة:

$ echo manual | sudo tee /etc/init/{SERVICE_NAME}.override

لاحظ أنه ، حيث سيوقف الــ Manual المقطع Upstart من تحميل الخدمة تلقائيًا في التمهيد التالي. أيّ خدمة بنهاية. override لها الأسبقية على ملف الخدمة الأصلي. ستتمكن فقط من بدء الخدمة يدويًا بعد ذلك. إذا كنت لا تريد ذلك ، ببساطة احذف .override.

أو قم بتعطيله يدويًا. بتعديل {SERVICE_NAME} .conf الموجود ضمن / etc / init /. ثم قم بالتعليق على جميع الأسطر التي تبدأ ب Start On.

ولكن، اذا تريد ان تمنعها اطلاقاً، حتى لا تبدأ اطلاقاً، افعل كالآتي:

$ mv /etc/init/{SERVICE_NAME}.conf /etc/init/{SERVICE_NAME}.conf.disabled

runit is an init scheme for Unix-like operating systems that initializes, supervises, and ends processes throughout the operating system. Runit is a reimplementation of the daemontools process supervision toolkit that runs on the Linux, Mac OS X, *BSD, and Solaris operating systems. Runit features parallelization of the start up of system services, which can speed up the boot time of the operating system.

Runit is an init daemon, so it is the direct or indirect ancestor of all other processes. It is the first process started during booting, and continues running until the system is shut down.

Source: Wikipedia

لسرد الخدمات:

لسرد الخدمات المتاحة:

$ ls /etc/sv/

لسرد جميع الخدمات المُمَكنة:

$ ls /var/service/

لبدء الخدمة:

$ sv up {SERVICE_NAME}

او:

$ sv u {SERVICE_NAME}

لإعادة تشغيل الخدمة:

$ sv restart {SERVICE_NAME}

او:

$ sv t {SERVICE_NAME}

لإيقاف الخدمة:

$ sv down {SERVICE_NAME}

او:

$ sv d {SERVICE_NAME}

للحصول على حالة الخدمة:

$ sv status {SERVICE_NAME}

او:

$ sv s {SERVICE_NAME}

للحصول على الحالات الحالية لجميع الخدمات المُمَكنة:

$ sv status /var/service/*

لتمكين الخدمة:

$ ln -s /etc/sv/service_name /var/service/

يمكنك ان تمنع خدمة ممكّنة من البدء تلقائيًا في عملية التمهيد ، عن طريق إنشاء ملف فارغ يسمى Down في / etc / sv / {SERVICE_NAME} /. مثلاً:

$ touch /etc/sv/{SERVICE_NAME}/down

للتراجع عن ذلك ، ما عليك سوى ا إزالة الملف Down. كالآتي:

$ rm -v /etc/sv/{SERVICE_NAME}/down

لتعطيل الخدمة:

$ rm /var/service/{SERVICE_NAME}

On Unix-like systems, OpenRC is a dependency-based init. Since 0.25 OpenRC includes openrc-init, which can replace /sbin/init.

OpenRC is the default init system of Gentoo, Alpine Linux and other Linux distributions, which means that the software packages and daemons of those distributions support it, coming with or using the available scripts. As well as Linux, OpenRC can also be used on several BSD systems. It was created by a NetBSD developer, who started the Gentoo/FreeBSD project. TrueOS, a FreeBSD based system is also using OpenRC as its default in its default configuration.


لسرد الخدمات:

$ rc-status

لسرد الخدمات الفاشلة:

$ rc-status --crashed

لسرد الخدمات المتاحة:

$ rc-update -v show

او:

$ ls /etc/init.d/

لبدء الخدمة:

$ rc-service {SERVICE_NAME} start

او:

$ service {SERVICE_NAME} start

او:

$ /etc/init.d/{SERVICE_NAME} start

لإعادة تشغيل الخدمة:

$ rc-service {SERVICE_NAME} restart

او:

$ service {SERVICE_NAME} restart

او:

$ /etc/init.d/{SERVICE_NAME} restart

لتمكين الخدمة:

$ rc-update add {SERVICE_NAME}

لإيقاف الخدمة:

$ rc-service {SERVICE_NAME} stop

او:

$ service {SERVICE_NAME} stop

او:

$ /etc/init.d/{SERVICE_NAME} stop

للحصول على حالة الخدمة:

$ rc-service {SERVICE_NAME} status

او:

$ service {SERVICE_NAME} status

او:

$ /etc/init.d/{SERVICE_NAME} status

لتعطيل الخدمة:

$ rc-update del {SERVICE_NAME}

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني.

هذا الموقع يستخدم Akismet للحدّ من التعليقات المزعجة والغير مرغوبة. تعرّف على كيفية معالجة بيانات تعليقك.