مقدمة
في السنوات الأخيرة، تحولت توزيعات Linux تدريجيًا من أنظمة التشغيل الأخرى إلى systemd
. توفر مجموعة أدوات systemd
نموذجًا سريعًا ومرنًا للتهيئة لإدارة الجهاز بأكمله منذ الإقلاع.
في هذا الدليل، سنقدم لك نظرة سريعة على الأوامر الأكثر أهمية التي سترغب في معرفتها لإدارة خادم يعمل بـ systemd
. يجب أن تعمل هذه الأوامر على أي خادم ينفذ systemd
(أي إصدار من نظام التشغيل في أوبونتو 15.04 أو أعلى، دبيان 8، سنتوس 7، فيدورا 15 أو أحدث). دعونا نبدأ.
إدارة الوحدات الأساسية
الكائن الأساسي الذي يديره ويتصرف فيه systemd
هو “الوحدة”. يمكن أن تكون الوحدات من أنواع عديدة، ولكن النوع الأكثر شيوعًا هو “الخدمة” (المشار إليها بملف وحدة ينتهي بـ .service
). لإدارة الخدمات على خادم يعمل بـ systemd
، فإن الأداة الرئيسية لدينا هي أمر systemctl
.
لدينا كل الأوامر العادية لنظام التشغيل الأساسي تتطابق مع أفعال مكافئة باستخدام أمر systemctl
. سنستخدم وحدة الخدمة nginx.service
كمثال (ستحتاج إلى تثبيت Nginx باستخدام مدير الحزم الخاص بك للحصول على هذا الملف الخدمي).
على سبيل المثال، يمكننا بدء الخدمة عن طريق كتابة:
يمكننا إيقافه مرة أخرى عن طريق الكتابة:
لإعادة تشغيل الخدمة، يمكننا كتابة:
لمحاولة إعادة تحميل الخدمة دون التأثير على الوظائف العادية، يمكننا كتابة:
تمكين أو تعطيل الوحدات
بشكل افتراضي، لا تُبدأ معظم ملفات وحدة systemd تلقائيًا عند التمهيد. لتكوين هذه الوظيفة، تحتاج إلى “تمكين” الوحدة. يربط هذا الأمر الوحدة بـ “هدف” التمهيد معين، مما يتسبب في تنشيطه عند بدء تشغيل هذا الهدف.
لتمكين خدمة للبدء تلقائيًا عند التمهيد، اكتب:
إذا كنت ترغب في تعطيل الخدمة مرة أخرى، اكتب:
الحصول على نظرة عامة على حالة النظام
هناك الكثير من المعلومات التي يمكننا الحصول عليها من خادم systemd للحصول على نظرة عامة على حالة النظام.
على سبيل المثال، للحصول على جميع ملفات الوحدة التي قامت systemd بتسجيلها كـ “نشطة”، اكتب (يمكنك في الواقع ترك list-units
لأن هذا سلوك systemctl
الافتراضي):
لإدراج جميع الوحدات التي قام systemd
بتحميلها أو محاولة تحميلها في الذاكرة، بما في ذلك تلك التي ليست نشطة حاليًا، أضف التبديل --all
:
لعرض جميع الوحدات المثبتة في النظام، بما في ذلك تلك التي لم يحاول systemd
تحميلها في الذاكرة، اكتب:
عرض المعلومات الأساسية للسجل
A systemd
component called journald
collects and manages journal entries from all parts of the system. This is basically log information from applications and the kernel.
لرؤية جميع سجلات الحدث، بدءًا من أقدم إدخال، اكتب:
بشكل افتراضي، سيُظهر لك هذا الإدخالات من التمهيد الحالي والسابق إذا تم تكوين journald
لحفظ سجلات التمهيد السابق. تقوم بعض التوزيعات بتمكين هذا بشكل افتراضي، بينما تمنع البعض الآخر (لتمكين هذا، قم بتحرير ملف /etc/systemd/journald.conf
وتعيين الخيار Storage=
إلى “persistent”، أو قم بإنشاء الدليل الدائم عبر كتابة sudo mkdir -p /var/log/journal
).
إذا كنت ترغب فقط في رؤية سجلات السجل من التمهيد الحالي، أضف علامة -b
:
لرؤية فقط رسائل النواة، مثل تلك التي يتم تمثيلها عادة بواسطة dmesg
، يمكنك استخدام علامة -k
:
مرة أخرى، يمكنك تقييد هذا فقط للتمهيد الحالي عن طريق إلحاق العلامة -b
:
استعلام وحدات الولايات والسجلات
على الرغم من أن الأوامر أعلاه أعطتك وصولًا إلى حالة النظام العامة، يمكنك أيضًا الحصول على معلومات حول حالة الوحدات الفردية.
لرؤية نظرة عامة على الحالة الحالية لوحدة ما، يمكنك استخدام الخيار status
مع أمر systemctl
. سيظهر لك هذا ما إذا كانت الوحدة نشطة، ومعلومات حول العملية، وآخر إدخالات السجل:
لرؤية جميع إدخالات السجل للوحدة المعنية، قم بإعطاء الخيار -u
مع اسم الوحدة إلى أمر journalctl
:
كما هو الحال دائمًا، يمكنك تحديد الإدخالات لتشغيل النظام الحالي عن طريق إضافة العلامة -b
:
فحص الوحدات وملفات الوحدات
الآن، تعرف كيفية تعديل حالة وحدة عن طريق بدء تشغيلها أو إيقافها، وتعرف كيفية عرض المعلومات الخاصة بالحالة والسجل للحصول على فكرة عما يحدث مع العملية. ومع ذلك، لم نرَ بعد كيفية فحص جوانب أخرى من الوحدات وملفات الوحدات.
A unit file contains the parameters that systemd
uses to manage and run a unit. To see the full contents of a unit file, type:
لرؤية شجرة الاعتماد لوحدة (التي ستحاول systemd
تنشيطها عند بدء تشغيل الوحدة)، اكتب:
سيُظهر هذا الوحدات التابعة، مع وحدات target
موسعة بشكل تكراري. لتوسيع جميع الوحدات التابعة بشكل تكراري، قم بتمرير العلم --all
:
وأخيرًا، لرؤية التفاصيل على مستوى منخفض من إعدادات الوحدة على النظام، يمكنك استخدام الخيار show
:
سيمنحك هذا قيمة كل معلمة يتم إدارتها بواسطة systemd
.
تعديل ملفات الوحدة
إذا كنت بحاجة إلى إجراء تعديل على ملف وحدة، يسمح لك systemd
بإجراء التغييرات من خلال أمر systemctl
نفسه بحيث لا يتعين عليك الانتقال إلى الموقع الفعلي على القرص.
لإضافة مقطع ملف وحدة، الذي يمكن استخدامه لإضافة أو تجاوز الإعدادات في ملف الوحدة الافتراضي، قم ببساطة بالاستدعاء edit
على الوحدة:
إذا كنت تفضل تعديل محتوى كامل ملف الوحدة بدلاً من إنشاء مقطع، قم بتمرير العلم --full
:
بعد تعديل ملف الوحدة، يجب إعادة تحميل عملية systemd
ذاتيًا لالتقاط التغييرات:
استخدام الأهداف (مستويات التشغيل)
وظيفة أخرى لنظام التهيئة الأولية هي تحويل الخادم نفسه بين حالات مختلفة. يُشير أنظمة التهيئة الأولية التقليدية عادةً إلى هذه باسم “مستويات التشغيل”، مما يسمح للنظام بأن يكون في مستوى تشغيل واحد فقط في أي وقت.
في systemd
، تُستخدم “الأهداف” بدلاً من ذلك. الأهداف هي نقاط تزامن بشكل أساسي يمكن للخادم استخدامها لجلب الخادم إلى حالة محددة. يمكن ربط ملفات الخدمة والوحدات الأخرى بالهدف، ويمكن أن تكون العديد من الأهداف نشطة في نفس الوقت.
لعرض جميع الأهداف المتاحة على النظام الخاص بك، اكتب:
لعرض الهدف الافتراضي الذي يحاول systemd
الوصول إليه عند التمهيد (الذي بدوره يبدأ جميع ملفات الوحدات التي تشكل شجرة الاعتمادات لتلك الهدف)، اكتب:
يمكنك تغيير الهدف الافتراضي الذي سيتم استخدامه عند التمهيد باستخدام الخيار set-default
:
لرؤية الوحدات المرتبطة بالهدف، يمكنك كتابة:
يمكنك تعديل حالة النظام للانتقال بين الأهداف باستخدام الخيار isolate
. سيتم ذلك بإيقاف أي وحدات غير مرتبطة بالهدف المحدد. تأكد من أن الهدف الذي تقوم بعزله لا يتوقف عن أي خدمات أساسية:
إيقاف أو إعادة تشغيل الخادم
لبعض الحالات الرئيسية التي يمكن للنظام الانتقال إليها، تتوفر اختصارات. على سبيل المثال، لإيقاف تشغيل الخادم، يمكنك كتابة:
إذا كنت ترغب في إعادة تشغيل النظام بدلاً من ذلك، يمكن القيام بذلك عن طريق كتابة:
يمكنك الإقلاع في وضع الإنقاذ عن طريق كتابة:
يرجى ملاحظة أن معظم أنظمة التشغيل تتضمن اختصارات تقليدية لهذه العمليات بحيث يمكنك ببساطة كتابة sudo poweroff
أو sudo reboot
دون استخدام systemctl
. ومع ذلك، لا يمكن ضمان إعداد هذا على جميع الأنظمة.
الخطوات التالية
حتى الآن، يجب أن تكون تعرف الأساسيات حول كيفية إدارة خادم يستخدم systemd
. ومع ذلك، هناك المزيد لتعلمه كلما احتاجت احتياجاتك للتوسع. فيما يلي روابط لدليل معلومات أعمق حول بعض المكونات التي ناقشناها في هذا الدليل:
- كيفية استخدام Systemctl لإدارة خدمات ووحدات Systemd
- كيفية استخدام Journalctl لعرض وتلاعب بسجلات Systemd
- فهم وحدات Systemd وملفات الوحدات
من خلال تعلم كيفية استغلال مزايا نظام البدء الخاص بك، يمكنك التحكم في حالة أجهزتك وإدارة خدماتك وعملياتك بسهولة أكبر.