منبع اصلی نوشتار زیر در این لینک قرار دارد

چگونه یک init script در لینوکس بنویسیم

منظوز از init script، یک شل اسکریپت برای کنترل گرفتن برنامه ای خاص تحت مدیریت فرایند init است. در توزیع های لینوکسی (مانند CentOS/RHLE 5and6) سرویسی مانند MySQL تحت مدیریت فرایند init است. یعنی فایلی برای start,stop,restart و reload کردن آن سرویس در زیر دایرکتوری etc/init.d/ قرار دارد که شامل توابعی به نام های start,stop,restart و reload است. نخست و پیش از نوشتن اسکریپت سفارسی خودمان، نگاهی به یکی از فایل های درون داریکتوری init.d می اندازیم.به طور مثال فایل مربوط به سرویس mysql که mysqld نام دارد.

less /etc/init.d/mysqld

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

etc/rc.d/init.d/functions/ .

etc/sysconfig/network/ .

همانطور که در مطلب “چگونگی اجرای یک شل اسکریپت” توضیح داده شده است، نقطه ابتدای هر کدام از خط های بالا یعنی اجرای اسکریپت هایی بدون نیاز به ایجاد یک فرایند bash جدید. دو فایل functions و network فایل هایی هستند که در فایل mysqld خوانده و اجرا می شوند. همچنین این فایل شامل توابع start, resatrt, condrestart است که بر اساس کد هایی که درون بدنه آنها تعریف شده کاری را انجام می دهند. (عملکرد آنها با توجه به نامشان واضح است). ما برای start,stop,restart کردن این سرویس (یا هر سرویس دیگری) یا از دستور service استفاده می کنیم و یا از دستور های زیر :

etc/init.d/mysqld start/

etc/init.d/mysqld stop/

etc/init.d/mysqld restart/

start,stop و restart مشخص شده در بالا شرایط ورودی از یک case تعریف شده در فایل mysqld هستند، به این معنی که case تعریف شده در فایل بررسی می کند که اگر ورودی مقابل فایل mysqld، عبارت start بود، تابع start تعریف شده در فایل و اگر restart بود تابع restart تعریف شده و … را اجرا کن. شکل زیر تعریف این switch را نشان می دهد. (تعریف تابع در شل اسکریپت)

تعریف فایلی برای اپلیکشن خودمان نیز از این قاعده مستثنی نیست و باید توابع مورد نظر را تعریف و طبق نیاز کد های لازم را نوشته و سپس توسط یک case ورودی کاربر را بررسی کنیم و مطابق با آن تابعی یا پیغام و عکس العملی مناسب را انجام داد. توجه کنید که فایل را باید زیر دایرکتوری etc/init.d/ ذخیره کرد. شکل زیر که تنها نمونه و برای بیان ساختار اینگونف فایل ها است، به طور واضح چگونگی تعریف توابع را نشان داده است، همچنین در case بررسی می شود که اگر (نخستین) ورودی که با متغیر 1$ از کاربر گرفته می شود، start بود آنگاه تابع start را اجرا و یا بر اساس شرایط دیگر تابع مورد نظر را اجرا کن.

در مورد اینکه اگر ورودی ها restart, reload و یا condrestart بود، نخست تابع stop و سپس تابع start اجرا می شود. (یعنی هیچ تابعی به نام های restart,reload و condrestart در فایل نمونه ما نوشته نشده است.) می توانید این فایل را به طور کامل از اینجا دانلود کنید و یا اینکه از منبع اصلی آن مطالعه کنید.

مطلب های مرتبطی که لازم است بخوانید.

و همچنین یک لینک کمکی دیگر برای مطالعه بیشتر می توانید استفاده کنید.



برچسب ها : , , , , , , ,

به سیاره لینوکس امتیاز دهید

به اين صفحه امتياز دهيد