درک و اجرای SystemD

ساخت وبلاگ

اصول اساسی سیستم اولیه SystemD را بیاموزید: نحوه پیکربندی آن و استفاده از آن برای مدیریت سیستم.

درک سیستم

SystemD یک سیستم و مدیر خدمات برای لینوکس است ، سازگار با اسکریپت های SYSV و LSB Init. SystemD فراهم می کند:

  • قابلیت های موازی سازی تهاجمی
  • برای شروع خدمات از سوکت و فعال سازی D-Bus استفاده می کند
  • شروع به تقاضا از Daemons ، فرآیندها را با استفاده از CGroup Linux پیگیری می کند
  • پشتیبانی از عکس فوری و بازگرداندن وضعیت سیستم
  • نقاط نصب و خودکار را حفظ می کند
  • منطق کنترل خدمات مبتنی بر وابستگی معامله ای را اجرا می کند.

دستور SystemCtl ابزار اصلی برای مدیریت SystemD است. این ترکیب عملکرد سرویس Sysvinit و دستورات ChkConfig را در یک ابزار واحد که می توانید برای فعال کردن و غیرفعال کردن خدمات به طور دائم یا فقط برای جلسه فعلی استفاده کنید ، ترکیب می کند.

SystemD واحدهای به اصطلاح را مدیریت می کند ، که نمایانگر منابع و خدمات سیستم هستند. این لیست زیر انواع واحدی را نشان می دهد که SystemD می تواند مدیریت کند:

سرویس

یک سرویس در سیستم ، از جمله دستورالعمل های شروع ، راه اندازی مجدد و متوقف کردن سرویس.

سوکت شبکه مرتبط با یک سرویس.

دستگاهی که به طور خاص با SystemD اداره می شود.

یک نقطه کوهستانی که با SystemD اداره می شود.

یک مونتاژ به طور خودکار روی بوت نصب شده است.

مبادله فضای روی سیستم.

یک نقطه هماهنگ سازی برای واحدهای دیگر. معمولاً برای شروع خدمات فعال شده در بوت استفاده می شود.

مسیری برای فعال سازی مبتنی بر مسیر. به عنوان مثال ، شما می توانید خدمات را بر اساس وضعیت یک مسیر خاص شروع کنید ، مانند این که وجود دارد یا نه.

یک تایمر برای برنامه ریزی فعال سازی واحد دیگر.

عکس فوری از حالت فعلی SystemD. معمولاً پس از ایجاد تغییرات موقت در SystemD ، برای بازگشت به عقب استفاده می شود.

محدودیت منابع از طریق گره های گروه کنترل لینوکس (CGroups).

اطلاعات مربوط به رابط های اتوبوس SystemD. معمولاً برای مدیریت فرآیندهای سیستم خارجی استفاده می شود.

شروع ، توقف و پرس و جو سرویس های SystemD

شما می توانید کارهای مختلف مدیریتی را برای کنترل خدمات SystemD با استفاده از دستور SystemCTL انجام دهید. در زیر مجموعه ای از دستورات مثال برای نشان دادن نحوه استفاده از SystemCtl برای مدیریت خدمات SystemD است.

پیش نیازها

شما به عنوان کاربر با مجوزهای سطح سرپرست وارد سیستم شده اید.

روش

دستورات زیر خدمات FOO را کنترل می کنند:

  • بلافاصله یک سرویس را فعال کنید:
# systemctl شروع foo
# SystemCtl Stop foo
# systemctl راه اندازی مجدد foo
# systemctl status foo
# systemctl foo را فعال کنید
# SystemCtl foo را غیرفعال می کند
# SystemCtl Mask foo
# systemctl foo قابل فعال است

اطلاعات مربوطه

  • برای اطلاعات بیشتر Man SystemCtl را اجرا کنید.

اصلاح خدمات SystemD موجود

این مثال نحوه اصلاح یک سرویس موجود را نشان می دهد. اصلاح خدمات در داخل/etc/systemd/system ، در یک پرونده واحد یا در یک زیر مجموعه به نام سرویس ذخیره می شود. به عنوان مثال ، این روش سرویس HTTPD را اصلاح می کند.

پیش نیازها

  • شما به عنوان کاربر با مجوزهای سطح سرپرست وارد سیستم شده اید.
  • شما یک سرور HTTPD پیکربندی شده از طریق SystemD دارید.

