فهرست مطالب:

سرویس نظارت بر اسکریپت برای سرورهای لینوکس: 4 مرحله
سرویس نظارت بر اسکریپت برای سرورهای لینوکس: 4 مرحله

تصویری: سرویس نظارت بر اسکریپت برای سرورهای لینوکس: 4 مرحله

تصویری: سرویس نظارت بر اسکریپت برای سرورهای لینوکس: 4 مرحله
تصویری: #linux for Hackers ( Zero to Hero ) 🐱‍👤 | 😎 لینوکس برای هکرها صفر تا صد 2024, نوامبر
Anonim
سرویس نظارت بر اسکریپت برای سرورهای لینوکس
سرویس نظارت بر اسکریپت برای سرورهای لینوکس

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

به دلیل پیچیدگی بسته های نرم افزاری مدرن و کد نویسی بد ، برخی از فرایندها گهگاه ممکن است خراب شوند. اگر از سرور استفاده می کنید و برخی از افراد به این خدمات اعتماد می کنند ، این می تواند چیز بدی باشد.

مرحله 1: استفاده از روشهای ارائه شده توسط Systemd

همانطور که می دانید ، اکثر سیستم عامل های لینوکس مدرن از systemd استفاده می کنند.

اگر با systemd آشنایی ندارید ، طبق ویکی پدیا این است:

"… یک سیستم init در توزیع های لینوکس برای راه اندازی فضای کاربر و مدیریت کلیه فرآیندهای متعاقب آن ، به جای سیستم های اولیه UNIX System V یا Berkeley Software Distribution (BSD) استفاده می شود."

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

www.tecmint.com/systemd-replaces-init-in-l…

مهمترین پیشرفت این است که می تواند سیستم را سریعتر از init بالا بیاورد ، به دلیل پردازش همزمان و موازی در راه اندازی به جای روش پی در پی init

بدون ورود به اعماق systemd ، برای افزودن یک فرایند به systemd ، باید یک فایل سرویس ایجاد کنید. نحو چنین پرونده ای می تواند از بسیار ساده تا کاملاً پیچیده متغیر باشد و ما وارد جزئیات نمی شویم. برای داشتن یک فایل.service اساسی ، کافی است از ورودی های زیر استفاده کنید:

[واحد] توضیحات = شرح برنامه Documentation = https://wikipedia.org/ After = local-fs.target network.target [Service] Type = simpleExecStart =/usr/sbin/applicationExecReload =/usr/sbin/برنامه reloadExecStop =/ usr/sbin/application stopRestart = همیشه [نصب] WantedBy = multi-user.target

اینها را در فایل application.service در پوشه/lib/systemd/system قرار دهید.

هر کدام از این گزینه ها در پیوند زیر توضیح داده شده است:

access.redhat.com/documentation/fa-US/Red_…

برای شروع برنامه خود ، دستور زیر را صادر کنید:

sudo systemctl start application.service

توجه: پسوند.service را می توان حذف کرد.

برای توقف برنامه:

sudo systemctl stop application.service

اگر فایل پیکربندی تغییر کرده است و می خواهید تنظیمات را دوباره بارگیری کنید:

sudo systemctl برنامه بارگذاری مجدد. سرویس

برای راه اندازی مجدد برنامه:

راه اندازی مجدد برنامه sudo systemctl.service

برای فعال کردن شروع خودکار هنگام بوت:

sudo systemctl application.service را فعال کنید

اگر این مورد فعال باشد ، مدیر فرآیند systemd سعی می کند برنامه را بر اساس تنظیماتی که توسط فایل سیستم ارائه شده است ، راه اندازی کند.

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

اگر Restart = همیشه را در فایل سرویس قرار دهید ، systemd بر روند نظارت می کند و اگر در لیست فرآیند یافت نشد ، سعی می کند آن را به طور خودکار راه اندازی مجدد کند.

اگر قرار دهید

RestartSec = 30

بعد از دستورالعمل راه اندازی مجدد ، 30 ثانیه صبر می کند تا تلاش برای راه اندازی مجدد انجام شود. این ممکن است مفید باشد ، زیرا تلاش مجدد مجدد یک سرویس یا برنامه خراب می تواند منجر به تقاضای زیاد در سیستم شود (نوشتن گزارش خطاها و غیره)

