اجرای اسکریپت پایتون در زمینه (به عنوان سرویس) در هنگام بوت

Print Friendly

زمانی که میخواین پروژه ای رو انجام بدین باید چند تا فاکتور کلی رو همیشه درنظر داشته باشین.برای مثال باید تا حدی که ممکن بود سرعت رو بالا ببرید.روی امنیت کار کنید و…

چند وقت پیش پروژه ای (تحت وب)داشتم که مجبور شدم کلی کد بنویسم که کمی هم به سرور فشار میاورد و باعث  افت کیفیت میشد.بعدها که کمی جستجو کردم متوجه شدم میتونم با چند خط کد و یک فایل ساده bash  (به اصطلاح اسکریپت init) میتونم همون کار رو با سرعت و کیفیت خیلی بیشتر انجام بدم

اسکریپت های init  در /etc/init.d ذخیره میشن.داخل این مسیر شما میتونین تمام سرویس هاتون رو ببینید

با استفاده از اسکریپت init زیر میتونین یک اسکریپت پایتون(و یا حتی یک اسکریپت پرل)  رو در هنگام بوت بدون مشکل اجرا کنید.سرویس ها به صورت daemons اجرا میشن.کسانی که با پایتون آشنایی دارند میدونن که این کار در خود پایتون به نسبت سخت تر هستش(برای مثال اینجا و اینجا رو مشاهده کنید) . بجای اینکار میتونیم از امکان خود لینوکس مستقیم استفاده کنیم( فرمان start-stop-daemon ) و هر برنامه ای رو که خواستیم به راحتی در زمینه اجرا کنیم

 

 تغییرات در اسکریپت init

خط ۱۴ و ۱۵ مشخص میکنه که کجا باید فایل پایتون رو پیدا کنه.در این مورد من گفتم که یک فولدری به اسم /usr/local/bin/myservice وجود داره  و فایل myscript.py درون آن قرار دارد(به این صورت میتونین فایل های دیگه ای رو هم داخل دایرکتوری مورد نظر قرار بدین که کار سختی نیست)

در خط ۱۶ نامی رو مشخص میکنیم که بعدا با همین نام سرویس رو برای اجرا یا توقف صدا میزنیم

در خط ۲۰ باید مشخص کنیم که اسکریپت با چه عنوانی اجرا بشه.من اینجا کاربر رو root گذاشتم که معمولا کار درستی نیست ولی بعضی مواقع لازم هستش.اگر کاربری با نام myusername دارین میتونین به جای root از نام یوزرتون که همون myusername هستش استفاده کنید

 

استفاده از اسکریپت init 

برای اینکه بتونین از اسکریپت init استفاده کنید,اسکریپت پایتون خودتون رو در جایی که میخواین قرار بدین(یادتون نره آدرس رو تغییر بدین در اسکریپ init).مطمئن بشین که سطح دسترسی فایل پایتون و همچنین فایل bash  اجرا شدنی یعنی۷۵۵ باشه.باید به کامپیوتر بگین که این فایل یک فایل پایتون هستش و باید با پایتون اجرا بشه(برای مثال باید در خط اول e.g. #!/usr/bin/env python  رو قرار بدین) . فایل رو داخل /etc/init.d کپی کنید.برای مثال میتونین از دستور sudo cp myservice.sh /etc/init.d استفاده کنید.بازم میگم که مطمئن شوید فایل دسترسی اجرا شدن رو داشته باشد

حالا باید قادر باشین که اسکریپت پایتونتون رو با دستور sudo /etc/init.d/myservice.sh start اجرا کنید

میتونین با دستور sudo /etc/init.d/myservice.sh status چک کنین که سرویس در حال اجرا می باشد یا خیر

میتونین با دستور sudo /etc/init.d/myservice.sh stop سرویس رو متوقف کنید

البته میتونین به جای /etc/init.d فقط از service استفاده کنید

کار انجام شده ولی برای اینکه بخواین در یک زمان درستی اسکریپت اجرا بشه باید دستور sudo update-rc.d myservice.sh رو وارد کنید

محمد پوینده

...