فهرست مطالب:
- مرحله 1: استفاده از روشهای ارائه شده توسط Systemd
- مرحله 2: پیکربندی و استفاده از اسکریپت های Service Checker
- مرحله 3: اندیشه های نهایی
تصویری: سرویس نظارت بر اسکریپت برای سرورهای لینوکس: 4 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:57
داشتن یک سیستم پایدار و همیشه در حال اجرا ، حتی اگر از لینوکس استفاده می کنید می تواند کار دشواری باشد.
به دلیل پیچیدگی بسته های نرم افزاری مدرن و کد نویسی بد ، برخی از فرایندها گهگاه ممکن است خراب شوند. اگر از سرور استفاده می کنید و برخی از افراد به این خدمات اعتماد می کنند ، این می تواند چیز بدی باشد.
مرحله 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 بارگذاری کنید. فقط به من اطلاع دهید و من شما را به عنوان مشارکت کننده اضافه خواهم کرد.
توصیه شده:
یک اسکریپت CustomCmd برای Windows Command Prompt کد کنید: 6 مرحله
کد یک CustomCmd Script برای Windows Command Prompt: آیا از CMD زیاد استفاده می کنید؟ انجام میدهم! اما تعداد زیادی از مردم - از جمله من - فکر می کنند بسیار خسته کننده است. امروز من اسکریپتی را کد می کنم که به ما اجازه می دهد CMD را به اندازه کافی سفارشی کنیم تا سرگرم کننده باشد. بیایید شروع کنیم! کد را در انتهای ARTICLEYOU بارگیری کنید WIL
نحوه ایجاد یک کاراکتر دو بعدی با کنترلر کاراکتر در موتور غیرواقعی 4 با استفاده از اسکریپت ویژوال برای رایانه: 11 مرحله
نحوه ایجاد یک کاراکتر دو بعدی با کنترلر کاراکتر در موتور غیرواقعی 4 با استفاده از ویژوال اسکریپت برای کامپیوتر: نحوه ایجاد یک کاراکتر دو بعدی با کنترلر کاراکتر در موتور Unreal 4 با استفاده از اسکریپت بصری برای رایانه سلام ، من جوردن استلتز هستم. من از 15 سالگی مشغول توسعه بازی های ویدئویی هستم. این آموزش به شما آموزش می دهد که چگونه با استفاده از
کنترل کننده الکترونیکی ساده سرعت (ESC) برای سرویس چرخش بی نهایت: 6 مرحله
سرویس کنترل الکترونیکی ساده (ESC) برای سرویس چرخش بی نهایت: اگر امروزه سعی می کنید کنترلر الکترونیکی سرعت (ESC) را ارائه دهید ، باید گستاخ یا جسور باشید. دنیای تولید الکترونیکی ارزان مملو از تنظیم کننده هایی با کیفیت های مختلف با طیف وسیعی از عملکردها است. با این وجود دوست من از م بپرس
سرویس ربات فرمان سروو برای آردوینو: 6 مرحله (همراه با تصاویر)
Servo Steel Robot Car for Arduino: این خودرو بر اساس طراحی پلت فرم arduino طراحی شده است ، هسته اصلی آن Atmega - 328 p است که می تواند فرمان جلو ، محرک چرخ عقب و سایر عملکردها را درک کند. اگر فقط به تنهایی بازی می کنید ، فقط باید از ماژول بی سیم استفاده کنید ؛ اگر می خواهید پیاده سازی کنید
اسکریپت برای پیکربندی پیکربندی های نقطه دسترسی بی سیم Linksys: 5 مرحله
Script to Backup Linksys Wireless Access Point Configurations: این دستورالعمل اسکریپتی را نشان می دهد که می تواند برای خودکار تهیه نسخه پشتیبان از پیکربندی های نقطه دسترسی بی سیم linksys استفاده شود. در واقع این را می توان به راحتی برای پشتیبان گیری تقریباً از هر دستگاه linkys ویرایش کرد