روش

  1. خدمات SystemD را می توان با استفاده از دستور ویرایش SystemCtl اصلاح کرد.
# systemctl ویرایش httpd. service

این یک پرونده Override /etc/systemd/system/httpd. service. d/override. conf ایجاد می کند و آن را در ویرایشگر متن خود باز می کند. هر چیزی که در این پرونده قرار داده اید به پرونده سرویس موجود اضافه می شود.

[سرویس] راه اندازی مجدد = همیشه راه اندازی مجدد = 30

برای جایگزینی گزینه ای که می تواند چندین بار تنظیم شود ، ابتدا باید پاک شود ، در غیر این صورت پرونده Override بار دوم گزینه را اضافه می کند.

[سرویس] execstart = execstart =

# SystemCtl دوباره راه اندازی HTTPD

برای جایگزینی کامل (به جای اضافه کردن/اصلاح) یک فایل سرویس موجود ، از ویرایش SystemCt l-Full ، به عنوان مثال استفاده کنید. ویرایش SystemCt l-Full httpd. Service. با این کار /etc/systemctl/system/httpd. service ، که به جای پرونده سرویس موجود استفاده می شود ، ایجاد می شود.

اطلاعات مربوطه

  • برای کسب اطلاعات بیشتر در مورد پارامترهای مورد استفاده در این روش ، به پارامترهای سرویس مشترک مراجعه کنید.

ایجاد خدمات جدید SystemD

این مثال نحوه ایجاد یک فایل واحد برای یک سرویس سفارشی را نشان می دهد. پرونده های واحد سفارشی در/etc/systemd/system/و دارای پسوند . Service هستند. به عنوان مثال ، یک سرویس FOO سفارشی از فایل واحد واحد واحد از /etc/systemd/system/foo. service استفاده می کند.

پیش نیازها

  • شما به عنوان کاربر با مجوزهای سطح سرپرست وارد سیستم شده اید.

روش

این روش یک فایل پیکربندی اساسی برای کنترل سرویس FOO ایجاد می کند.

  1. فایل پیکربندی جدید را ایجاد و ویرایش کنید:
# nano /etc/systemd/system/foo. service
  1. بخش [واحد] اطلاعات اساسی در مورد سرویس را ارائه می دهد. سرویس FOO از پارامترهای زیر استفاده می کند:

توضیحات رشته ای که واحد را توصیف می کند. SystemD این توضیحات را در کنار نام واحد در رابط کاربر نشان می دهد. پس از تعریف رابطه با واحد دوم. اگر واحد را فعال کنید ، SystemD آن را فقط پس از دوم فعال می کند. به عنوان مثال ، سرویس FOO ممکن است به اتصال به شبکه نیاز داشته باشد ، به این معنی که خدمات FOO NETWORK. Target را به عنوان یک شرط بعد از آن مشخص می کند.

بخش [واحد] حاصل به این شکل است:

[واحد] توضیحات = سرویس سفارشی من بعد از = network. target

نوع نوع سرویس SystemD را تعریف می کند. در این مثال ، سرویس FOO یک سرویس ساده است که بدون هیچ گونه توجه ویژه ای ، سرویس را شروع می کند. برای شروع سرویس ، دستور اجرا را اجرا کنید. این شامل مسیر کامل به دستور و آرگومان ها برای اصلاح سرویس است.

بخش [سرویس] حاصل به این شکل است:

[سرویس] نوع = Exectart ساده =/usr/bin/sleep Infinity

Wantedby تعریف می کند که کدام سرویس باعث ایجاد سرویس سفارشی در صورت فعال بودن SystemCtl می شود. این بیشتر برای شروع سرویس سفارشی در بوت استفاده می شود. در این مثال ، Foo. Service از Multi-User. Target استفاده می کند ، که Foo. Service را شروع می کند وقتی SystemD Multi-Useer. Target را در بوت بارگیری می کند.

[واحد] توضیحات = سرویس سفارشی من بعد از = network. target [service] نوع = Exectart ساده =/usr/bin/sleep Infinity [نصب] Wantedby = multi-user. target

فایل را ذخیره کنید.