همانطور که ملاحظه می کنید ، systemd قبلاً ابزارهایی برای نظارت بر فرآیندها فراهم کرده است. با این حال ، در برخی موارد این ممکن است کافی نباشد. اگر یک فرآیند خارج نشود (همچنان در لیست فرآیند خواهد بود) ، اما پاسخ خود را متوقف کند چه می شود. در این مورد ، برای اطمینان از اینکه یک فرایند در حال اجرا است ، ممکن است نیاز به بررسی های اضافی داشته باشید.

در اینجاست که اسکریپت های این دستورالعمل مفید خواهد بود.

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

اگر به کنترل بیشتر فرایندها/خدمات در حال اجرا نیاز دارید ، مطمئناً این اسکریپت ها مفید خواهند بود.

از آنجا که کد کمی بزرگ است ، در github بارگذاری شده و در مخزن زیر یافت می شود:

github.com/trex2000/Service-Monitor-Scripts/blob/master/checkService.sh

"قلب" کل بسته است

checkService.sh

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

اسکریپت می تواند چندین فرآیند را زیر نظر داشته و کارهای اضافی را انجام دهد ، همانطور که در زیر توضیح داده شده است:

از طریق هر فایل از زیر پوشه /services دارای پسوندهای.serv یا.check می گذرد و بررسی می کند که آیا فرآیندی فعال به نام "application" وجود دارد.

اگر برای برنامه هیچ فایل '.check' وجود ندارد ، فقط فایل application.serv:

اگر فرآیند فعال باشد ، فرآیند را فعال در نظر می گیرد

اگر فرآیند غیر فعال باشد ، با صدور دستور زیر سرویس را مجدداً راه اندازی می کند:

برنامه راه اندازی مجدد systemctl

اگر فایل.serv خالی است!

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

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

به عنوان مثال ، در پرونده spamd.serv ، از repo بالا ، در صورت از بین رفتن سرویس spamd ، سرویس spamassassin باید به جای آن راه اندازی مجدد شود ، که همچنین spam را دوباره راه اندازی می کند. راه اندازی مجدد فقط spam کافی نخواهد بود.

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

مثال دیگر فایل pcscd.serv است. در این مورد ، چندین فرآیند دیگر نیز راه اندازی مجدد/کشته شدند.

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

به عنوان مثال ، برای سرویس oscam ، ما یک پرونده چک ایجاد کرده ایم که سعی می کند به رابط وب آن متصل شود تا ببیند آیا موفق است. در غیر این صورت ، با وجود فعال بودن فرآیند ، سرویس پاسخ نمی دهد و باید راه اندازی مجدد شود. راه اندازی مجدد سرویس باید توسط فایل.check انجام شود/فراخوانی شود.

مثال دیگر سرویس DLNA مدیاتومب است.

این یک سرور کوچک است که محتوای تصویری/صوتی را برای مشتریان DLNA ارائه می دهد و خود را در شبکه پخش می کند. گاهی اوقات سرویس متوقف می شود و دیگر قابل کشف نیست ، اما این روند همچنان فعال است. برای بررسی اینکه آیا سرویس قابل کشف است ، از ابزار CLI به نام gssdp-Discover استفاده شد. کل کدی که سرور DLNA را بررسی می کند در داخل یک اسکریپت mediatomb.check قرار داده شد.

اینها تنها چند مثال در مورد نحوه استفاده از فایل های.serv و.check هستند.

برای نظارت بر سرویس جدید ، باید یک.serv ایجاد کنید و در صورت نیاز یک فایل چک کنید و اسکریپت مربوطه را داخل آنها بنویسید.

اگر فقط بررسی وجود فرآیند به اندازه کافی ، یک فایل خالی.serv کافی خواهد بود. اگر بررسی های اضافی باید انجام شود ، یک فایل.check باید ایجاد شود و یک اسکریپت کوچک برای انجام کار نوشته شود.

به عنوان منبع ، اسکریپت.sh باید به صورت دوره ای اجرا شود ، بنابراین یک کار cron نیز باید برای آن ایجاد شود:

#خدمات در حال اجرا را هر 5 دقیقه بررسی کنید */5 * * * * /var/bin/ServiceCheck/checkService.sh>/dev/null

مرحله 3: اندیشه های نهایی

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

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

توصیه شده: