خبر و ترفند روز

خبر و ترفند های روز را اینجا بخوانید!

نحوه ایجاد یک سرویس systemd جدید در لینوکس

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

systemd مدیر سرویس بسیاری از توزیع‌های معروف لینوکس است. سرویس واحدی از یک برنامه است که معمولاً در پس زمینه اجرا می شود. خدمات، طبیعتاً به‌محض راه‌اندازی سیستم به‌طور خودکار راه‌اندازی می‌شوند و می‌توانند بدون نظارت اجرا شوند.

اگر نیاز به ایجاد یک کار یا برنامه راه‌اندازی خودکار دارید که هر بار که سیستم خود را راه‌اندازی یا راه‌اندازی می‌کنید اجرا می‌شود، می‌توانید ایجاد یک سرویس جدید را در نظر بگیرید. بیایید یاد بگیریم که چگونه یک سرویس جدید و سفارشی systemd در لینوکس ایجاد کنیم.

مرحله 1: ایجاد فایل سرویس

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

بیایید فایل سرویس را با کشیدن یک فایل سرویس واقعی و کارآمد از سیستم لینوکس خود مطالعه کنیم. در زیر می توانید فایل سرویس سرویس vmtools daemon را مشاهده کنید.

فایل سرویس vmtools daemon-2

این سرویس خاص ممکن است در سیستم شما وجود نداشته باشد مگر اینکه لینوکس را روی VMware با ابزارهای VMware نصب شده اجرا کنید. سرویس مورد نظر مهم نیست زیرا همه سرویس‌ها، یا بهتر است بگوییم، فایل‌های واحد سرویس، ساختار پایه یکسانی با برخی سفارشی‌سازی‌های لازم دارند.

همه فایل‌های سرویس systemd باید سه بخش داشته باشند: [Service]، [Unit] و [Install] و چند پارامتر در زیر هر بخش. در اینجا هر بخش شامل چه چیزهایی است و چرا آنها مهم هستند:

1 واحد

بخش Unit شامل ابرداده های مهم مانند توضیحات و وابستگی های سرویس است. دارای سه پارامتر Description، Before و After است. همانطور که همان نشان می دهد، پارامتر Description برخی از زمینه های سرویس و کارهایی که انجام می دهد را ارائه می دهد.

مطلب مرتبط:   چگونه یک وب سایت را با Duplicator کلون کنیم

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

2. خدمات

بخش Service شامل دو پارامتر اجباری است: ExecStart، Type و چند پارامتر اختیاری دیگر مانند ExecReload و غیره.

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

3. نصب کنید

هر زمان که سرویس را با دستور systemctl فعال یا غیرفعال کنید این بخش و داده های آن فراخوانی می شوند.

یکی دوتا پارامتر داره یکی از موارد رایج و ضروری WantedBy است. پارامتر WantedBy واحدهای هدفی را مشخص می کند که باید هر زمان که سرویس فعال شد شروع به کار کنند. مقدار پیش فرض multi-user.target است.

پارامترهای ذکر شده در اینجا تنها پارامترهایی نیستند که می توانید در یک فایل واحد تنظیم کنید. شما می توانید لیست کامل پارامترها را از اسناد رسمی systemd.exec یا با تایپ man systemd.exec در ترمینال دریافت کنید.

یک فایل واحد سرویس systemd همیشه با پسوند “.service” به پایان می رسد و باید در فهرست /etc/systemd/system/ ذخیره شود. فایل سرویس را با استفاده از فرمان لمسی با امتیازات بالا با پیشوند آن با دستور sudo ایجاد کنید:

sudo touch /etc/systemd/system/<filename>.service

اکنون که فایل سرویس را ایجاد کردید، بیایید به پر کردن آن با نحو لازم بپردازیم تا سرویس معتبر و کار کند.

مرحله 2: پیکربندی فایل سرویس

پیکربندی سرویس nmap سفارشی

برای نمایش، شما یک سرویس نمونه ایجاد می کنید که Nmap را اجرا می کند تا پورت های دستگاه شما را اسکن کند و خروجی را در یک فایل هر سی ثانیه ذخیره کند. برای دستیابی به این کار، در اینجا نحوه ساختار فایل واحد خدمات آورده شده است:

