تفاوت service و systemctl

1.25K viewsلینوکسcentos restart service status system systemctl ubuntu
0

سلام.

دوستان برای ریستارت یک سرویس از مثلا service httpd restart استفاده میشه.

حالا جدیدا خیلی میشنویم که میگن از systemctl استفاده کنیم.

میخواستم ببینم چه فرقی بین این دوتا دستور هست؟

خیلی هم متشکر

0

با سلام

در واقع نمیشه گفت تفاوت بین دو دستور و بهتره بگیم تفاوت دو پکیج مدیریت سرویس های سیستم عامل که با نام های با نام های SysVinit و Systemd شناخته میشن.

SysVinit یک سیستم سنتی جهت مدیریت سرویس های سیستم عامل در هنگام بوت می باشد. در این سیستم و به هنگام بوت سیستم عامل اولین پروسه پس از لود کرنل ، یعنی init ، اجرا می گردد. با اجرای init چندین و چند اسکریپت نوشته شده جهت استارت شدن سرویس های مختلف مانند Networking، SSH ، NFS و غیره اجرا می شوند.

SysVinit دارای یک مشکلی بزرگ می باشد : مدیریت سرویس ها از این طریق نیازمند Tuning اضافه و در برخی موارد پیچیده می باشد.به عنوان مثال سرویس NFS را در نظر بگیرید.استارت شدن این سرویس پیش از سرویس Networking به معنی است چرا که برای عملکرد صحیح NFS ابتدا می بایست از تنظیمات شبکه سرور اطمینان حاصل نمود تا در مرحله بعد Mount Point های تعریف شده توسط NFS قابل دسترس باشند.اسکریپت های استارت شده در هنگام بوت بوسیله سیستم شماره گذاری از S10 تا S99 الویت گذاری شده و به ترتیت و پیش سر هم اجرا می شوند.

این در حالیست که Systemd دارای ساختار Dependency Based و طراحی موازی می باشد.یعنی جهت استارت یک سرویس تنها نیاز می باشد که Dependency آن رعایت شود.در مثال قبل و پس از استارت شدن سرویس Networking ، سرویس های NFS ، Samba و SSH همگی می توانند بصورت همزمان استارت شوند.

مزیت دوم استفاده از Systemd ، سیستم On Demand تعبیه شده در آن می باشد.بدین صورت که به عنوان مثال تا زمانیکه درخواست Connection از طریق SSH به سرور صورت نگرفته باشد ، نیازی به استارت شدن سرویس SSH نمی باشد.بوسیله این ویژگی زمان بوت سیستم عامل بطور چشم گیری کوتاه تر شده و در یک سیستم با محیط گرافیکی(مثلا Gnome) این زمان صرف اجرا و استارت شدن پروسه هایی می شوند که محیط GUI را مدیریت می کنند.

جایگزین های متعددی نظیر Upstart، procd ، Eproc ، minit و … برای SysVinit معرفی و عرضه شده اند که هیچ کدام محبوبیت Systemd را کسب نکردند.رقیب جدی Systemd را می توان Upstart معرفی نمود که نرم افزار مدیریت سرویس ها در اوبوتو می باشد که پشتیبانی از آن در آخرین نسخه اوبونتو(۱۶٫۰۴) متوقف و این توزیع لینوکسی نیز برای مدیریت سرویس های خود از این پس Systemd را جایگزین Upstart نموده است.
Systemd ، فراتر از مدیریت سرویس ها
Systemd را می توان فراتر از یک پکیج مدیریت سرویس ها در لینوکس دانست.مجموعه ای از عملکردهای مدیریت سیستم عامل در قالب یک مجموعه نرم افزار با نام Systemd به دنیای لینوکس پا گذاشته که هدف آن بالا بردن کارایی سیستم عامل و مدیریت آسان تر آن می باشد.

این مجموعه نرم افزار شامل ابزارهای متعددی می باشد.از آن جمله می توان به logind ،ابزاری جهت مدیریت لاگین های کاربران و journald که جهت مدیریت لاگ های سرویس های موجود بر روی سرور از آن استفاده می شود ، اشاره کرد.ضمنا Systemd کدهای پروژه udev را نیز در خود جای داده است.udev وظیفه مدیریت فایل های Virtual Device موجود در مسیر /dev و ثبت وقایع در هنگام Plug و Unplug شدن Device ها را برعهده دارد.

در ادامه به معرفی بخش های دیگر این مجموعه نرم افزاری می پردازیم.

Systemd-consoled

جایگزینی برای Virtual Terminal در لینوکس بوده که در سال ۲۰۱۵ توسط David Hermann از پروشه Systemd حذف شد.

networkd

مدیریت کارت شبکه توسط این کامپوننت انجام می پذیرد.در ابتدا تنها امکان تنظیمات پایه توسط این کامپوننت وجود داشته که از جولای ۲۰۱۴ امکان مدیریت تخصیص آی پی از طریق DHCP Server و Vlaning نیز به آن اضافه شده است.

timedated

امکان مدیریت تاریخ و زمان و همچنین Timezone توسط این کامپوننت به Systemd اضافه شده است.

Systemd-boot

Boot Manager تعبیه شده در Systemd که پیش تر با نام gummiboot عرضه می شده است.
تفاوت SysVinit و Systemd در یک نگاه
در بخش قبل گفته شد که برای مدیریت فایل های لاگ در Systemd از journald استفاده می شود.شایان ذکر است که برای مدیریت سرویس ها از دستور systemctl کمک خواهیم گرفت

در تصویر زیر بصورت اجمالی تفاوت مدیریت سرویس ها در Systemd و SysVinit قابل مشاهده می باشد.

دسته ها

آمار سوال

  • تغییرات
  • بازدیدیک بار
  • پاسخ ها1 پاسخ