اگر میخواهید درباره سیستمهای init بیشتر بدانید، ابتدا باید دستورات systemctl و service و تفاوتهای اساسی آنها را بدانید.
نکات کلیدی
- دستورات سرویس و systemctl در لینوکس حیاتی و بسیار شبیه به هم هستند و systemctl یک فرمان همه کاره تر و قدرتمندتر است.
- هر دو سرویس و systemctl به کاربران امکان پیکربندی و تعامل با سرویس های سیستم را می دهند، اما آنها به سیستم های اولیه متفاوتی تعلق دارند (به ترتیب SysVinit و systemd).
- سرویس بر روی فایل های سیستم اولیه در /etc/init.d کار می کند، در حالی که systemctl با فایل های /lib/systemd کار می کند. برای مدیریت موثر خدمات سیستم، آشنایی با هر دو دستور مهم است.
service و systemctl هر دو دستورات حیاتی و بسیار مشابه در لینوکس هستند. آنها به قدری شبیه هستند که به راحتی می توان تعجب کرد که اصلاً چه تفاوت هایی بین آنها وجود دارد – و آیا می توانید از این دو دستور به جای یکدیگر استفاده کنید.
دانستن جزئیات دقیق در مورد سرویس و systemctl به شما این امکان را می دهد که به طور یکپارچه با آنها کار کنید.
سرویس Command در لینوکس چیست؟
در لینوکس، فرمان سرویس یک اسکریپت wrapper است که به کاربران اجازه می دهد به راحتی پیکربندی کنند و با سرویس های سیستم تعامل داشته باشند. این قبل از systemd است و در درجه اول با اسکریپت های موجود در /etc/init.d کار می کند.
حتی اگر systemctl از اهمیت قبلی سرویس پیشی گرفت، از طریق بسیاری از ویژگیهای قدیمی همچنان مرتبط باقی میماند.
تغییر بین سیستم های اولیه سازی مرتبط – SysVinit به systemd – بحث برانگیز بود، اما افزایش چالش ها برای عملکرد سیستم init اصلی آن را ضروری می کرد.
systemd سرویسها را بهجای دنبالهای سریال بهصورت موازی شروع میکند و زمان راهاندازی آن را سریعتر از SysVinit میکند – و کنترل کمی پیچیدهتر شیاطین سیستم را از طریق رابط خط فرمان (CLI) ارائه میدهد.
دستور systemctl در لینوکس چیست؟
سیستمctl بسیار شبیه سرویس یک فرمان فوق العاده همه کاره است که به شما اجازه می دهد تا وضعیت سرویس های در حال اجرا بر روی سیستم لینوکس خود را فعال، بارگذاری مجدد، شروع، توقف و بررسی کنید.
systemctl به عنوان یک رابط کاربری آسان و قدرتمند برای پیکربندی فایلها در systemd عمل میکند – برای مثال، برای غیرفعال کردن یک سرویس در هنگام بوت با استفاده از systemctl فقط یک تا دو دستور لازم است.
systemctl با سیستم مقداردهی اولیه، SysVinit که عمدتاً با سرویس استفاده می شود، سازگار است. systemctl به عنوان جانشین مستقیم سرویس عمل نمی کند، اما از نظر ابزارهایی که برای مدیریت خدمات سیستم ارائه می دهد، بسیار متنوع تر است.
شما می توانید کارهایی مانند پوشاندن یا غیرفعال کردن یک سرویس را در یک یا دو خط انجام دهید.
تفاوت بین سرویس و systemctl
سرویس و systemctl تا حد زیادی در خدمت یک هدف هستند. بسیاری از شباهتهای بین آنها عمداً درج شد تا به کاربران امکان انتقال یکپارچهتر از سرویس به systemctl را بدهد.
با این حال، هنگام شروع کار با سیستم اولیه سازی در لینوکس، چند تفاوت بین این دو وجود دارد که باید از آنها آگاه باشید.
1. سیستم های Init مختلف
مهم ترین تفاوت سرویس و systemctl این است که آنها به سیستم های اولیه متفاوت تعلق دارند. این سرویس متعلق به SysVinit (System V Init) است که در غیر این صورت به عنوان فرآیند اولیه سازی کلاسیک لینوکس شناخته می شود.
systemctl متعلق به systemd، جانشین SysVinit و فرآیند اولیه سازی مدرن مورد استفاده در بسیاری از سیستم های لینوکس است.
از آنجایی که service و systemctl بخشی از فرآیندهای مختلف اولیه هستند، آنها بر روی فایل های سیستم اولیه در دایرکتوری های مختلف کار می کنند. سرویس با فایلهای سیستم اولیه موجود در /etc/init.d کار میکند، در حالی که systemctl با فایلهای سیستم اولیه موجود در /lib/systemd کار میکند.
به طور کلی، سیستم اولیه سازی که در نصب های خارج از جعبه لینوکس با آن مواجه خواهید شد، سیستمی است – بنابراین می خواهید با استفاده از systemctl برای تعامل با آن آشنا شوید.
اگر قصد دارید با سیستمهایی کار کنید که قبل یا همزمان با انتشار systemd در سال 2010 هستند، آشنایی با استفاده از دستور سرویس نیز ضرری ندارد.
2. سازگاری
سرویس از نظر سازگاری همچنان یک دستور بسیار مفید است – به عنوان یک دستور wrapper، میتواند به مدیر سرویس مورد استفاده در سیستمهای مختلف هدایت شود. اگر با انواع سیستم های لینوکس کار می کنید، باید برای یادگیری آن برنامه ریزی کنید و آن را به بخشی از زرادخانه خود تبدیل کنید.
3. توابع زیربنایی
یکی دیگر از تفاوت های کلیدی بین systemctl و سرویس در نحوه عملکرد آنها نهفته است. سرویس یک فرمان سطح بالا است که به مدیر سرویس اصلی مورد استفاده در یک سیستم خاص هدایت می شود، به این معنی که بین سیستم ها کاملاً همه کاره است. ممکن است به /etc/init.d، upstart یا حتی systemctl هدایت شود. در همین حال دستورات systemctl مستقیماً با systemd تعامل دارند.
4. قابلیت
از نظر کارهایی که می توانید انجام دهید، می توان با اطمینان گفت که systemctl از نظر قدرت بسیار فراتر از خدمات است. به غیر از عملکردهای اساسی – مانند شروع، توقف، فعال کردن یا غیرفعال کردن یک سرویس خاص – شما همچنین می توانید تنظیمات پیشرفته ای را با systemctl تنظیم کنید.
این سرویس به دلیل سازگاری لازم با مدیران خدمات اساسی که بر آنها تکیه دارد، محدودتر است.
پیکربندی خدمات سیستم به طور موثر در لینوکس
service و systemctl هر دو دستورات فوق العاده مهمی برای مدیریت سرویس های سیستم هستند. چه بخواهید از سیستم لینوکس خود بهترین استفاده را بکنید و چه قصد دارید در شبکه های سازمانی کار کنید، آشنایی با هر دو دستور بسیار مهم است.
خوشبختانه، تعداد زیادی آموزش عالی وجود دارد که می تواند به شما کمک کند در استفاده از systemctl و سرویس در ترمینال استاد شوید.