[Unit]
Description=Demonstration of custom nmap service.
After=network.target

[Service]
Type=simple
User=root
ExecStart=/usr/bin/nmap -sS -O -oN /home/<user>/results.txt localhost
Restart=always
RestartSec=30

[Install]
WantedBy=multi-user.target

اگرچه پارامترهای ذکر شده در اینجا قبلا توضیح داده شده است، بیایید به نحوه تأثیر آنها بر سرویس جدید ایجاد شده ما بپردازیم و همچنین پارامترهای جدیدی را که در این واحد معرفی شده اند بررسی کنیم: Restart، RestartSec و User.

مطلب مرتبط:   نحوه استفاده از درخت برای نمایش درخت دایرکتوری در ترمینال لینوکس

در اینجا پارامترهای هر بخش به چه معنا هستند:

  • توضیحات: متن قابل خواندن توسط انسان برای توصیف عملکردهای سرویس.
  • After=network.target: به systemd می‌گوید که این سرویس به network.target وابسته است و فقط باید پس از راه‌اندازی سرویس network.target شروع شود. توجه داشته باشید که After برای ایجاد هیچ رابطه وابستگی مستقیمی استفاده نمی شود، فقط به عنوان یک ماشه عمل می کند.
  • Type=simple: چندین نوع سرویس وجود دارد. با این حال، خدمات در این نمایش یک فرآیند منظم است و از این رو ما آن را اعلام می کنیم. می‌توانید تمام مقادیر مختلف این مورد را در صفحه اسناد رسمی که قبلاً پیوند داده شده است، بیابید.
  • Restart=always: این بدان معناست که هر زمان که سرویس خارج می شود، همیشه باید راه اندازی مجدد شود.
  • RestartSec=30: فاصله بین هر شروع سرویس را 30 ثانیه تنظیم می کند.
  • User=root: این تعریف می کند که سرویس به عنوان کاربر اصلی اجرا می شود. در این مورد، این یک مرحله ضروری است زیرا Nmap نمی‌تواند بدون حقوق ریشه اجرا شود.
  • ExecStart: این دستورالعمل مسیر مطلق برنامه را به همراه تمام پرچم ها یا آرگومان های مورد نیاز برای عملکرد صحیح برنامه نگه می دارد.
  • WantedBy=multi-user.target: این پارامتر در یک فایل سرویس مشخص می کند که کدام هدف باید شامل سرویس باشد یا “می خواهد”. هنگامی که یک سرویس در یک هدف گنجانده شده است، به این معنی است که سرویس باید زمانی شروع شود که سیستم در طول فرآیند بوت به آن هدف برسد. در این حالت، سرویس باید زمانی شروع شود که سیستم وارد حالت چند کاربره شود. حالت چند کاربره حالتی است که سیستم به طور کامل بوت می شود و به چندین کاربر اجازه می دهد وارد سیستم شده و از آن استفاده کنند.
مطلب مرتبط:   چگونه بسته ها را در لینوکس کاهش دهیم

مرحله 3: فعال کردن و راه اندازی سرویس

وضعیت سرویس nmap-1

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

در اینجا نحوه استفاده از systemctl برای فعال کردن، راه اندازی و بررسی وضعیت سرویس خود آورده شده است:

sudo systemctl enable <filename>.service
sudo systemctl start <filename>.service
sudo systemctl status <filename>.service

اکنون، سرویس سفارشی شما باید راه‌اندازی شود! در این مورد، باید ببینید که یک اسکن Nmap هر سی ثانیه اجرا می شود و خروجی در فایل results.txt در فهرست اصلی ذخیره می شود.

راه اندازی یک سرویس systemd در لینوکس آسان است!

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

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

اگر راه‌اندازی و نگهداری یک سرویس برای شما خیلی سخت به نظر می‌رسد، یک راه جایگزین برای خودکار کردن کارهای تکراری در لینوکس را در نظر بگیرید.