إدارة خدمة أو مجموعة من الخدمات على جهاز حاسوب Linux حديث يمكن أن تكون متعبة، إذا كنت غير متأكد من ما تفعله. لحسن الحظ، يغطي لك نظام Ubuntu Systemctl لإدارة الخدمات على جهاز حاسوب Linux.
في هذا البرنامج التعليمي، ستتعلم كيفية إدارة خدمات Systemd على جهاز حاسوب Ubuntu من خلال تشغيل أوامر مختلفة باستخدام systemctl
.
هل أنت مستعد؟ حان وقت التنقيب!
المتطلبات المسبقة
سيكون هذا البرنامج التعليمي عرضًا توضيحيًا عمليًا ولكنه لا يتطلب أدوات خاصة، طالما أنك على Ubuntu 16 أو نسخة أحدث، يمكنك البدء. يستخدم هذا البرنامج التعليمي نسخة Ubuntu 20.04.3 LTS للعروض التوضيحية.
ما هو Ubuntu Systemctl؟
قبل تشغيل أوامر Ubuntu systemctl، تعرف على ما هو Systemctl أولاً. Systemctl هو أداة سطر أوامر للتحكم وإدارة systemd وخدمات النظام.
ببساطة، يُعد Systemctl لوحة تحكم أو مدير خدمة لنظام init systemd لتهيئة المكونات بعد تمهيد نواة Linux. يعتبر Systemctl مجموعة من المكتبات والسجلات والأدوات التي يمكنك استخدامها لإدارة الخدمات.
لإدارة الخدمات بشكل فعال، تعرف على حالات الخدمة المختلفة كما يلي:
- تم تمكينه – يشير إلى أن الخدمة مكونة لتبدأ عند بدء تشغيل النظام.
- معطل – يشير إلى أن الخدمة مكونة لا تبدأ عند بدء تشغيل النظام.
- نشط – يشير إلى أن الخدمة تعمل حاليًا.
- غير نشط – يشير إلى أن الخدمة غير مشغّلة حاليًا ولكن قد تبدأ عندما يحاول بعض التطبيقات بدء تشغيل تلك الخدمة.
قائمة جميع الخدمات
الآن بعد معرفة الحالات المختلفة للخدمات، ربما ترغب في رؤية قائمة بجميع الخدمات على جهاز Ubuntu الخاص بك. يقدم قائمة جميع الخدمات مجموعة من المعلومات التي تُعِدَّك لإدارة الخدمات.
افتح الطرفية الخاصة بك وقم بتشغيل الأمر التالي لعرض جميع وحدات الخدمة (list-units
) (نشطة، تعمل، خرجت، أو فشلت) مع تعيين الخدمة كنوع الوحدة (--type=service
).
اختر أيًا من الخدمات المدرجة ترغب في إدارتها لاحقًا في هذا البرنامج التعليمي واحرص على تدوين اسم الـ وحدة (على سبيل المثال، apache2). اضغط على مفتاح المسافة للتمرير لأسفل، أو اضغط على مفتاح “Q” للخروج من الأمر.
على فكرة، إليك دليل جيد عن برمجة قواقع Linux.

