بررسي فايل‌های هسته لینوکس

اطلاعات خوب و زيادي را مي‌توان از proc/ در لينوكس بيرون كشيد، اما proc/ تنها براي دريافت اطلاعات سيستمي و تبديل آنها به شكل متني نيست.

مي‌توان از اين دايركتوري مفيد براي قراردادن اطلاعات در سيستم يا تغيير آنها استفاده كرد.

دايركتوري sys/ كه اطلاعات متغيرهاي هسته سيستم در آن نگهداري مي‌شود، پردسترس‌ترين نقطه براي تغيير اطلاعات است. تغييراتي كه در اينجا انجام مي‌شود، فورا و بدون نياز به راه‌اندازي مجدد سيستم موثر خواهند بود. اين يعني بهشت واقعي براي مديران سيستم!

توجه داشته باشيد كه براي انجام اين تغييرات نياز به دسترسي ريشه (sudo) داريد.

تغييرات شبكه

مسير proc/sys/net/ipv4/ شامل مقادير مرتبط با شبكه است كه مي‌توان با آنها سرگرم شد.

مسير /proc/sys/net/ipv4/tcp_keepalive_time/ مشخص مي‌كند كه در مقياس ثانيه، چه ميزان طول بكشد تا روتين TCP مرتبط نخستين بسته keepalive را ارسال كند.

پيغام keepalive تنها مسووليت تشخيص زنده بودن و سالم بودن سمت ديگر اتصال را به عهده دارد، در صورتي كه سمت ديگر پاسخي به اين بسته ارسال نكرد، اتصال با آن طرف قطع خواهد شد.

هر چند ميزان پيش‌فرض اتصال 7200 ثانيه (2 ساعت) است، اما اگر سشن ارسالي شما در اين مدت احتمال منقضي شدن دارد، بهتر است اين مقدار را به عددي كمتر تغيير داده تا بسته keepalive سريع‌تر ارسال شود و اگر سمت ديگر در دسترس نبود، اتصال را سريع‌تر قطع و منابع شبكه را آزاد كند.

تنظيم اين عدد به 120 ثانيه باعث مي‌شود بعد از 2 دقيقه، پيغام keepalive ارسال شود. دستور زير اين مقدار را به 120 تغيير مي‌دهد:

echo 120 » /proc/sys/net/ipv4/tcp_keepalive_time

بعد از نخستين بسته ارسالي keepalive، زمان بين بسته‌هاي ارسالي keepalive بعدي 75 ثانيه تنظيم شده است.

براي تغيير اين موضوع نيز مي‌توان متغير proc/sys/ net/ipv4/tcp_keepalive_intvl/ را تغيير داد. (توجه داشته باشيد كه كوتاه‌ كردن زمان keepalive، ترافيك شبكه را افزايش خواهد داد، هر چند اين بسته‌ها بسيار كوچك هستند و تفاوت چشمگير نخواهد بود.)

يكي ديگر از مقادير مفيد proc/sys/net/ipv4/tcp_keepalive_probes/ است كه نشان مي‌دهد چند كاوشگر keepalive اگر به مقصد نرسند، اتصال غيرمفيد خوانده شده و قطع مي‌شود.

به ‌صورت پيش‌فرض اين مقدار روي عدد 9 قرار داده شده كه در صورتي كه شبكه با مشكل مواجه است يا موقتا در حال تعمير است، اين ميزان را مي‌توان به عددي بيشتر تغيير داد تا اتصال‌ها از بين نروند و ميزان تراكنش‌هاي نيمه كاره زياد نشود. اين عمل با دستور زير انجام مي‌شود:

echo 15 » /proc/sys/net/ipv4/tcp_keepalive_probes

براي تغييرات در proc/ بهتر است از echo به‌جاي ويرايشگر متني استفاده شود. اگر فايل را در ويرايشگر متني باز كنيد، كرنل سيستم به‌طور مداوم از آن استفاده مي‌كند، حتي هنگامي كه در حال ويرايش آن هستيد. از اين رو ممكن است هسته سيستم با عدم دسترسي صحيح به فايل، از كار بيفتد.

براي جلوگيري از اين موضوع، بهتر است از echo براي ويرايش اين نوع فايل‌ها و cat براي مشاهده داخل آن استفاده كرد.

يك فايل مفيد ديگر، فايل proc/sys/net/ipv4/ip_forward/ است كه به‌كمك آن مي‌توان انتقال IP را انجام داد.