# SystemCtl Daemon-Reload
# systemctl شروع foo
$ systemctl وضعیت foo ● foo. service-سرویس سفارشی من بارگذاری شده: بارگذاری شده (/etc/systemd/system/foo. service ؛ استاتیک ؛ فروشنده از پیش تعیین شده: غیرفعال) فعال: فعال (در حال اجرا) از زمان THU 2017-12-14 14:09: 12 AEST ؛6s Ago PID اصلی: 31837 (خواب) وظایف: 1 (محدودیت: 4915) cGroup: /system. slice/foo. Service └=31837/usr/bin/خواب بی نهایت دسامبر 14:09:12 سیستم dansmachine [1]:سرویس سفارشی من را شروع کردم.

اطلاعات مربوطه

  • برای کسب اطلاعات بیشتر در مورد پارامترهای مورد استفاده در این روش ، به پارامترهای سرویس مشترک مراجعه کنید.

تبدیل خدمات sysvinit به SystemD

نسخه های قدیمی تر فدورا از اسکریپت های sysvinit برای مدیریت خدمات استفاده می کنند. در این بخش برخی از دستورالعمل ها در مورد نحوه تبدیل اسکریپت Sysvinit به یک معادل SystemD ارائه شده است.

پیش نیازها

  • شما به عنوان کاربر با مجوزهای سطح سرپرست وارد سیستم شده اید.
  • شما یک اسکریپت Sysvinit سفارشی برای تبدیل به پیکربندی SystemD دارید.

روش

  1. سطوح RunLe در اسکریپت Sysvinit خود را مشخص کنید. این معمولاً با دستورالعمل ChkConfig در بخش اظهار نظر در ابتدای فیلمنامه تعریف می شود. به عنوان مثال ، موارد زیر نشان می دهد که سرویس از RunLevels 3 ، 4 و 5 استفاده می کند:
# chkconfig: 235 20 80

SystemD به جای RunLevels از اهداف استفاده می کند. از جدول در تبدیل خدمات Sysvinit به SystemD استفاده کنید تا سطح RunLevels را به اهداف نقشه برداری کنید. در این مثال ، RunLevels 2 ، 3 و 5 همه سطوح چند کاربر هستند ، بنابراین سرویس SystemD می تواند از موارد زیر استفاده کند:

[نصب] Wantedby = multi-user. target

اگر سرویس Custom SystemD را فعال کنید تا از Boot (SystemCtl فعال کنید Foo. Service) را شروع کنید ، SystemD هنگام بارگذاری Multi-User. Target در زمان بوت ، سرویس را بارگیری می کند.

[واحد] توضیحات = سرویس سفارشی من بعد از = network. target
شروع ()

در این مثال ، دستور/usr/bin/myservice دستور سرویس سفارشی است که با گزین ه-d daonize تنظیم شده است. برای استفاده از این دستور ، پارامتر ExectStart را تنظیم کنید:

[سرویس] execstart =/usr/bin/myservic e-d
راه اندازی مجدد ()

در این مثال ، دستور/usr/bin/myservice دستور سرویس سفارشی است و سرویس را با استفاده از زیر مجموعه بارگیری مجدد بارگیری می کند. برای استفاده از این دستور ، پارامتر ExecrEload را تنظیم کنید:

[سرویس] ExecReload =/usr/bin/myservice بارگیری مجدد

از طرف دیگر ، شما می توانید ExecReload را حذف کرده و از رفتار پیش فرض استفاده کنید ، که سرویس را از بین می برد و دوباره آن را شروع می کند.

راه اندازی مجدد ()

در این مثال ، دستور/usr/bin/myservice دستور سرویس سفارشی است و با استفاده از زیرمجموعه خاموش ، سرویس را با لطف متوقف می کند. پارامتر ExectStop را برای استفاده از این دستور تنظیم کنید:

[Service] ExecTop =/usr/bin/myservice خاموش

از طرف دیگر ، می توانید Exectop را حذف کرده و از رفتار پیش فرض استفاده کنید ، که این سرویس را از بین می برد.

اطلاعات مربوطه

  • برای کسب اطلاعات بیشتر در مورد پارامترهای مورد استفاده در این روش ، به پارامترهای سرویس مشترک مراجعه کنید.

پارامترهای خدمات مشترک

پارامترهای واحد

این بخش شامل پارامترهایی است که می توانید در بخش [واحد] یک سرویس استفاده کنید. این پارامترها برای سایر واحدهای SystemD مشترک است.

