در لینوکس میتوانیم محدودیت سقف تعداد فایلهای باز برای هر فرآیند را تغییر دهیم؛ برای این کار مراحل زیر را طی (با سطح دسترسی ریشه به سیستم وارد میشویم) میکنیم:
گام 1؛ با استفاده از فرمان زیر مقدار حداکثر تعداد فایلهای باز قابل مشاهده است؛ عددی که در نتیجه اجرای این فرمان نشان داده شده نمایانگر حداکثر تعداد فایلهایی است که یک کاربر در یک نشست میتواند باز کند و مقدار آن در توزیعهای مختلف لینوکس متفاوت است:
# cat /proc/sys/fs/file-max
گام 2؛ برای تغییر حداکثر تعداد فایلهای باز، از ابزار sysctlاستفاده میکنیم؛ برای مثال برای افزایش محدودیت فایل باز به 30000 از فرمان زیر در سطح کاربر ریشه استفاده میشود:
# sysctl -w fs.file-max=30000
این تغییرات تا reboot بعدی سیستم پایدار خواهد ماند و بعد از آن از بین خواهد رفت برای اینکه این تغییرات دائمی شود به صورت زیر عمل مینماییم:
# vi /etc/sysctl.conf
سپس این خط به فایل کانفیگ ابزار sysctl اضافه میشود:
fs.file-max=30000
برای اعمال تغییرات لازم است یک بار با فرمانlogout نشست کاربر جاری را بسته و مجددا وارد شویم یا برای اعمال فوری تغییرات از فرمان sysctl -p استفاده کرده و در نهایت با فرمان زیر تغییرات را بررسی نماییم:
# cat /proc/sys/fs/file-max
نکتهها:
- soft limits و hard limits به موضوع محدودیت استفاده از منابع اشاره دارد مثلا یک فرآیند میتواند چه تعداد فرزند داشته باشد و …
hard limits، سقف محدودیت برای یک کاربر هست که کاربر هرگز اجازه دسترسی به این سقف را ندارد (توسط کاربر ریشه قابل تغییر است).
soft limits، حد هشدار برای یک کاربر یا مدیر سیستم است که به آنها نشان میدهد دارند به سقف محدودیت نزدیک میشوند.
با استفاده از فرمان ulimit قادر به کنترل منابع موجود برای شل یا فرآیندهایی که توسط آن اجرا میشوند خواهیم بود.
با توجه به راهنمای این فرمان با استفاده از ulimit –a میتوان تمام محدودیتهای سیستم را مشاهده و تغییر داد مثلا ulimit -l 1024 محدودیت حداکثر میزان حافظه قابل استفاده را برای کاربری که در آن قرار داریم از 64 کیلوبایت به 1024 کیلوبایت تغییر میدهد اگر به جای عدد 0 را وارد کنیم یعنی نامحدود.
جهت بررسی میزان محدودیت سخت از فرمان زیر استفاده میشود:
$ ulimit -Hn
4096
جهت بررسی میزان محدودیت نرم از فرمان زیر استفاده میشود:
$ ulimit -Sn
1024
توضیحات بالا برای تغییرات عمومی بوده که بر روی تمامی کاربران تاثیر میگذارد برای اعمال تغییرات بر روی یک کاربر خاص فایل limits.conf را ویرایش کرده و مطابق شکل زیر تغییر میدهیم (فرض میکنیم کاربر مورد نظر test نام دارد):
- اگر با این خطا “Too many open files (24)” مواجه شدید راهحل آن افزایش محدودیت تعداد فایلهای باز میباشد.