دليل المبتدئين في Systemd: قسم الأوامر

دليل البدء في Systemd: الجزء العملي

دليل المبتدئين في Systemd: قسم الأوامر

المؤلف: رون ييفنغ

التاريخ: 7 مارس 2016

Systemd هو أداة نظام لينوكس تستخدم لبدء التشغيل. عملية الحراسة أصبح تكوينًا قياسيًا لمعظم التوزيعات.

تقدم هذه المقالة الاستخدامات الأساسية له، مقسمة إلى جزئين. اليوم سنقدم الأوامر الرئيسية له، المقالة التالية تقديم كيفية استخدامها في الممارسة العملية. img

أولاً، المصدر

في التاريخ، إقلاع لينكس استمر في استخدام init عملية.

تستخدم الأوامر أدناه لبدء الخدمة.

هذه الطريقة لها عيبان.

أولاً، وقت التشغيل طويل. init تبدأ العمليات بشكل تسلسلي، حيث لا يبدأ العملية التالية إلا بعد الانتهاء من العملية السابقة.

ثانياً، بدء تشغيل البرنامج النصي معقد. init العملية تقوم فقط بتنفيذ سكربت الإطلاق، دون الانشغال بأي أمور أخرى. يحتاج السكربت إلى معالجة مختلف الحالات بنفسه، مما يجعل السكربت غالبًا طويلاً.

ثانياً، نظرة عامة على Systemd

تم إنشاء Systemd لحل هذه المشكلات. هدف تصميمه هو تقديم مجموعة كاملة من الحلول لبدء النظام وإدارته.

وفقًا لعادات لينكس، الحروف d هو اختصار لعملية الحراسة (daemon). معنى اسم Systemd هو أنه يهدف إلى حماية النظام بأكمله.

img

( الصورة أعلاه لمؤلف Systemd ) Lennart Poettering

استخدام Systemd يعني أنه لم يعد هناك حاجة لاستخدام init تم استبدال Systemd بـ initd ، ليصبح أول عملية في النظام (معرّف العملية يساوي 1)، بينما تكون العمليات الأخرى عمليات تابعة له.

الأمر أعلاه يعرض إصدار Systemd.

Systemd 的优点是功能强大,使用方便,缺点是体系庞大,非常复杂。事实上,现在还有很多人反对使用 Systemd,理由就是它过于复杂,与操作系统的其他部分强耦合,违反"keep simple, keep stupid"的 فلسفة يونكس img

(الصورة أعلاه هي مخطط هيكل Systemd)

ثالثاً، إدارة النظام

Systemd ليس أمرًا واحدًا، بل هو مجموعة من الأوامر التي تتعلق بجميع جوانب إدارة النظام.

3.1 systemctl

systemctl هو الأمر الرئيسي لـ Systemd، والذي يُستخدم لإدارة النظام.

3.2 systemd-analyze

systemd-analyze الأمر المستخدم لعرض وقت بدء التشغيل.

3.3 hostnamectl

hostnamectl الأمر يُستخدم لعرض معلومات المضيف الحالي.

3.4 localectl

localectl الأمر المستخدم لعرض إعدادات التوطين.

3.5 timedatectl

timedatectl الأمر المستخدم لعرض إعدادات المنطقة الزمنية الحالية.

3.6 loginctl

loginctl الأمر يُستخدم لعرض المستخدمين الحاليين المسجلين الدخول.

وحدة

4.1 المعنى

يمكن لـ Systemd إدارة جميع موارد النظام. تُعرف الموارد المختلفة باسم وحدة (Unit).

الوحدة تنقسم إلى 12 نوعًا.

  • وحدة الخدمة: خدمات النظام
  • وحدة الهدف: مجموعة تتكون من عدة وحدات
  • وحدة الجهاز: الأجهزة الصلبة
  • نقطة تحميل: نقطة تثبيت نظام الملفات
  • وحدة التحميل التلقائي
  • وحدة المسار: ملف أو مسار
  • وحدة النطاق: عملية خارجية ليست مدفوعة بواسطة Systemd
  • وحدة الشريحة: مجموعة العمليات
  • وحدة اللقطة: لقطة Systemd، يمكن التبديل إلى لقطة معينة.
  • وحدة المقبس: مقبس الاتصال بين العمليات
  • وحدة التبديل: ملف التبديل
  • وحدة المؤقت: مؤقت

