پایگاه دانش
محدود کردن برنامه ها در لینوکس
ارسال شده توسط عباس پيرنظريان در تاریخ 1390/06/27 02:57 بعد از ظهر

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

آیا تا به حال برایتان پیش آمده که یک برنامه خاص (مانند فایرفاکس) را باز کنید و بعد تمام سیستم تان بسته شود؟ این موضوع زمانی جدی می شود که به جای یک کامپیوتر معمولی خانگی، عملکرد اشتباه یک برنامه، تمام منابع پردازنده یک سرور را در اختیار بگیرد و سرور از کار بیفتد؛ در این صورت تمام وب سایت ها و سرویس هایی که در این سرور وجود دارند از کار خواهند افتاد.
برای حل این مشکل، گروهی از برنامه نویسان آزاد، برنامه ای به نام cpulimit نوشته اند که می تواند استفاده یک پردازه از پردازنده را محدود کند. مثلا اگر یک برنامه را که از سنگینی آن آگاه نیستید، اجرا کنید یا زمانی که یک برنامه با استفاده محدود، حجم زیادی از پردازنده شما را می گیرد، می توانید آن را به سادگی محدود کنید. از این رو اجرای چند برنامه پردازنده محور (cpu-bound) به طور همزمان در سیستم به سادگی انجام می پذیرد.
نکته ای که باید به آن توجه کرد این است که این برنامه برای تمام توزیع های لینوکس قابل استفاده است، اما در این مقاله، تنها به نصب آن در توزیع محبوب اوبونتو می پردازیم.
نصب
در اوبونتو می توان cpulimit را از طریق ubuntu software center نصب کرد. کافی است نام آن را جستجو کنید. از طریق apt نیز می توان با دستور زیر آن را نصب کرد:
sudo apt-get install cpulimit
استفاده
برای این که یک پردازنده را محدود کنیم، از دستور زیر استفاده می کنیم:
sudo cpulimit -p pid -l cpu%
که در این دستور، pid شناسه برنامه در حال اجراست و %cpu عددی است بین صفر تا 100 که همان منبع مجاز برای برنامه خواهد بود. می توان pid را با رفتن به مسیر زیر به دست آورد:
administration\system monitor
برای نمونه، اگر برنامه فایرفاکس شما 68 درصد از پردازنده را پیش از اجرای دستور می گیرد، می توان آن را به میزان 20درصد تغییر داد.
خودکارسازی روند
استفاده از این برنامه زمانی خود را نشان می دهد که برنامه ای را که اجرا می کنید نیاز به منابع زیادی از سوی پردازنده داشته باشد یا وقتی که باید یک کار دسته ای (batch) انجام دهید. همچنین می توان این برنامه را طوری طراحی کرد که برای هر برنامه ای که از رفتار عادی خود تجاوز می کند، فعال شود. روند خودکار کردن، برای نصب سرور بسیار سودمند است.
نظارت بر روند محدودسازی هر پردازنده ای که از حد مجاز تجاوز کند، از طریق یک اسکریپت انجام می شود. برای این کار مطمئن شوید که دستور زیر را اجرا کرده اید، یا gawk و cpulimit در سیستم تان از پیش نصب شده است.
sudo apt-get install cpulimit gawk
حالا به نشانی زیر بروید و این اسکریپت را دریافت کنید:
http://iranictnews.ir/goto/?url=http%3A%2F%2Fdl.dropbox.com%2Fu%2F6864546%2Fcpulimit.tar.gz" target="_blank">http://dl.dropbox.com/u/6864546/cpulimit.tar.gz
فایل tar را به دایرکتوری home خود منتقل کرده و آن را از حالت فشرده خارج کنید. باید در فولدر ایجاد شده، دو فایل با نام های cpulimit و cpulimit_daemon.sh وجود داشته باشد.
حال فایل cpulimit_daemon.sh را در یک ویرایشگر باز کنید (مثلا gedit) و سپس مقادیر زیر را تغییر دهید:
cpu_limit: بالاترین میزانی که از منابع پردازنده در اختیار هر نرم افزار قرار می گیرد. مقدار پیش فرض 20 درصد است.
daemon_interval: میزان بازه زمانی که این اسکریپت قرار است سیستم را چک کند. مقدار پیش فرض 3 ثانیه تنظیم شده است.
black_process_list: این مقدار فهرست آیتم هایی را مشخص می کند که می خواهید روی آنها نظارت انجام دهید. برای جداسازی پردازه های مختلف از کاراکتر (|) استفاده کنید. برای مثال:
mysql|firefox|gedit
white_process_list: این آیتم شامل فهرست آیتم هایی است که نمی خواهید تحت نظارت قرار بگیرند. در این مقدار نیز همانند مقدار قبلی، با کاراکتر (|) می توان برنامه ها را از هم جدا کرد.باید توجه داشته باشید که یکی از دو مقدار فهرست سیاه یا فهرست سفید باید خالی باشند، نمی توان به صورت همزمان هم فهرست سیاه داشت و هم فهرست سفید.
راه اندازی
فایل cpulimit_daemon.sh را به مسیر /usr/bin/ بفرستید. برای این کار می توانید از دستور زیر در ترمینال استفاده کنید:
sudo cp ~/cpulimit/cpulimit_daemon.sh /usr/bin
sudo chmod 700 /usr/bin/cpulimit_daemon.sh
سپس فایل cpulimit را به فولدر /etc/init.d/ فرستاده و سطوح دسترسی صحیح را ایجاد کنید. حال کاری می کنیم که با بالا آمدن سیستم اجرا شود. برای سادگی بیشتر، از دستورات زیر استفاده کنید:
sudo cp ~/cpulimit/cpulimit /etc/init.d/
sudo chown root:root /etc/init.d/cpulimit
sudo chmod +x /etc/init.d/cpulimit
sudo update-rc.d cpulimit defaults
حالا اگر یک بار سیستم خود را از نو راه اندازی کنید، cpulimit به صورت خودکار فعال خواهد شد.می توانید برای بررسی وضعیت این برنامه، از دستور زیر استفاده کنید:
sudo service cpulimit status
و برای این که مطمئن شوید، cpulimit را اجرا کنید (در صورتی که اجرا نشده)، دستور زیر را بنویسید تا برنامه را اجرا کند:
sudo service cpulimit start
همچنین برای متوقف کردن آن از دستور زیر استفاده کنید:
sudo service cpulimit stop
پاک کردن
برای پاک کردن این اسکریپت، باید مراحل زیر را انجام دهید:
1- متوقف کردن برنامه
sudo service cpulimit stop
2- حذف اسکریپت برای اجرا نشدن هنگام بالا آمدن سیستم
sudo update-rc.d -f cpulimit remove
3- حذف برنامه
sudo rm /etc/init.d/cpulimit
4- حذف اسکریپت به طور کامل از سیستم
sudo rm /usr/bin/cpulimit_daemon.sh
5- حذف برنامه cpulimit
sudo apt-get remove cpulimit
6- همچنین اگر استفاده دیگری از برنامه gawk ندارید، آن را نیز می توانید حذف کنید:
sudo apt-get remove gawk

(0 رأی/آراء)
مفید بود
مفید نبود

نظرات (0)
ارسال نظر جدید
 
 
نام کامل:
ایمیل:
متن نظر:
Help Desk Software by Kayako