سوف تتعلم بعض الأوامر لإدارة عمليات بدء تشغيل النظام (الخدمات). ما إذا كان Systemd
, SysV init
, Upstart
, runit
او OpenRC
.
اولاً اعلم ان:
- اذا رأيت
{SERVICE_NAME}
إنه متغير ومن المفترض أن يتم استبداله باسم خدمة فعلية ، مثلsshd
,apache2
,iptables
…… الخ. - Enabling a service، هذا يعني أن الخدمة تبدأ تلقائيًا في عملية التمهيد. و Disabling a service، هذا بعني عدم بدء تشغيله تلقائيًا في عملية التمهيد.
- جميع الأوامر المذكورة أدناه ، باستثناء عند سرد الخدمات أو سرد حالتها ، من المفترض أن تكون الجذر (
root
) أو تستعمل امر الــsudo
.
سيستم دي 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}