در بيشتر شبكه‌ها از انتقال IP استفاده نمي‌شود، اما در برخي كاربردها مثل ايجاد VPN يا سرورهاي دريافت تماس، اين امر مي‌تواند مفيد باشد. (دقت داشته باشيد كه انتقال نامحدود IP يك خطر امنيتي است!) مي‌توان اين مقدار را به يك براي فعال كردن و صفر براي غيرفعال كردن تغيير داد:

echo 1 » /proc/sys/net/ipv4/ip_forward

در ادامه نيز چند مقدار ديگر را بررسي مي‌كنيم كه كاركردن با آنها تجربه جالبي است:

تغيـــير proc/sys/fs/file-max/ تعــــداد filehandle هاي در دسترس سيستم را مشخص مي‌كند. اين مقدار در صورتي كه به حداكثر خود برسد، پيغام خطا صادر مي‌كند، چرا كه تعيين مي‌كند چه تعداد فايلي در سيستم مي‌تواند باز بماند. بعد از اين كه اين مقدار به حداكثر برسد، ديگر نمي‌توان فايل جديدي باز كرد.

عدد پيش‌فرض آن 4096 است، اما مي‌توان از هر عدد ديگري نيز استفاده كرد. (احتمالا بهترين كاربرد اين مقدار، كاستن و كم كردن آن براي كاربران است). مي‌توان همين كار را براي inodeها نيز انجام داد كه در مسير proc/sys/fs/inode-max/ قرار دارند.

هرچند تعداد كلي inode هاي در دسترس سيستم را نمي‌توان به‌اين طريق تغيير داد.

همچنين مي‌توان براي كليدهاي تركيبي Ctrl+Alt+Delete يك پاسخ ايجاد كرد كه در مسير proc/sys/kernel/ctrl-alt-del/ قرار دارد. تغيير اين ميزان به يك باعث مي‌شود سيستم خاموش شود (انگار كه دستور shutdown–h را وارد كرده باشيد)

echo 1 » /proc/sys/kernel/ctrl-alt-del

همچنين مي‌توان براي تشخيص hostname شبكه، مقدار proc/sys/kernel/hostname/ را تغيير داد. بهتر است در صورتي كه از DHCP استفاده مي‌كنيد، مواظب اين مقدار باشيد، چون ممكن است با سرويسهای دیگر تداخل پيدا كند.

cat proc/sys/kernel/hostname/

Linux

اگر روي سرور NFS خود با مشكل سرريزشدن مواجه شده‌ايد، مي‌توانيد ميزان صف حافظه سرور را با تغيير مقادير :

rmem_default

rmem_max

wmem_default

wmem_max

كه در مسير /proc/sys/net/core/ قرار دارند، تغيير دهيد.

عدد 262114 (256 كيلوبايت) را به عنوان شروع تعيين كنيد، اگر باز هم مشكل داشتيد، اين مقدار را بيشتر كنيد. اگر باز هم در مسير /proc/sys/ بگرديم، باز هم مي‌توان فايل‌هاي ديگري را پيدا كرد كه براي تغييرات سيستمي مفيد باشند.

به طور كلي اگر يك فايل قابليت نوشتن داشته باشد، پس مي‌توان آن را تغيير داد، اما بايد توجه كرد در صورتي كه بدون راهنما مشغول به اين كار شويد، ممكن است سيستم خود را از كار بيندازيد! خبر خوب اين است كه تغييرات اينچنيني تنها تا زماني معتبر هستند كه سيستم را مجددا راه‌اندازي كنيد؛

براي دائمي كردن تغييرات بايد از sysctl و etc/sysctl.conf/ استفاده كرد.

با تايپ دستور زیر مي‌توان نگاهي به فهرست پارامترهاي اين دستور انداخت:

sysctl –a | less 

كاركردن با تنظيمات موجود در /proc/sys/ روش مفيدي براي آزمون و خطا قبل از اعمال تغييرات نهايي است.

اطلاعات زيادي در دايركتوري proc قرار دارد كه فرصت بررسي همه آنها پيش نيامد. براي پيشبرد اين مبحث بهتر است با كمك صفحه راهنما، به كشف دايركتوري proc/ و قابليت‌هاي جالب تنظيم سيستم بپردازيد.

منبع:

https://man7.org