PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : مفهوم systemd در معماری لینوکس



hoss-far
May 3rd, 2019, 20:51
با توجه به اینکه معمولا سرویس نرم افزارهای لینوکسی از طریق systemd کنترل می شود،دانستن نحوه ی کار با Systemd نقش تعیین کننده ای در نصب و یا عیب یابی مشکل اجرای نرم افزارها در لینوکس خواهد داشت.


Systemd چیست؟

systemd در سال های اخیر به تدریج جایگزین init و از سال 2015 به عنوان یکی از از اجزای اصلی توزیع های لینوکس به رسمیت شناخته شد. هدف systemd یکپارچه کردن مدیریت تمام سرویس های (daemon) لینوکس است.حرف d در آخر واژه ی systemd از واژهی daemon گرفته شده است.


مهم ترین کاربرد های سیستم دی :
سیستم دی (units) یونیت های مختلفی اعم از service.- socket - device - mount - automount - swap - target - path -timer
دارد که هر کدوم از این یونیت ها وظایف خاص خود را دارند. در اینجا ما تنها به دوتا از این یونیت ها که مهم تر هستند می پردازیم.

1-یونیت تارگت ( target unit) :
وظیفه ی لود کردن تمام سرویس های لینوکس در هنگام بوت شدن سیستم عامل را دارد.این مهم در ورژن های قدیمی تر لینوکس بر عهده ی init بود.اما در ورژن های جدید systemd جایگزین init شده است. در یونیت تارگت شما می توانید تارگت مورد نظر خود را در هنگام بوت سیستم عامل انتخاب کنید.به عنوان مثال اگر تارگت گرافیکال ( graphical.target) را انتخاب کنید بعد از ریبوت، سیستم عامل تمام سرویس هایی را که برای تم گرافیکی لازم است run می کند. و یا اگر تارگت مولتی یوزر( multi-user.target) را انتخاب کنید سیستم عامل تمام سرویس هایی را که برای تم مولتی یوزر مناسب است run می کند.
تارگت ها در ورژن قدیمی تر init با واژه ی run level نام گذاری می شدند: run level 1 , run level 2 و...

مسیر تنظیمات تارگت سیستم دی :
برای دیدن تمام تارگت ها در سیستم دی و تغییر تنظیمات هر یک از آن ها به مسیر
/user/lib/systemd/system
بروید. و برای دیدن تارگت دفالت روی سیتم خود دستور زیر را تایپ کنید:
systemctl get-default
متداول ترین تارگت ، مولتی یوزر برای حالت غیر گرافیکی و تارگت گرافیکال برای حالت دسکتاپ هست.
برای تغییر تارگت دیفالت دستور زیر را تایپ کیند:
[systectl set-default [yourtarget

2- یونیت سرویس( service unit ) :
هر نرم افزار لینوکسی شامل یک یونیت فایل (file unit) می تواند باشد که در آن ضرورت ها و چگونگی اجرای آن برنامه برای systemd توضیح داده شده است.به عنوان مثال قبل از اجرای سرویس برنامه مورد نظر چه سرویس های دیگری باید run شوند و یا اینکه آیا برنامه در هنگام بوت به صورت اتوماتیک run شود یا نه.و یا از کدوم سوکت برای اتصال به برنامه مورد نظر استفاده شود.تمام این موارد در یونیت فایل مشخص شده است.اکثر برنامه ی لینوکسی دارای یک یونیت فابل می باشند،اگر هم نبودند کاربر خود می تواند یک یونیت فایل برای برنامه بنویسد.
سیستم دی با برقرار کردن یک سیمبلیک لینک ( symbolic link) به محلی که یونیت فابل برنامه مورد نظر در آنجا قرار دارد، قبل از اجرای برنامه موردنظر، یونیت فابل را اجرا می کند.
سیمبلیک لینک ها در مسیر تارگتی که در هنگام بوت سیستم عامل اجرا شده است،ذخیره شده اند:
/etc/systemd/system/multi-user.target.wants/
چند کامند پر کاربرد:
[systemctl start [your-service
[systemctl status [yourservice
[systemctl disable [yourservice : لینک سیمبلیک سرویس مورد نظر را از یونیت سرویس حذف می کند.
[systemctl enable [yourservice: لینک سیمبلیک سرویس مورد نظر را به یونیت سرویس اضافه می کند.


مزایای و معایب systemd :

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

برای مشاوره در زمینه کانفیگ تخصصی سرور و سیستم عامل (https://magicservice.computer) با ما درارتباط باشید.

mehrzad_1
May 6th, 2019, 11:41
سلام و ممنون از مطلب خوبتون
ما داریم از اوبونتو 14 استفاده می کنیم، این مورد systemd به چه کاربردی برای ما دارد؟

hoss-far
May 6th, 2019, 13:29
سلام و ممنون از مطلب خوبتون
ما داریم از اوبونتو 14 استفاده می کنیم، این مورد systemd به چه کاربردی برای ما دارد؟
سلام.systemd در ورژن های جدیدتر ubuntu وجود داره و در ورژن 14 از ابزارهای دیگه استفاده می شه

1eng.ir
May 6th, 2019, 14:18
+ حروف بزرگ
+ غلط املایی


برای دیدن تمام تارگت ها در سیستم دی و تغییر تنظیمات هر یک از آن ها به مسیر
/user/lib/system/system



/usr/lib/systemd/system


برای تغییر تارگت دیفالت دستور زیر را تایپ کیند:
[Systectl set-default [yourtarget



systemctl set-default

hoss-far
May 6th, 2019, 18:18
+ حروف بزرگ
+ غلط املایی





/usr/lib/systemd/system




systemctl set-default

به دلیل کپی نیودن مطلب و تایپ دستی کامندها ، حروف ، بزرگ نوشته شده بود و حرف d در مسیر فایل (address path) جا افتاد.
ممنون بابت تذکر.

1eng.ir
May 6th, 2019, 19:29
How To Use Systemctl to Manage Systemd Services and Units
https://www.digitalocean.com/community/tutorials/how-to-use-systemctl-to-manage-systemd-services-and-units