الطريقة الصحيحة لاستخدام Ubuntu systemctl للتحكم في systemd

إدارة خدمة أو مجموعة من الخدمات على جهاز حاسوب 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).

systemctl list-units --type=service

اختر أيًا من الخدمات المدرجة ترغب في إدارتها لاحقًا في هذا البرنامج التعليمي واحرص على تدوين اسم الـ وحدة (على سبيل المثال، apache2). اضغط على مفتاح المسافة للتمرير لأسفل، أو اضغط على مفتاح “Q” للخروج من الأمر.

على فكرة، إليك دليل جيد عن برمجة قواقع Linux.

Listing All Services (active, running, exited, or failed)

تسجيل الخدمات مع حالة محددة

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

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

systemctl list-units --type=service --state=active
Listing Services on “active” State

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

systemctl --type=service --state=running
systemctl --type=service --state=exited
Listing Services on “running” State
Listing Services on “stopped” State

سرد الخدمات الممكّنة

بالإضافة إلى سرد الخدمات النشطة والتي تعمل والتي انتهت، يمكنك أيضًا سرد الخدمات الممكّنة والمعطلة عبر توجيه أمر grep.

قم بتشغيل أحد الأوامر التالية لسرد (list-unit-files) الخدمات disabled أو enabled (--type=service).

## قائمة جميع الخدمات الممكّنة
systemctl list-unit-files --type=service | grep enabled
## قائمة جميع الخدمات المعطلة
systemctl list-unit-files --type=service | grep disabled

تنبيه بخصوص خدمة ممكّنة، كما هو موضح أدناه، حيث ستحتاج إليها لاحقًا لتعطيل خدمة، ولكن يستخدم هذا البرنامج التعليمي acpid.service للعرض التوضيحي. acpid هو ديمون قابل للتوسيع يدعم واجهة التكوين والطاقة المتقدمة (ACPI) events.

Listing Enabled Services

عرض خصائص الخدمة

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

قم بتشغيل الأمر أدناه لعرض خصائص الخدمة (acpid.service) في تنسيق key=value.

systemctl show acpid.service
Showing Service Properties

الآن، إذا كنت تبحث فقط عن خاصية محددة للخدمة، يمكنك تمرير العلم -p مع اسم الخاصية.

قم بتشغيل الأمر أدناه لعرض خاصية الخدمة (acpid.service) MainPID.

systemctl show acpid.service -p MainPID
Showing Specific Service Property

إدارة خدمة محددة

بمجرد إنهاء أساسيات عرض الخدمات، حان الوقت لإدارة خدمة محددة (فردية) عبر تشغيل أوامر systemctl stop و start.

خدمة Apache (apache2) تُستخدم للعروض التوضيحية التالية، ولكن يمكنك إدارة الخدمة التي قمت بتحديدها في قسم “سرد جميع الخدمات” بحرية. ولكن قبل أن تتوقف أو تبدأ خدمة، يجب عليك التحقق أولاً من حالة الخدمة.

قم بتشغيل الأمر أدناه في الطرفية لعرض معلومات خدمة apache2 بشكل مفصل مثل status.

systemctl status apache2

أدناه، يمكنك رؤية أن خدمة apache2 نشطة وتعمل.

Viewing apache2 Service Status

لا يلزم إدخال كلمة مرور sudo لعرض حالة الخدمة حيث أنك لا تقوم بتغيير حالة الخدمة. ولكن إذا قمت ببدء، أو إيقاف، أو إعادة تشغيل الخدمة، يجب عليك إضافة sudo قبل الأمر وإدخال كلمة المرور لـ sudo.

إيقاف خدمة

ربما ترغب في إيقاف خدمة تم تركها تعمل في الخلفية. في هذه الحالة، الأمر systemctl stop هو ما تحتاجه. قم بتشغيل الأمر systemctl أدناه لإيقاف خدمة apache2.

sudo systemctl stop apache2

إذا كنت تفضل إيقاف عدة خدمات في نفس الوقت، حدد كل خدمة مفصولة بفراغ، مثل هذا: sudo systemctl stop sshd apache2. في هذا الأمر، ستقوم بإيقاف خدمتي sshd و apache2 في آن واحد.

الآن قم بتشغيل الأمر systemctl status كما فعلت سابقًا للتحقق مما إذا كانت خدمة apache2 قد توقفت.

systemctl status apache2

يمكنك رؤية أدناه أن حالة خدمة apache2 تغيرت إلى inactive (dead)، مما يشير إلى أن الخدمة قد توقفت.

Verifying if apache2 Service is Stopped

بدء خدمة

الآن كيف تبدأ خدمة إذا لاحظت أنها لا تعمل على الإطلاق؟ تقوم بتشغيل أمر مشابه لأمر إيقاف الخدمة، وهو الأمر systemctl start. قم بتشغيل الأمر أدناه لـ بدء خدمة apache2.

sudo systemctl start apache2

مثل إيقاف عدة خدمات، يمكنك أيضًا بدء عدة خدمات في سطر واحد من الأمر. استبدل الأمر stop بالأمر start مثل هذا: sudo systemctl start sshd apache2

الآن قم بتشغيل الأمر systemctl status مرة أخرى للتحقق مما إذا كانت خدمة apache2 تعمل.

systemctl status apache2

إذا رأيت الحالة active (running) كما هو موضح أدناه، فإنك جاهز تمامًا لأن الخدمة عادت للعمل.

Starting apache2 service

إذا كنت تفضل إعادة تشغيل الخدمة مباشرة دون الحاجة إلى إيقافها أولاً. إذاً، اختر الأمر systemctl restart بدلاً من ذلك، مثل هذا: sudo systemctl restart apache2

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

ربما هناك خدمة معينة تفضل إما ببدء تشغيلها أو منع بدء تشغيلها عند تشغيل النظام. إذاً، تشغيل الأمر systemctl enable أو disable هو الطريقة الأفضل.

الأمر الفرعي enable يتيح لك تكوين إعدادات البدء الافتراضية على نظامك، بينما يمنع الأمر الفرعي disable تشغيل خدمة عند بدء تشغيل النظام.

تشغيل الأمر systemctl أدناه لتعطيل الخدمة (acpid.service) التي لاحظتها في قسم “عرض الخدمات الممكّنة”. أدخل كلمة مرور sudo لتفويض تشغيل الأمر.

sudo systemctl disable acpid.service
Disabling a Service

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

قم بتنفيذ الأمر systemctl أدناه لتمكين acpid.service. يقوم هذا الأمر بتسجيل الخدمة مرة أخرى بإعدادات البداية الافتراضية على نظامك.

sudo systemctl enable acpid.service
Enabling a Service

الختام

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

مع هذه المعرفة الجديدة، لماذا لا تقوم بتوتين التحكم في الخدمات في نظام Ubuntu الخاص بك؟

Source:
https://adamtheautomator.com/ubuntu-systemctl/