این لیست یک نسخه خلاصه است. برای لیست کامل این پارامترها و توضیحات آنها ، Man Systemd. Unit را اجرا کنید.

شرح

یک رشته با فرم آزاد که خدمات را توصیف می کند.

یک لیست جدا از فضا از مستندات ارجاعی URIS برای این سرویس یا پیکربندی آن. پذیرفته شده فقط از انواع زیر استفاده می شود: http: // ، https: // ، پرونده: ، اطلاعات: ، مرد :.

وابستگی های مورد نیاز را به سایر خدمات پیکربندی می کند. اگر این سرویس فعال شود ، واحدهای ذکر شده در اینجا نیز فعال می شوند. اگر یکی از خدمات وابسته نتواند فعال شود ، SystemD این سرویس را شروع نمی کند. این گزینه ممکن است بیش از یک بار مشخص شود یا می توانید چندین واحد جدا از فضا را مشخص کنید.

مشابه نیازهای لازم ، به جز واحدهای شکست خورده هیچ تاثیری در سرویس ندارند.

مشابه نیازهای لازم ، به جز متوقف کردن واحدهای وابسته نیز سرویس را متوقف می کند.

مشابه نیازهای لازم ، به جز واحدهای وابسته به توقف و راه اندازی مجدد نیز سرویس را متوقف و مجدداً راه اندازی می کند.

یک لیست جدا از فضا از نامهای واحد که در صورت اجرای ، باعث نمی شود سرویس اجرا نشود.

یک لیست جدا از فضا از نام های واحد که ترتیب وابستگی بین خدمات را پیکربندی می کند.

یک لیست جدا از فضا از نام واحد که هنگام ورود این سرویس به حالت شکست خورده فعال می شوند.

پارامترها را نصب کنید

این بخش شامل پارامترهایی است که می توانید در بخش [نصب] یک سرویس استفاده کنید. این پارامترها برای سایر واحدهای SystemD مشترک است.

این لیست یک نسخه خلاصه است. برای لیست کامل این پارامترها و توضیحات آنها ، Man Systemd. Unit را اجرا کنید.

نام مستعار

یک لیست جدا از فضا از نامهای اضافی که این سرویس باید تحت آن نصب شود. نامهای ذکر شده در اینجا باید همان پسوند (یعنی نوع) نام پرونده را داشته باشند.

خدمات را به عنوان وابسته به سرویس دیگر تعریف می کند. این معمولاً هدف را برای اجرای یک سرویس فعال تعریف می کند. این گزینه ها مشابه با نیاز و خواسته ها در بخش [واحدها] است.

واحدهای اضافی برای نصب یا حذف این سرویس نصب یا حذف شده است.

پارامترهای سرویس

این بخش شامل پارامترهایی است که می توانید در بخش [سرویس] یک واحد خدمات استفاده کنید. این پارامترها فقط برای واحدهای سرویس SystemD خاص هستند.

این لیست یک نسخه خلاصه است. برای لیست کامل این پارامترها و توضیحات آنها ، Man Systemd. Unit را اجرا کنید.

نوع

نوع راه اندازی فرآیند را برای این سرویس سرویس پیکربندی می کند:

  • ساده - سرویس به عنوان فرآیند اصلی شروع می شود. این پیش فرض است.
  • Forking - این سرویس فرآیندهای جعلی را فراخوانی می کند و به عنوان بخشی از Daemon اصلی اجرا می شود.
  • Oneshot - مشابه ساده ، به جز فرایند باید قبل از شروع SystemD خدمات پیگیری.
  • DBU - مشابه ساده ، به جز Daemon نام اتوبوس D-Bus را به دست می آورد.
  • اطلاع رسانی - مشابه ساده ، به جز Daemon یک پیام اعلان را با استفاده از SD_NOTIFY یا یک تماس معادل پس از راه اندازی ارسال می کند.
  • بیکار - مشابه ساده ، به جز اجرای سرویس تا زمان ارسال همه مشاغل فعال به تأخیر می افتد.

باقیمانده

یک مقدار بولی که مشخص می کند که آیا این سرویس حتی اگر تمام فرآیندهای آن از آن خارج شود ، فعال خواهد بود. پیش فرض به شماره.

