من و شک به سرور لینوکس

ماجرا از یک ماه قبل شروع شد. سرور لینوکس من شروع کرد به ادا و اطوار در آوردن. دردناک بود ! لینوکس و ادا و اطوار ؟ چون مساله بد کار کردن یک سرور لینوکس موضوع ناموسی است، راز رو در دلم نگه داشتم و فقط در جمع خانوادگی مطرح اش کردم. خیلی دنبال منبع ایجاد اشکال گشتم ولی چون یکی دو سفر هم در پیش بود گفتم فعلا کجدار و مریض باهاش بسازم تا برم و برگردم. وقتی برگشتم رفتم سراغش !

مشکل این بود که موقع کار با sql یا گاهی مواقع دیگه یکهو kernel شروع می کرد یکسری پیغام division by zero دادن و تقریبا تمام برنامه ها اجراشون مشکل پیدا می کرد. سعی کردم فدورای ۵ رو به فدورای ۶ آپ گرید کنم تا در همین حین احتمالا مشکلات هم حل بشه. بین کار نصب با مشکل مواجه شد: تقصیر سی دی خراب بود ! تلاش کردم کلا هارد رو فرمت کنم و دوباره نصب کنم: حتی فدورای قدیمی هم نصب نمی شد.

یک روز کار رو تعطیل کردم و گفتم فردا دبیان نصب می کنم. به دوست خوبم سی دی های دبیان رو سفارش دادم و رفتم خونه. توی خونه لیلا گفت سری هم به اوبونتوی سرور بزنم. ایده جالبی بود و چون اندیشه اوبونتو برام خیلی جذابه، تصمیم بر نصب اوبونتو گرفتم. امروز که با سی دی اوبونتو اومدم سر کار با عجیب ترین چیز زندگی مواجه شدم: حتی اوبونتو هم در مراحل آخر نصب هنگ می کرد !!! وحشتناک بود ! لینوکسی که این همه ازش تعریف کرده بودیم، دو روز کامل وقت من رو گرفه بود و هنوز هم نصب نشده بود (خوشبختانه شبکه رو از طریق روتر تقسیم کرده بودم و بقیه نیازی به سرور نداشتند).

فکر کردم چیکار کنم. سی دی رو چک کردم، سالم بود.. آه حیف شد. کاش خراب بود. موقع بوت لینوکس بهم اجازه می داد که رم رو هم تست کنم، تست کردم… حدس می زنید ؟ رم خراب بود !!! من دو ماجول یک گیگابایتی دارم که یکیشون اشکال داشت ! لعنتی ! یک لینوکس رو حذف کردم و دو روز هم وقت تلف کردم و

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