تسجيل الخدمات مع حالة محددة
بدلاً من سرد جميع الخدمات، ربما ترغب في تقليص قائمة الخدمات. إذا كنت ترغب في ذلك، يمكن أن يكون إضافة معامل --state
هو الحل، حيث يقوم بتصفية الخدمات ذات الحالة المحددة التي تحددها.
قم بتشغيل أحد الأوامر التالية لسرد جميع الخدمات النشطة (--type=service --state=active
، سواء كانت قيد التشغيل أم قد انتهت.

بالمثل، لسرد الخدمات التي انتهت أو هي قيد التشغيل فقط، قم بتغيير قيمة الحالة من active
إلى إما running
أو exited
، كما هو موضح في الأوامر أدناه:


سرد الخدمات الممكّنة
بالإضافة إلى سرد الخدمات النشطة والتي تعمل والتي انتهت، يمكنك أيضًا سرد الخدمات الممكّنة والمعطلة عبر توجيه أمر grep
.
قم بتشغيل أحد الأوامر التالية لسرد (list-unit-files
) الخدمات disabled
أو enabled
(--type=service
).
تنبيه بخصوص خدمة ممكّنة، كما هو موضح أدناه، حيث ستحتاج إليها لاحقًا لتعطيل خدمة، ولكن يستخدم هذا البرنامج التعليمي acpid.service للعرض التوضيحي. acpid هو ديمون قابل للتوسيع يدعم واجهة التكوين والطاقة المتقدمة (ACPI) events.

عرض خصائص الخدمة
بالإضافة إلى عرض الخدمات، قد ترغب في التحقق من خصائص الخدمة. الحصول على رؤية لخصائص الخدمة يفيد في عمليات استكشاف الأخطاء وإصلاحها، والمعلمات للعملية، أو سلوك إعادة التشغيل.
قم بتشغيل الأمر أدناه لعرض خصائص الخدمة (acpid.service
) في تنسيق key=value.

الآن، إذا كنت تبحث فقط عن خاصية محددة للخدمة، يمكنك تمرير العلم -p
مع اسم الخاصية.
قم بتشغيل الأمر أدناه لعرض خاصية الخدمة (acpid.service
) MainPID
.

إدارة خدمة محددة
بمجرد إنهاء أساسيات عرض الخدمات، حان الوقت لإدارة خدمة محددة (فردية) عبر تشغيل أوامر systemctl stop
و start
.
خدمة Apache (apache2) تُستخدم للعروض التوضيحية التالية، ولكن يمكنك إدارة الخدمة التي قمت بتحديدها في قسم “سرد جميع الخدمات” بحرية. ولكن قبل أن تتوقف أو تبدأ خدمة، يجب عليك التحقق أولاً من حالة الخدمة.
قم بتشغيل الأمر أدناه في الطرفية لعرض معلومات خدمة apache2
بشكل مفصل مثل status
.
أدناه، يمكنك رؤية أن خدمة apache2 نشطة وتعمل.

لا يلزم إدخال كلمة مرور sudo لعرض حالة الخدمة حيث أنك لا تقوم بتغيير حالة الخدمة. ولكن إذا قمت ببدء، أو إيقاف، أو إعادة تشغيل الخدمة، يجب عليك إضافة sudo قبل الأمر وإدخال كلمة المرور لـ sudo.
إيقاف خدمة
ربما ترغب في إيقاف خدمة تم تركها تعمل في الخلفية. في هذه الحالة، الأمر systemctl stop
هو ما تحتاجه. قم بتشغيل الأمر systemctl
أدناه لإيقاف خدمة apache2
.
إذا كنت تفضل إيقاف عدة خدمات في نفس الوقت، حدد كل خدمة مفصولة بفراغ، مثل هذا:
sudo systemctl stop sshd apache2
. في هذا الأمر، ستقوم بإيقاف خدمتي sshd و apache2 في آن واحد.
الآن قم بتشغيل الأمر systemctl status
كما فعلت سابقًا للتحقق مما إذا كانت خدمة apache2 قد توقفت.
يمكنك رؤية أدناه أن حالة خدمة apache2 تغيرت إلى inactive (dead)، مما يشير إلى أن الخدمة قد توقفت.

بدء خدمة
الآن كيف تبدأ خدمة إذا لاحظت أنها لا تعمل على الإطلاق؟ تقوم بتشغيل أمر مشابه لأمر إيقاف الخدمة، وهو الأمر systemctl start
. قم بتشغيل الأمر أدناه لـ بدء
خدمة apache2
.
مثل إيقاف عدة خدمات، يمكنك أيضًا بدء عدة خدمات في سطر واحد من الأمر. استبدل الأمر
stop
بالأمرstart
مثل هذا:sudo systemctl start sshd apache2
الآن قم بتشغيل الأمر systemctl status
مرة أخرى للتحقق مما إذا كانت خدمة apache2
تعمل.
إذا رأيت الحالة active (running) كما هو موضح أدناه، فإنك جاهز تمامًا لأن الخدمة عادت للعمل.

إذا كنت تفضل إعادة تشغيل الخدمة مباشرة دون الحاجة إلى إيقافها أولاً. إذاً، اختر الأمر
systemctl restart
بدلاً من ذلك، مثل هذا:sudo systemctl restart apache2
تمكين أو تعطيل الخدمة
ربما هناك خدمة معينة تفضل إما ببدء تشغيلها أو منع بدء تشغيلها عند تشغيل النظام. إذاً، تشغيل الأمر systemctl
enable
أو disable
هو الطريقة الأفضل.
الأمر الفرعي enable
يتيح لك تكوين إعدادات البدء الافتراضية على نظامك، بينما يمنع الأمر الفرعي disable
تشغيل خدمة عند بدء تشغيل النظام.
تشغيل الأمر systemctl
أدناه لتعطيل الخدمة (acpid.service
) التي لاحظتها في قسم “عرض الخدمات الممكّنة”. أدخل كلمة مرور sudo لتفويض تشغيل الأمر.

الآن، نظرًا لدعم خدمة acpid.service لـ تكوين النظام وإدارة الطاقة (OSPM)؛ يجب عليك إعادة تمكينها. الأمر لتمكين الخدمة مشابه لتعطيل الخدمة.
قم بتنفيذ الأمر systemctl
أدناه لتمكين acpid.service
. يقوم هذا الأمر بتسجيل الخدمة مرة أخرى بإعدادات البداية الافتراضية على نظامك.

الختام
في هذا البرنامج التعليمي، قد أدركت كيف يمكنك بسرعة إيقاف تشغيل أو تشغيل أو إعادة تشغيل الخدمات عن طريق تشغيل أوامر Ubuntu systemctl
. كما تعلمت أن الأمر systemctl
يتيح لك إدارة ليس فقط خدمة واحدة ولكن عدة خدمات في وقت واحد.
مع هذه المعرفة الجديدة، لماذا لا تقوم بتوتين التحكم في الخدمات في نظام Ubuntu الخاص بك؟