systemctl list-units يمكنك استخدام الأمر لعرض جميع الوحدات الحالية في النظام.

4.2 حالة الوحدة

systemctl status الأمر يستخدم لعرض حالة النظام وحالة وحدة واحدة.

باستثناء status أمر، systemctl كما تم توفير ثلاث طرق بسيطة للتحقق من الحالة، والتي تستخدم بشكل أساسي في جمل التحقق داخل السكربت.

4.3 إدارة الوحدة

بالنسبة للمستخدمين، الأوامر الأكثر استخدامًا هي تلك أدناه، والتي تُستخدم لبدء وإيقاف الوحدات (التي تركز بشكل أساسي على الخدمة).

4.4 العلاقات الاعتمادية

توجد علاقة اعتماد بين الوحدات: اعتماد A على B يعني أن Systemd عند بدء تشغيل A سيبدأ أيضًا تشغيل B.

systemctl list-dependencies قم بإدراج جميع التبعيات لوحدة معينة.

في ناتج الأمر أعلاه، هناك بعض التبعيات من نوع Target (انظر أدناه)، والتي لا يتم عرضها بشكل افتراضي. إذا كنت ترغب في توسيع Target، ستحتاج إلى استخدام --all معاملات.

خمسة، ملف إعداد الوحدة

5.1 نظرة عامة

كل وحدة تحتوي على ملف تكوين، يخبر Systemd كيفية بدء تشغيل هذه الوحدة.

النظامd الافتراضي من الدليل /etc/systemd/system/ قراءة ملف الإعدادات. ومع ذلك، فإن معظم الملفات الموجودة فيه هي روابط رمزية تشير إلى الدلائل. /usr/lib/systemd/system/ ملف التكوين الحقيقي مخزن في أي دليل.

systemctl enable يتم استخدام الأمر لإنشاء علاقة ارتباط رمزي بين الدليلين المذكورين أعلاه.

إذا تم تعيين بدء التشغيل في ملف التكوين، systemctl enable الأمر يعادل تفعيل بدء التشغيل.

مقابل ذلك، systemctl disable الأمر يستخدم لإلغاء العلاقة بين الدلائلين، وهو يعادل إلغاء بدء التشغيل.

امتداد ملف التكوين هو نوع الوحدة، مثل sshd.socket إذا تم حذفها، فإن نظام Systemd الافتراضي هو .service لذا sshd سيتم فهمه على أنه sshd.service

5.2 حالة ملف التكوين

systemctl list-unit-files الأمر المستخدم لعرض جميع ملفات التكوين.

سيقوم هذا الأمر بإخراج قائمة.

تظهر هذه القائمة حالة كل ملف تعريف، وهناك أربعة أنواع.

  • مفعل: تم إنشاء رابط بدء التشغيل
  • معطل: لم يتم إنشاء رابط بدء التشغيل
  • ثابت: لا يوجد هذا الملف التكويني [Install] جزء (لا يمكن تنفيذه) ، يمكن استخدامه فقط كاعتماد لملفات التكوين الأخرى.
  • تم حظر إنشاء روابط بدء التشغيل لهذا الملف التكويني.

يرجى ملاحظة أنه لا يمكن تحديد ما إذا كانت الوحدة تعمل من حالة ملف التكوين. يجب تنفيذ ما تم ذكره سابقًا. systemctl status أمر.

بمجرد تعديل ملف التكوين، يجب عليك إعادة تحميل ملف التكوين في SystemD ثم إعادة التشغيل، وإلا فلن تُطبق التعديلات.

5.3 تنسيق ملف التكوين

ملف التكوين هو مجرد ملف نصي عادي، يمكن فتحه باستخدام محرر نصوص.

systemctl cat يمكنك استخدام الأمر لعرض محتوى ملف التكوين.