و تنها مشکل، مشکل سخت افزاری بود ؟!! اشکالی نداره چون می تونم به قسمت جذاب جریان نگاه کنم: الان یک سرور صفر کیلومتر اوبونتو دارم که دارم تنظیم اش می کنم برای شروع دوباره سرویس دهی. خوبی اوبونتو اینه که انسانی است و در عین حال بسیار جمع و جور در نتیجه همه کار رو خودم باید بکنم و کلی چیز یاد می گیرم (:

نتیجه اخلاقی: هرگز به کسی که دوستش دارید شک نکنید. مشکل به احتمال زیاد از جای دیگری است.

دریافت دائمی IP سرور لینوکس از طریق ایمیل

خب مساله چیه ؟ من می خوام برم سفر و لازم دارم که در حین سفر بخشی از وظایف مدیریت سیستم ام رو انجام بدم. برای اینکار باید دائما بتونم به سرورم لاگین کنم و تنظیمات لازم رو انجام بدم یا مشکلات رو حل کنم یا هر کار دیگه ای که پیش می یاد. برای اینکار لازم دارم تا دائما IP سرورم رو بدونم. این آی پی با وجود پول زیادی که سازمان من داره برای یک خط ADSL می ده (حدود چهل هزار تومان در ماه برای یک خط ۲۵۶. قیمتی تقریبا دوبرابر اون چیزی که در بقیه کشورها مردم برای یک خط ۸ مگ می دهند) هر لحظه ممکنه عوض بشه.

راه حل ؟ می دونم در لینوکس چیزی هست به اسم Cron که وظیفه اش اجرای منظم و متوالی دستورات است. در عین حال من بلدم با ifconfig وضعیت کل کارت شبکه ها و IP اونها رو ببینم. پس کافیه از سیستم خودم درخواست کنم که مثلا هر شش ساعت یکبار ifconfig رو برای من اجرا کنه و خروجی اش رو برام میل کنه به آدرس ایمیلم. اون وقت کافیه من روزی چهار بار ایمیل هام رو چک کنم تا بدونم هر لحظه آی پی سرورم چنده و وضعیت کارت شبکه هاش چطوره.

برای اینکار کافیه فایل کنترل کننده cron رو ادیت کنم یعنی

/etc/crontabs

اون رو ادیت می کنم و آخرش اضافه می کنم:

28 5,11,17,23 * * * root /root/sendifconfig.sh

حله ؟ اون اعداد اول می گن :‌ هر روزی از هفته و ماه سر ساعت ۵ یا ساعت ۱۱ یا ساعت ۱۷ یا ساعت ۲۳ و ۲۸ دقیقه لینوکسم فایل sendifconfig.sh رو اجرا کنه. حالا کافیه توی اون فایل بنویسم:

#!/bin/sh
ifconfig > fidata && mail -s ifdata jadijadi@gmail.com < ifdata

شکی نیست که راه کوتاهتری هم هست ولی چون آماتور هستم ترجیح می دم راه حل های صد در صد بدون خطا (مثلا درست کردن یک فایل و اجرای اون به جای اجرای مستقیم دستور) رو استفاده کنم تا غلط یابی راحت تر بشه. با این سبک کار من می تونم اول امتحان کنم که اصولا اسکریپتی که نوشته ام آدرس کارت شبکه رو ایمیل می کنه یا نه و وقتی مطمئن شدم که اسکریپت درست است از کرون استفاده کنم.

در صورتی که علاقمند به اطلاعات بیشتری درباره Cron بودید به راهنمای مقدماتی cron مراجعه کنید (انگلیسی ساده)

شبکه بی سیم روی لپ تاپ لینوکسی

اشاره:‌ اینها رو می نویسم تا اگر یک نفر دیگه دنبالشون گشت، پیداشون کنه ! لینوکس یک سیستم عامل جمعی مبتنی بر مشارکت است پس اگر آزادی را می خواهیم باید مشارکت کنیم.

من یک لپ تاپ vaio s580 یا همون vaio s5 دارم که روش فدورا پنج نصب است. بعد از مدت ها امروز تصمیم گرفتم شبکه بی سیم ام رو هم راه بندازم تا اگر یکهو رفتیم جایی که شبکه بی سیم داشت بتونیم استفاده کنیم (شاید یک هفته برم خارج رو بگردم ببینم چه خبره توی این خارج!).

کارت wireless من وقتی که با root دستور lspci رو می زنم به عنوان Intel Corporation PRO/Wireless 2915ABG MiniPCI Adapter نشون داده می شه. پس کرنل کارت wifi رو شناخته. مثل اینکه fedora 4 به بعد همه این کارت ها رو تحت عنوان lpw2200 می شناسه. آفرین !

حالا دگمه wifi رو روشن می کنم و به Add/Remove software می رم و دنبال lpw2200 می گردم چون می دانم که علاوه بر درایور باید firmwire رو هم نصب کنم. این جریان به برنامه اضافه می شه. یک بار کامپیوتر رو restart می کنم تا مطمئن باشم همه چیز سر جای خودشه (احتمالا اگر سواد کافی داشتم احتیاجی به این کار نبود).

حالا از منوهای گرافیکی به بخش adminstration Network می رم و در hardware می بینم که کارت بی سیمم نشون داده می شه. حالا کافیه یک device جدید تعریف کنم و بگم از نوع wireless است و کارتم رو انتخاب کنم و مشخصات شبکه (اسم شبکه و کد رمزگشایی) رو بهش بدم.

در نهایت device جدیدی که ساخته ام رو active می کنم و ip می گیره و بعد از قطع کابل شبکه، هنوز هم به شکل بی سیم وصل هستم ! لذت بخش و ساده.

راستی !‌ حالا که این کارها رو کردم و به اینترنت هم وصل هستم و اینها رو هم نوشتم بر می گردم سر کار ! قبل از رفتن به سفر باید مثل دایناسور کار کنم !

تصویر دسکتاپ

چند روزی است توی فروم ایرانی لینوکس (TechnoTux.ir) بچه ها دارند تصاویر دسکتاپشون رو می گذارند. من هم گفتم بذارم. فایل رو که آپلود کردم گفتم اینجا هم بذارم. البته من جزو اونایی هستم که دسکتاپ واقعا براشون میز کاره. در نتیجه کل علاقمندی های این چند وقت و کارهایی که می کنم و … (به جز Snow Crash.pdf) روی دسکتاپم قابل بررسی است (:‌ تصویر اصلی ضمیمه نامه است و تصویر کوچیک این شکلی:

بهینه سازی MySQL روی لینوکس

اشاره : این یک متن نیمه فنی است درباره بهینه کردن یک سرور MySQL روی لینوکس. مخاطب عمومی ندارد هرچند که خواندن اش بی مزه هم نیست (:

در حین کار رسیدم به جایی که باید روی بانک اطلاعاتی ای با حدود چهار میلیون رکورد حدود صد و شصت هزاربار جستجو و نتایج را ذخیره می کردم. برنامه مورد نظر را نوشتم و کار را شروع کردم. بعد از یکساعت تخمین زمانی اتمام کار حدود ۳۴ روز بود !

برنامه را اصلاح و بهینه کردم و بعد از اجرای دوباره تخمین اتمام کار حدود ۳۱ روز شد !

برنامه را MultiThreatMultiThreatd نوشتم (تقریبا به این معنا که برنامه می تواند به شکل موازی چندین بار اجرا شود) و اجرا کردم ولی زمان اتمام کار همان ۳۱ روز ماند ):

به کامپیوتر نگاه کردم و دیدم چراغ هارد یک نفس روشن است یعنی کل جستجو دارد از روی هارد انجام می شود. Bottle Neck پیدا شد: سرعت هارد. سعی کردم بانک اطلاعاتی چهارصد مگی را روی حافظه ببرم. اینترنت را به دنبال mysql optimization گشتم و در نهایت برای اینکار در فایل /etc/my.cnf دو خط زیر را اضافه کردم:

</pre>
[mysqld]

key_buffer_size=300M
read_buffer_size=300M
</pre >

و سرویس بانک اطلاعاتی را restart‌ کردم و برنامه را اجرا. سرعت بیشتر نشده بود ولی با نگاه کردن به /proc/meminfo می شد دید که بانک اطلاعاتی به حافظه منتقل شده است ولی به دلیل کمبود حافظه کماکان هارد به عنوان swap‌ کار می کند.

در مرحله بعد از مدیرم خواستم حافظه کامپیوترم را به 2GB ارتقاء بدهد. بعد از انجام این کار دوباره برنامه اولیه را اجرا کردم و به چراغ های کامپیوتر نگاه کردم. چراغ هارد برای چند ثانیه روشن بود و بعد کلا خاموش شد (همه بانک اطلاعاتی به رم منتقل شده بود). زمان متوسط اجرا رسید به چهار روز. حالا برنامه بهینه شده سه روز وقت می گرفت و نسخه multithread فقط یک و نیم روز. حالا برنامه در حال اجرا است.

معجزه لینوکس و جادی کلاه آبی

انگار کم کم باید یک طبقه بندی «لینوکس» باز کنم. یکی از خواص خوب این سیستم عامل انسانی اینه که دائما در حال بهتر شدن است. یعنی شما ممکنه یک روز کامپیوترتون رو روشن کنید و مشکلی که دیروز داشته خود به خود حل شده باشه ! مثلا من تا دیروز لپ تاپم امکان تصویر سازی سه بعدی نداشت و در نتیجه نمی تونستم از یکسری امکانات بسیار جذاب لینوکس (از جمله ScreenSaverهای فوق العاده اش) یا مثلا GoogleEarth و … استفاده کنم.
امروز که داشتم باهاش کار می کردم بهم گفت که یک کرنل (هسته سیستم عامل جدید) اومده. من هم دریافت اش کردم و کامپیوتر رو ریست کردم (بر خلاف ویندوز، لینوکس رو فقط وقتی ریست می کنید که سیستم عامل – و نه برنامه ها – رو ارتقاء داده باشید). کامپیوتر که بوت شد احساس کردم کمی کندتر کار می کنه ولی بعد از چند لحظه همه چیز سرعت عادی خودش رو پیدا کرد و یکهو(!) متوجه شدم که تصاویر سه بعدی دارم !!! جل الخالق !

یکی یک گوشه دنیا مشکل من رو داشته، اون رو حل کرده و راه حل رو در اختیار همه دنیا گذاشته. حالا من هم به خاطر تعلق به یک جامعه باز، از امکانات سه بعدی کارت گرافیک ام استفاده می کنم. به این دلیل است که می گویند لینوکس فقط یک سیستم عامل نیست، لینوکس یک فرهنگ است از طرف دیگه تکنولوژی لینوکس اجازه می ده که قطعات مختلف اون مستقل از یکدیگه به روز بشود. مثل ماشینی که می تونید موتور و سوپاپ و صندلی و فرمون و … اش رو به اختیار خودتون عوض کنید و دقیقا چیزی که می خواهید رو بسازید . این برای من لذت بخش است.

از اون طرف دیدم که من تا حالا برای جامعه باز متن کار چندانی نکردم ! پس به عنوان کار خوب امروز و برای پاس داشتن کمک به همدیگه و خودمون، با راهنمایی لیلا به سایت روز دارفور رفتم و این کلاه آبی سازمان ملل رو سرم گذاشتم تا بگم از همه مسوولین کشورها می خوام که به سازمان ملل فشار بیاورند تا کاری برای مردمی که در دارفور در حال مرگ هستند بکنه. درسته که سازمان ملل ناکارآ و حتی در مواردی فاسد به نظر می رسه ولی همین مداخله همین سازمان هم بهتر از هیچ چیه.

عکس های جشن نصب لینوکس

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

دستور از بالا

توضیح: توی لینوکس اگر جلوی هر دستوری sudo بزنید، سیستم عامل اون رو به عنوان «دستور از مقامات بالا» برداشت می کنه. یعنی دستوری که باید با بالاترین دسترسی اجرا بشه. اگر به کسی دستور دادید ساندویچ درست کنه و نکرد سریع جلوش یک sudo بگذارید !
منبع کاریکاتور: http://xkcd.com/c149.html