خطاهای پیش آمده در لینوکس و راه حل آنها

تجریبات بر طرف سازی خطاهای لینوکس

خطاهای پیش آمده در لینوکس و راه حل آنها

تجریبات بر طرف سازی خطاهای لینوکس

رفع مشکل -bash: /usr/bin/rm: Argument list too long

بر روی یک سرور قبلا اجراهایی صورت گرفته و فایل های زیادی تولید شده که باعث پر شدن کل فضای هارد سرور و از کار افتادن آن شده است.


پس از برگزاری جلسات با گروه مربوطه تصمیم به پاک کردن فایل های txt که دیگر مورد نیاز نبودند گرفتیم.

هنگامی که از دستور rm -rf استفاده کردم با پیام خطای زیر مواجه شدم.

-bash: /usr/bin/rm: Argument list too long


البته فقط دستور ls اجرا میشد.

ابتدا با دسته بندی کردن نام فایل ها به ترتیب آنها را حذف می کردم، اما این کار بسیار وقت گیر بود.


با جستجو در اینترنت به روش زیر رسیدم که بسیار عالی و سریع بود.

با دستور زیر حذف را به بلاک های 200 فایلی محدود می کنیم.


echo *.txt|xargs -n 200 rm -fv


می توان عدد 200 را زیادتر یا کمتر کرد که در هر بار حذف، همان تعداد را حذف می کند.


نحوه اجرای یک برنامه با استفاده از libfaketime

گاهی ضروری است که یک برنامه را در لینوکس در ساعت و زمان دیگری به جز زمان سیستم اجرا کنید.


یک راه حل دم دست اما نامناسب تغییر ساعت سیستم می باشد.

اما چرا نامناسب است، به دو دلیل زیر:

1- اول اینکه ممکن است شما دسترسی ادمین نداشته باشید.

2- حتی با داشتن دسترسی ادمین بر روی یک سیستم با چند کاربر احتمال بروز مشکل در کارهای دیگران را پیش می آورد.


همچنین اگر بخواهید اسکریپت را با crontab به صورت خودکار اجرا کنید امکان تغییر ساعت وجود ندارد.


یک راه استفاده از برنامه libfaketime  است. من این برنامه را در فضای کاربری خودم دانلود و کمپایل کردم.

نحوه استفاده از آن به شکل زیر است:

LD_PRELOAD=$faketimePATH/libfaketime.so.1 FAKETIME="@2022-01-01 01:01:00"   \

FAKETIME_DONT_RESET=1  \

"run your program"


با اجرای دستور بالا، زمان اجرای برنامه شما به ساعت 01:01:00 تاریخ 2022-01-01 تنظیم و آن برنامه در آن تاریخ اجرا می شود.

در اینحالت زمان سیستم شما تغییر نمیکند و سایر برنامه ها مطابق روال همیشه اجرا می شوند.

درست کردن dual boot برای لینوکس و ویندوز، بعد از نصب لینوکس

گاهی اوقات این مشکل با بعضی از توزیع های لینوکس پیش میاد.

لینوکس رو نصب میکنید اما با اینکه ویندوز هستش، تو صفحه بوت دیده نمیشه.


دلیل:

1- عمده دلیلی که من متوجه شدم، برای ویندوز 7 ( فکر کنم ویستا به بعد) یک پارتیشن اول 100 مگابایت و بعدا 500 مگابایت از نوع پریماری توسط ویندوز درست میشه که در این اواخر قالب بندی اون ntfs هستش.

2- تعدادی از توزیع های لینوکس از جمله CentOS پیش فرض ntfs رو پشتیبانی نمیکنند، لذا موقع نصب grub2 نمیتونه بوت لودر رو بدرستی بازسازی کنه.


راهکار:

1- نصب ntfs-3g

2- بازسازی grub2-boot


روش:

1- yum install epel-release

2- yum install ntfs-3g

3-grub2-mkconfig > /dev/null

اگر در خروجی دستور بالا grub2 توانست بوت لودر ویندوز رو پیدا کند، در لیست نمایش میدهد، در صورت اطمینان از یافته شدن ویندوز ادامه دهید 

4-cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.old

برای روز مبادا

5-grub2-mkconfig -o /boot/grub2/grub.cfg

و سپس سیستم را ریستارت کنید و در صفحه نمایش بوت، ویندوز را مشاهده کنید. 


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

yum  با استفاده از اینترنت سیستم دیگر


یکی از مشکلات ادمین ها، نصب برنامه های اضطراری بر روی سیستم لینوکسی است که اینترنت ندارد.

یکی از ساده ترین و بهترین روشها به صورت زیر است


استفاده از socks proxy


گام اول


ssh -D port_number -d -C -q -N user@linuxWithInternet


گام دوم


اضافه کردن این خط در فایل 

/etc/yum.conf

proxy=socks5://127.0.0.1:port_number 


گام سوم


استفاده از دستور yum برای نصب برنامه های مورد نیاز



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

DENYHOSTS برنامه بسیار مناسبی برای پیش گیری از SSH ATTACK روی سرورهای لینوکسی متصل به اینترنت می باشد.

این برنامه با قرار  دادن IP فرد نفوذگر در  لیست سیاه مانع تقاضای مجدد ارتباط SSH از همان IP می گردد.

اما همین موضوع مشکلاتی را هم به همراه می آورد. به عنوان مثال اگر هنگام ورود خودتان و یا همکارتان اشتباهی در ورود پسورد یا شناسه ورود داشته باشید و این با تنظیمات DENYHOSTS باعث بشود که IP شما و یا همکارتان در لیست سیاه قرار بگیرد، ارتباط های بعدی شما با سرور دچار اختلال خواهد گردید.

در این صورت چندین روش برای بر طرف کردن و رفع این مشکل وجود دارد که برای همه آنها می بایست از طریق یک سیستم و یا IP دیگر بتوانید به سرورتان متصل شوید.

سپس فایل /etc/hosts.allow/ را ادیت کرده و دستور زیر را در انتهای فایل به ازای هر آدرس شبکه و یا IP وارد میکنید:


ALL: XXX.YYY.ZZZ.0/24

که به جای XXX.YYY.ZZZ.0   و سابنت 24 IP و سابنت مربوط به آنرا وارد می نمایید.

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


به جز این دو روش دیگر هم برای دسترسی وجود دارد که در پست های بعدی به آن خواهم پرداخت