يمكننا أن نرى من المخرجات أعلاه أن ملف التكوين مقسم إلى عدة كتل. السطر الأول من كل كتلة هو اسم مميز يتم تمثيله بأقواس مربعة، مثل [Unit] يرجى ملاحظة أن أسماء كتل وحقول ملف التكوين حساسة لحالة الأحرف.

كل كتلة تحتوي على مجموعة من أزواج القيم والمفاتيح الموصولة بواسطة علامات المساواة.

5.4 كتل ملف التكوين

[Unit] الكتلة عادة ما تكون الكتلة الأولى في ملف التكوين، وتستخدم لتعريف بيانات التعريف لوحدة (Unit)، بالإضافة إلى تكوين العلاقة مع وحدات أخرى. الحقول الرئيسية لها كما يلي.

  • Dsecription وصف موجز
  • Documentation عنوان الوثيقة
  • Requires إذا كانت الوحدات الأخرى التي يعتمد عليها الوحدة الحالية غير قيد التشغيل، فسيفشل بدء الوحدة الحالية.
  • Wants إذا كانت الوحدات الأخرى المرتبطة بالوحدة الحالية غير قيد التشغيل، فلن تفشل الوحدة الحالية في الإقلاع.
  • BindsTo و Requires على غرار ذلك، إذا خرجت الوحدة المحددة، فسيتسبب ذلك في توقف الوحدة الحالية عن التشغيل.
  • Before إذا كان يجب بدء الوحدة المحددة في هذا الحقل، فيجب أن تبدأ بعد الوحدة الحالية.
  • After إذا كانت الوحدة المحددة في هذا الحقل تحتاج أيضًا إلى التشغيل، فيجب تشغيلها قبل الوحدة الحالية.
  • Conflicts الوحدة المحددة هنا لا يمكن تشغيلها مع الوحدة الحالية في نفس الوقت.
  • Condition... : يجب تلبية الشروط التي يجب أن تحققها الوحدة الحالية، وإلا فلن تعمل.
  • Assert... : يجب أن تستوفي وحدة التشغيل الحالية الشروط المطلوبة، وإلا ستظهر رسالة فشل في الإقلاع.

[Install] عادةً ما تكون الكتلة الأخيرة من ملف التكوين، وتستخدم لتعريف كيفية التشغيل وما إذا كان يجب بدء التشغيل عند تشغيل الجهاز. الحقول الرئيسية لها كالتالي.

  • WantedBy قيمته هي هدف واحد أو أكثر، وعندما تكون الوحدة الحالية مفعلة، سيتم وضع الارتباط الرمزي. /etc/systemd/system تحت الفهرس باستخدام اسم الهدف + .wants في الدليل الفرعي المكون من اللاحقات
  • RequiredBy قيمته هي هدف واحد أو أكثر، وعندما يتم تفعيل الوحدة الحالية، سيتم إدخال الرابط الرمزي. /etc/systemd/system تحت الفهرس باستخدام اسم الهدف + .required في الدليل الفرعي المكون من اللاحقات
  • Alias : الأسماء المستعارة المتاحة لتشغيل الوحدة الحالية
  • Also عند تفعيل الوحدة الحالية (التفعيل)، سيتم تفعيل وحدات أخرى في نفس الوقت.