یک مقدار بولی که مشخص می کند آیا SystemD باید PID اصلی یک سرویس را حدس بزند اگر نمی توان آن را با اطمینان مشخص کرد. این گزینه نادیده گرفته می شود مگر اینکه نوع = چنگال تنظیم شود و pidfile تنظیم نشده باشد. پیش فرض به بله.

یک پرونده مطلق با اشاره به پرونده PID این Daemon. استفاده از این گزینه برای خدماتی که در آن نوع = چنگال است توصیه می شود. SystemD پس از راه اندازی سرویس ، PID فرآیند اصلی Daemon را می خواند. SystemD به پرونده پیکربندی شده در اینجا نمی نویسد ، اگرچه پس از خاموش شدن سرویس ، پرونده را حذف می کند.

یک نام اتوبوس D-Bus برای رسیدن به این سرویس. این گزینه برای خدماتی که در آن نوع = DBUS اجباری است ، اجباری است.

دستورات و استدلال ها هنگام شروع سرویس اجرا می شوند.

دستورات اضافی که قبل یا بعد از دستور در Exectart اجرا می شوند.

دستورات و آرگومان ها برای اجرای مجدد سرویس.

دستورات و آرگومان برای اجرای سرویس در هنگام متوقف شدن سرویس.

دستورات اضافی برای اجرای پس از توقف سرویس.

زمان چند ثانیه قبل از شروع مجدد سرویس.

زمان در ثانیه منتظر شروع سرویس است.

زمان در ثانیه انتظار برای متوقف کردن سرویس است.

یک کوتاه برای پیکربندی هر دو TimeoutStartSec و TimeoutStopsec به طور همزمان.

حداکثر زمان در ثانیه برای اجرای سرویس. عبور از Infinity (پیش فرض) برای پیکربندی محدودیت زمان اجرا.

پیکربندی می کند که آیا هنگام خروج از روند سرویس ، سرویس را مجدداً راه اندازی می کند ، یا به یک زمان بر می رسد:

  • نه - سرویس مجدداً راه اندازی نمی شود. این پیش فرض است.
  • در موفقیت - فقط هنگامی که فرآیند سرویس به طور تمیز از کار خارج می شود ، مجدداً راه اندازی کنید (کد خروج 0).
  • On-Failure-فقط هنگامی که فرآیند سرویس به طور تمیز از آن خارج نشود (کد خروجی گره-صفر) را مجدداً راه اندازی کنید.
  • در غیر طبیعی - اگر فرآیند با سیگنال خاتمه یابد یا هنگامی که یک زمان وقوع رخ می دهد ، مجدداً راه اندازی کنید.
  • در ABORT - در صورت خروج از فرآیند به دلیل سیگنال UNCUDED که به عنوان وضعیت خروج تمیز مشخص نشده است ، مجدداً راه اندازی کنید.
  • همیشه - همیشه راه اندازی مجدد کنید.

نقشه برداری از سطوح به اهداف

اهداف SystemD هدف مشابهی با سطح Runlevels Sysvinit را ارائه می دهد اما کمی متفاوت عمل می کند. هر هدف به جای یک شماره نام دارد و هر یک از آنها یک هدف خاص را ارائه می دهد. SystemD برخی از اهداف را با وراثت کلیه خدمات هدف دیگر و اضافه کردن خدمات اضافی به آن پیاده سازی می کند. برخی از اهداف SystemD از سطوح مشترک Sysvinit تقلید می کنند ، به این معنی که می توانید اهداف را با دستور آشنا Telinit RunLevel تغییر دهید. RunLevels یک هدف خاص را در نصب وانیل فدورا (0 ، 1 ، 3 ، 5 و 6) اختصاص داده است ، یک نقشه برداری 1: 1 با یک هدف خاص SystemD دارند.

با این حال ، این مورد در مورد RunLevels 2 و 4 تعریف شده توسط کاربر نیست.، یک دایرکتوری/etc/systemd/system/ $ yourtarget. wants را تهیه کنید ، و سپس خدمات اضافی را برای فعال کردن آن دایرکتوری Symlink کنید.

در زیر نقشه برداری از سطح RunLevels Sysvinit به اهداف SystemD است.

پرسش و پاسخ بورس...
ما را در سایت پرسش و پاسخ بورس دنبال می کنید

برچسب : نویسنده : ماندانا اصلانی بازدید : <-PostHit-> تاريخ : پنجشنبه 19 مرداد 1402 ساعت: 14:26