[Service] يتم استخدام الكتلة لتكوين الخدمة، فقط وحدات من نوع الخدمة لديها هذه الكتلة. الحقول الرئيسية لها كما يلي.

  • Type : تحديد سلوك العملية عند بدء التشغيل. لديها القيم التالية.
  • Type=simple القيمة الافتراضية، التنفيذ ExecStart الأمر المحدد، بدء العملية الرئيسية
  • Type=forking : إنشاء عملية فرعية من العملية الأب بطريقة fork، وبعد الإنشاء ستخرج العملية الأب على الفور.
  • Type=oneshot عملية واحدة، سينتظر Systemd حتى تخرج الخدمة الحالية قبل أن يستمر في التنفيذ.
  • Type=dbus : الخدمة الحالية تبدأ عبر D-Bus
  • Type=notify : تم تشغيل الخدمة الحالية، وسيتم الإبلاغ. Systemd تابع التنفيذ.
  • Type=idle إذا كانت هناك مهام أخرى قد اكتملت، فستعمل الخدمة الحالية فقط.
  • ExecStart : أمر تشغيل الخدمة الحالية
  • ExecStartPre الأوامر التي يتم تنفيذها قبل بدء الخدمة الحالية
  • ExecStartPost الأمر الذي يتم تنفيذه بعد بدء الخدمة الحالية
  • ExecReload : الأمر الذي يتم تنفيذه عند إعادة تشغيل الخدمة الحالية
  • ExecStop أمر يتم تنفيذه عند إيقاف الخدمة الحالية
  • ExecStopPost إيقاف الأمر الذي يتم تنفيذه بعد توقف الخدمة
  • RestartSec : عدد الثواني بين إعادة تشغيل الخدمة الحالية
  • Restart تعريف الحالات التي سيقوم فيها Systemd بإعادة تشغيل الخدمة الحالية، والقيم المحتملة تشمل always (دائمًا إعادة التشغيل) on-success on-failure on-abnormal on-abort on-watchdog
  • TimeoutSec تعريف عدد الثواني التي ينتظرها Systemd قبل إيقاف الخدمة الحالية
  • Environment تعيين متغير البيئة

يرجى الرجوع إلى القائمة الكاملة لحقول ملف تكوين الوحدة. الوثائق الرسمية

الهدف

عند تشغيل الكمبيوتر، يحتاج إلى تشغيل عدد كبير من الوحدات. إذا كان من الضروري تحديد كل وحدة تحتاج إلى تشغيلها في كل مرة، فمن الواضح أن ذلك سيكون غير مريح للغاية. الحل الذي تقدمه Systemd هو الهدف (Target).

简单说,Target 就是一个 Unit 组,包含许多相关的 Unit 。启动某个 Target 的时候,Systemd 就会启动里面所有的 Unit。从这个意义上说,Target这个概念类似于"状态点",启动某个 Target 就好比启动到某种状态。

تقليدي init في وضع التشغيل، هناك مفهوم RunLevel، والذي يشبه وظيفة Target. والاختلاف هو أن RunLevel متعارضة، فلا يمكن تشغيل عدة RunLevel في نفس الوقت، بينما يمكن تشغيل عدة Target في نفس الوقت.

تتوافق Target مع مستوى التشغيل التقليدي كما يلي.

إنه مع init الاختلافات الرئيسية بين العمليات كالتالي.

(1) مستوى التشغيل الافتراضي (في /etc/inittab تم استبدال إعدادات الملف) الآن بـ Target الافتراضي، الموقع هو /etc/systemd/system/default.target عادةً ما ترتبط الرموز بالـ graphical.target واجهة رسومية أو multi-user.target (سطر الأوامر المتعدد المستخدمين).

(2) موقع سكربت التشغيل كان سابقًا /etc/init.d الدليل، روابط رمزية إلى أدلة RunLevel مختلفة (مثل /etc/rc3.d /etc/rc5.d الآن يتم تخزينه في /lib/systemd/system و /etc/systemd/system فهرس.

(3) موقع ملف التكوين سابقًا init ملف تكوين العملية هو /etc/inittab تُخزَّن ملفات تكوين الخدمات المختلفة في /etc/sysconfig الفهرس. يتم تخزين ملفات التكوين الحالية بشكل رئيسي في /lib/systemd الفهرس، في /etc/systemd يمكن أن تتجاوز التعديلات في الدليل الإعدادات الأصلية.

٧. إدارة السجلات

يعمل Systemd على إدارة جميع سجلات بدء التشغيل لوحدات الخدمة بشكل موحد. الفائدة من ذلك هي أنه يمكنك فقط استخدام journalctl أمر لعرض جميع السجلات (سجلات النواة وسجلات التطبيقات). ملف تكوين السجلات هو /etc/systemd/journald.conf

journalctl وظيفة قوية، واستخدامها متعدد جداً.

(النهاية)

معلومات الوثيقة

لقد استخدمت مؤخرًا:

جمع قائمة الطعام QQ