برای همیشه از شر پنجره‌های System Program Problem Detected اوبونتو راحت بشین

کنونیکال تلاش زیادی می کنه تا کیفیت نسخه گنو/لینوکسش رو بالا ببره و یکی از ابزارهاش در اینکار، Apport است؛ برنامه ای برای ریپورت اتوماتیک مشکلات پیش اومده در برنامه‌ها. چون اکثر آدم‌ها حرفه ای نیستن و نمی دونن باید مشکلات برنامه ها رو چطوری بازتولید و ریپورت کنن، این سرویس سعی می کنه در صورت دیدن هر کرشی در هر برنامه‌ای، اون رو در var/crash/ ذخیره و بعد ریپورت کنه. دقیقا همین دایرکتوری است که وقتی فایلی توش باشه، باعث می شه موقع بوت شدن اوبونتو شما این پنجره رو ببینین:

System-Program-Problem-Detected

این پنجره ذاتا چیز بدی نیست ولی خب اکثر ما ریپورت نمی کنیم و دوست هم نداریم کامپیوترمون هی بوت شدن یکسری «ارور» بده! به همین خاطر اگر می خواین از شر این پیشنهادهای بی شرمانه ریپورت کردن راحت بشین، اول اون دایرکتوری رو خالی کنین تا دیگه موقع بوت اوبونتو پیشنهاد ریپورت نده و بعد اگر کلا می خواین هیچ وقت چیزی رو ریپورت نکنین به فایل زیر برین و اون متغیر رو از از یک به صفر تغییر بدین:

root@funlife:~# cat /etc/default/apport 
# set this to 0 to disable apport, or to 1 to enable it
# you can temporarily override this with
# sudo service apport start force_start=1
enabled=0

و از دست اون پنجره‌های منحوس که همیشه باعث می شن من فکر کنم اوبونتوم خرابه، راحت بشین.

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

آیا به دانشگاه برم؟ به دردسرش می ارزه؟

این سوال رو زیاد می پرسن. راستش رو بخواین من هم زمان کنکورم بود یکی از Day Dreamهام این بود که بیخیال کنکور و دانشگاه بشم و برم سراغ شرکت باز کردن (دقیقا نمی دونستم چی! فقط اسم شرکت رو می گفتم به عنوان یک شغل) یا مدرک های لینوکس گرفتن یا هر راه فرار دیگه ای برای خلاصی از کنکور.

صادق باشیم: در بسیاری از مواقع، اینها راه فرار هستن نه نقشه واقعی. متاسفانه رفتن به دانشگاه فعلا معقول ترین مسیر پیشرفته؛ بخصوص توی ایران. دلایلش هم خیلی ساده است. به چند تاش اشاره می کنم.

مهمترین دلیل اینه که دوران دانشجویی دوران خیلی خاصیه. نه خانواده از شما انتظار خاصی داره نه جامعه. می تونین هر جینگولک بازی ای که می خواین رو در بیارین (از بلند کردن مو گرفته تا انقلاب کردن تا نقد تا فاز هنری گرفتن تا سفر شمال تا …) و مدعی بشین که «دانشجو» هستین (: دوران تحت کنترل کامل خانواده بودن گذشته و دوران مسوولیت مالی داشتن هم هنوز نرسیده. این دوران خاص رو از دست ندین

دومین دلیل اینه که دانشگاه اولین محیط مختلط است که بالاخره حکومت ما -کمابیش- قبول می کنه دو نفر آدم حق دارن کنار هم باشن و با هم حرف بزنن. این رو هم الکی از خودتون نگیرین. زمین تا آسمون با پارتی مختلط و اینها متفاوت است. یک تعامل واقعی با جنس مقابل.

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

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

می‌بینین؟‌ شاید از نظر عقلی بشه گفت که در سطح علمی مدارک معتبر گرفتن بهتر از دانشگاه رفتنه ولی در دنیای واقعی دور و بر ما، دانشگاه اهمیت خیلی خاصی داره که هر استدلالی که «دانشگاه نرم فلان کار رو بکنم»‌ رو تبدیل می کنه به یک بهانه برای فرار از سختی‌های رفتن به دانشگاه. درسته که این روزها ورود به یکسری از دانشگاه ها خیلی سخته و سال های خوبی از زندگی رو حروم می کنه ولی اگر تصمیم می گیریم نریم دانشگاه لازم نیست دنبال بهانه هایی مثل «دانشگاه مفید نیست» قایم بشیم (:‌ خب روراست بگیم حوصله نداریم دو سال جون بکنیم و رقابت کنیم.. در ضمن چیزهایی مثل دانشگاه آزاد رو هم خدا آفریده دیگه… ورود بهشون راحت تره اسمشون هم دانشگاهه و یکسری از موارد بالا رو هم پاسخگو.

مغلطه: بیل گیتس و جابز و زوکربرگ دانشگاه رو تموم نکردن

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

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

معیار شخصی

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

چرا گنو لینوکس رو دوست دارم: ساخت فایل آرشیو رادیوگیک

آپدیت اردیبهشت ۹۳: حالا که مشغول شماره ۴۰ هستیم این فایل فشار زیادی به سرور می یاره و در نتیجه غیرفعالش کردم.. برای دانلود همه شماره ها به آرشیو رادیو گیک روی گیت آی او مراجعه کنین.

یک درخواست اومده به این عنوان:

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

webmaster@server:~/public_html/audio$ ls 
jadi.net_radio-geek_000-dragon-pirates.mp3         jadi-net_radio-geek_004_ashke-maahi-haa.mp3  
radio-geek_jadi.net_000-start.mp3                  jadi-net_radio-geek_001_singularity.mp3            
jadi-net_radio-geek_004_ashke-maahi-haa.ogg        shegeftzar.9.10.khoonasham.sample.story_low.mp3
jadi-net_radio-geek_002_space-and-beyond.mp3       radio24-23-November-2011.mp3                 
shegeftzar.9.10.khoonasham.sample.story.mp3        jadi-net_radio-geek_003_ghoole_bazare_makkare.mp3  
radio24-9-November-2011.mp3                        jadi-net_radio-geek_003_ghoole_bazare_makkare.ogg

در اصل هر فایلی که اینجا باشه و اولش با jadi-net_radio-geek شروع بشه مال رادیو است. پس می شه همه اش رو یکجا فشرده کرد:

webmaster@server:~$ cd ~/public_html/audio/ && tar cfz ../radio_geek_all.tar.gz jadi-net_radio-geek*mp3 

پس حالا فایلی دارم که فشرده همه نسخه های ام پی تری رادیو گیک است و در این مسیر قابل دسترسی:

http://jadi.net/radio_geek_all.tar.gz

فقط یک قدم دیگه می مونه که کارها رو اتوماتیک کنم. cron توی یونیکس ها این وظیفه رو داره. کافیه بزنم cron -e یعنی می خوام یک کرون جدید تعریف کنم و توش بنویسم:

# m h  dom mon dow   command
42	3	*	*	2	cd /home/jadi/public_html/audio/ && \
                                             tar cfz ../radio_geek_archive.tar.gz jadi-net_radio-geek*mp3

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

تنظیم کل اینکار کمتر از دو سه دقیقه طول می کشه (: برای همین می گیم لینوکس رو دوست داریم چون ایده ها رو به سادگی عملی می کنه: مثل یک جعبه ابزار دارای کلی ابزار مفید که با هم ترکیبشون می کنیم و یک ایده رو سریعا عملی می کنیم.

آپدیت اردیبهشت ۹۳: حالا که مشغول شماره ۴۰ هستیم این فایل فشار زیادی به سرور می یاره و در نتیجه غیرفعالش کردم.. برای دانلود همه شماره ها به آرشیو رادیو گیک روی گیت آی او مراجعه کنین.

اگر سیستم عامل ها ماشین بودند

ویندوز ایکس پی


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

ویندوز هفت


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

ویندوز هشت


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

مک


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

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

لینوکس


ماسل کار یا همون خودورهای عضلانی. خودرویی قوی و زیبا که برای هر کسی خوب نیست. باید علاقمند باشین به مکانیک خودرو. باید از آگاهی از مفاهیم خودرو لذت ببرین و پیشاپیش بدونین که احتمالا در صورت خرابی ماشینتون به خاطر موتور قوی اش صداهای عجیب و غریبی خواهد داد که باعث خنده همه خواهد شد. در ضمن بهترین مکانیک ها و بهترین طراح های دنیا این خودرو رو طراحی کردن اما اگر خراب بشه نمی تونین بهشون غر بزنن و باید آماده باشین کسی بهتون بگه «جدی اینجاش خرابه؟ خوشحال می شیم درست کنی به ما هم بگی چطوری درست شده». این خودرو مال کسی است که خودرو و مفاهیمش رو دوست داشته باشه هرچند که می تونین اون رو بعد از تنظیم خوب، به مادرتون هم بدین و مطمئن باشین که در طول ده سال آینده مثل روز اول کار خواهد کرد. یعنی اگر همه چیزش درست بوده درست می مونه و اگر چیزیش خراب بوده، مادرتون غیر ممکنه بتونه درستش کنه.

حرف اصلی


اینکه چیکاره هستین رو ماشینتون مشخص نمی کنه. کسی با لینوکس هکر نمی شه، با مک هنرمند نمی شه و با ویندوز مهندس یا دکتر یا نویسنده یا عکاس یا هر چیزی. برای خیلی ها شاید انتخاب ماشین یک مساله اخلاقی یا فلسفی باشه ولی برای اکثریت چیزی که مهمه خود ماشین سواری نیست بلکه مساله تعیین کننده اینه که وقتی سوار ماشینشون می شن کجا می رن.

توضیحات تکمیلی

  1. دوستان از پشت صحنه می گن اون پژو ۴۰۷ است. به حق چیزهای نشنیده و ندیده ولی ظاهرا درسته. اصلاحش کردم به ۲۰۷
  2. گفته شد که ماشین دو گانه سوز هم می شه دوال بوت
  3. داس پنج به قبل پیشنهاد شد به روروئک و داس شش به روروئک موتور دار یا اسکوتر موتوری
  4. در باز است، باز پرنده است پس در پرنده است سفسطه است. اینکه کسی مثلا از ژیان بدش بیاد و از لینوکس هم بدش بیاد دلیل نمی شه که لینوکس ژیان باشه. باید خصوصیات مشابه بیشتری نشون بدین تا بتونین ادعا کنین چیزی به چیزی شبیه است.
  5. دويست و شش يه سيستم پلاگين خور و قابل توسعه است. سيستم برقش يه چيزي داره مشابه باس که هر قطعه اي اگر با استاندارش صحبت کنه سوارش مي شه و پردازنده مرکزي مي شناسدش. تمام قطعات خودرو مثل پلاگين هستن, قابل تعويض و توسعه.
    حالا اين کجاش ويندوزه؟!

یادگرفتن از یک پرسش: خطای محدودیت میزان حافظه limits.conf

یک مزیت بزرگ لینوکس برای من اینه که توش حل مشکلات می تونن منجر به چیز یاد گرفتن و پیشرفت مهارت ها و دانش آدم بشن. چنین چیزی وقتی راه حل همیشه «دوباره نصب کن» یا «فلان برنامه رو نصب و اجرا کن ببین مشکل حل می شه یا نه» باشه، اتفاق نمی افته. مثلا به این مورد نگاه کنین:

توی فروم فدورا اکبر پرسیده:

سلام خدمت دوستان
وقتی برنامه ardour 2.8.12 را اجرا میکنم پیغام زیر ظاهر میشه البته داخل پیام توضیحاتی داده که احتیاج اطلاعات تخصصی داره:

WARNING: Your system has a limit for maximum amount of locked memory. This might cause Ardour to run out of memory before your system runs out of memory.
You can view the memory limit with ‘ulimit -l’, and it is normally controlled by /etc/security/limits.conf

خب من جواب خیلی دقیق رو نمی دونم. ایده هایی در مورد لیمیت ها، page‌کردن در لینوکس و مدیریت حافظه دارم ولی این مورد به نظر چیز جالبی می یاد و فرصتی است برای یاد گرفتن. اول دستور ulimit رو با man ulimit یاد می گیرم. گفته با سوییچ a- میشه محدودیت ها رو دید. من مال خودم رو چک می کنم:

jadi@jubung:~$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 62804
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 62804
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

و می بینم که محدودیت لاک حافظه برای من ۶۴ کیلوبایت است. این یعنی کاربر من فقط حق داره ۶۴ کیلوبایت حافظه رو لاک کنه و احتمالا مربوط به تابع mlock توی برنامه نویسی. از اینجا شروع به سرچ می کنم و با ترکیب سرچ ها و خونده ها و اطلاعات شخصی ام به نتایج جالبی می رسم.

می دونیم که برنامه ها برای اجرا به حافظه احتیاج دارن. این حافظه معمولا از طریق تعریف متغیر و اینجور چیزها اشغال می شه و این سیستم عامل است که تصمیم می گیره چقدر از این اطلاعات رو واقعا توی مموری رم نگه داره و چقدر از اون رو page کنه توی swap. بذار یک کم برگردیم عقب.

لینوس که اولین بار کرنل رو نوشت، کامپیوترش مشکل کمبود رم داشت. حتی راحت نمی تونست بعضی چیزها رو کمپایل کنه. لینوس یک ابتکار زد – که البته شناخته شده بود ولی از یک کرنل دانشجویی انتظارش نمی رفت – و اونهم این بود که هر بار کامپیوتر رم کم می آورد، بخشی از رم فعلی که در این لحظه مورد استفاده نبود رو روی دیسک می نوشت و بعدا که رم خالی می شد راحت کارهاش رو می کرد و اگر هم در آینده کسی با اون بخش page out شده رم کار داشت، دوباره می رفت از رو دیسک اونو می خوند و می آورد توی رم تحویل برنامه محتاجش می داد. این یک انقلاب بود و خیلی از کسانی که اولین بار لینوکس رو می دیدن، شیفته این قابلیت می شد که می ذاشت شما روی یک کامپیوتر ضعیف، هر کار بزرگی رو با صبر و حوصله انجام بدین. در اصل با این ایده مفهوم «رم کم آوردن» دیگه از بین رفته بود.

همین حالا هم اون پارتیشن swap که درست می کنیم دقیقا کارش همینه. حتی اگر دستور top رو بزنی در دو خط آخر هدر این رو می بینی:

top - 11:00:56 up 1 day, 23:02,  5 users,  load average: 1.06, 1.08, 1.22
Tasks: 230 total,   2 running, 227 sleeping,   0 stopped,   1 zombie
Cpu(s):  9.2%us,  6.6%sy,  0.0%ni, 84.2%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   8062928k total,  7358752k used,   704176k free,   139228k buffers
Swap:  8395772k total,    59136k used,  8336636k free,  2854564k cached

که می گه کامپیوتر من هشت گیگ رم واقعی داره و اگر اون کم بیاد می تونه هشت گیگش رو هم روی دیسک بنویسه و از دیسک به عنوان رم استفاده کنه (زیاد رم دارم؟ اصلا.. رم مهمترین چیز در کامپیوتره و خیلی هم ارزونه. من ترجیح می دم به جای ای۷، آی۵ داشته باشیم ولی هشت گیگ رم رو از دست ندم).

اما ممکنه یک برنامه به هردلیلی بخواد جلوی اینکار رو بگیره و مطمئن باشه که براش فلان مقدار رم واقعی از پیش کنار گذاشته شده! تابع mlock اینکار رو می کنه. من می تونم موقع برنامه نویسی به سیستم عامل دستور بدم که «برای من یک مگ رم واقعی بذار کنار، به هیچ کس نده اونو و pageش هم نکن و بذار توی رم آماده به کار باشه». خب اینو همه برنامه ها دوست خواهند داشت از جمله برنامه ضبط صدای تو که چون داره صدای حرفه ای ضبط می کنه اصلا نباید منتظر دیسک و حافظه خالی نبودن و اینها باشه پس سعی می کنه وقتی می یاد بالا برای خودش یک حافظه اختصاصی درخواست کنه.

اما توی سیستم عامل دیدیم که گفتیم:‌

jadi@jubung:~$ ulimit -a | grep memory
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
virtual memory          (kbytes, -v) unlimited

یعنی محدودیتی برای کاربر گذاشتیم که کلا همه برنامه های این کاربر روی هم نتونن بیشتر از ۶۴ کیلوبایت حافظه رو تا لحظه که می خوان توی خود رم واقعی به خودشون اختصاص بدن. این عدد خیلی کوچیکه و در اصل معنی اش اینه که «کسی نمی تونه حافظه رو برای خودش برداره، سیستم عامل است که تقسیم می کنه بر اساس تشخیص خودش». اگر کسی دوست داشته این محدودیت رو به شکل موقت عوض کنه می زنه ulimit -l 1024 یا هر عدد دیگه و اگر بخواد برای همیشه اینو تغییر بده،‌ etc/security/limits.conf/ رو ادیت می کنه.

نکته: به جای عدد اگر بزنی 0 یعنی «نامحدود»

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

یکبار برای همیشه: لینوکس، توزیع‌ها، میزکارها، بهترین توزیع و …

این سوالها، سوال‌هایی همیشگی هستند: فرق لینوکس‌های مختلف با هم چیست؟ میز کار چیست؟ گنوم و کی.دی.ای. چه فرقی دارند؟ بهترین توزیع کدام است؟ و … در دنیای آزاد می‌گویند که سوال هوشمندانه، جواب هوشمندانه می‌گیرد. اینبار هم سوال خوب و مفصل و دقیق حمیدرضا، باعث شده تصمیم بگیرم یک جواب دقیق و مفصل به همه این سوال‌ها بدهم (:

سیستم عامل چیست؟ لینوکس در مقابل گنو/لینوکس



برنامه‌های ما سه دسته هستند:
هسته سیستم عامل،‌ اجزای دیگر سیستم

عامل و برنامه‌های مستقل.

ما از کامپیوتر چه می‌خواهیم؟ اجرای برنامه‌های مورد نظر. گاهی این برنامه‌ها سطح بالا و عمومی هستند (مثل فایرفاکس) و گاهی سطح پایین‌تر و خاص تر مثل لاگین از راه دور در یک سرور. گاهی ساده و تک منظوره مثل کپی فایل و گاهی با قابلیت انجام کلی کار مثل برنامه‌های چت چندپروتکله. این برنامه‌ها بعضی وقت‌ها بخشی از سیستم عامل هستند (مثل دستور کپی) و گاهی برنامه‌های مستقل (مثل فایرفاکس). اما به هرحال همه اینها توسط یک بخش داخلی‌تر از سیستم عامل به اسم «هسته/کرنل/Kernel» کنترل می‌شوند.

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

حالا داستان لینوکس برمی‌گردد به حوالی سال ۱۹۸۳. در آن سال استالمن افسانه‌ای که از تجاری بودن همه سیستم‌عامل‌ها خسته شه بود، اعلام کرد که می‌خواهد یک سیستم عامل مشابه یونیکس آزاد بنویسد. او اسم این پروژه را گنو گذاشت و از لوگوی گوزن یالدار آمریکای شمالی برای آن استفاده کرد.
یادتان که هست سیستم عامل از دو بخش هسته و برنامه‌های مرتبط ایجاد شده. پس اگر بگویم که این پروژه هیچ وقت به طور کامل تمام نشد باید بپرسید: کدام بخشش؟ جواب «هسته» است. این پروژه باعث شد حجم عظیمی نرم‌افزار آزاد و بازمتن که برای کارکرد کامل یک سیستم عامل لازم هستند نوشته شود (از شل که دستورات را در آن تایپ می‌کنید بگیرید تا کپی و پینگ و لاگین به سیستم‌های راه دور و تنظیمات شبکه و حتی یک کمپایلر عالی سی) اما هسته این سیستم عامل (رابط با سخت‌افزار و حافظه و سی.پی.یو.) که قرار بود هرد نامیده شود هنوز که هنوز است تمام نشده.

دقیقا اینجا بود که پنگوئن به فیلم اضافه شد. در اوایل دهه ۹۰، لینوس توروالدز به عنوان تفریح، یک هسته سیستم عامل نوشت و اسمش را گذاشت لینوکس و علامتش را هم همان پنگوئن مشهور و دوست داشتنی (:

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

توزیع چیست؟‌ داستان ردهت و دبیان و اوبونتو و مینت و سورس میج و سابایون و … چیه؟

لینوکس گام به گام توسط استفاده کننده برای استفاده کننده ساخته شده. پس برگردید به بحث قبلی تا یک قدم جلوتر برویم. گفتیم که پروژه گنو/لینوکس از پیوستن ابزار سیستم عامل گنو و هسته لینوکس به وجود آمد. حالا فرض کنید شما بخواهید آن را نصب کنید. چکار باید بکنید؟ در حالت قدیم، باید یک متخصص کامل یونیکس باشید. باید هسته را بگیرید و کمپایل کنید. بعد یک دیسک را فرمت کنید و بوت سکتور را جوری تنظیم کنید که از این کرنل بوت شود. بعد دستورات (برنامه‌های) دیگر را روی آن کپی کنید و تمام وابستگی‌ها را هم رعایت کنید… اگر فکر می‌کنید سخت است باید بگویم که یا واقعا حرفه‌ای هستید یا متوجه اصل جریان نشده‌اید (:‌ این روند از نظر من غیرممکن است (:

برای حل این مشکل، افراد و شرکت‌هایی آمده‌اند و دیسترو/Distro ها را ساخته‌اند که ترجمه خوبش، توزیع است. در همان سال ۱۹۹۲ که هسته لینوکس آمد، توزیع‌ها هم ظاهر شدند. آدم‌ها هسته را به همراه چند برنامه اصلی و یک برنامه نصب کننده روی یکی دو فلاپی جا می‌دادند و بین دیگران پخش می‌کردند. حالا دیگر کافی بود فلاپی اول را در درایو بگذارید و روند نصب را پی گیری کنید تا در نهایت به یک کامپیوتر گنو/لینوکس کامل برسید. توزیع‌ها کم کم زیاد شدند. هر شرکت یا گروهی کرنل را برمی‌داشت و به همراه برنامه‌های گنوی انتخابی و حتی برنامه‌های مستقل ولی آزاد (مثل اپن آفیس، فایرفاکس، پخش کننده ویدئو و ..)‌ روی یک سی دی یا دی وی دی رایت می‌کرد و بین بقیه پخش می‌کرد. بعضی‌ها هم که نمی‌خواستند خودشان همه کار را از صفر مدیریت کنند، یک دیسترو / توزیع مادر را برمی‌داشتند و بنا به نیاز خودشان یک دیستروی جدید از آن منشعب می‌کردند (مثلا اوبونتو که از دبیان منشعب شده). یک نمودار متحیر کننده و عالی از روند به وجود آمدن دیستروها را در اینجا ببینید.

تفاوت توزیع‌ها با یکدیگر معمولا در چند نکته است: گروه هدف (بعضی‌ها مخصوص یک گروه خاص درست شده‌اند، مثلا کاربران ایرانی)، مدیریت بسته (برنامه‌های جدید از چه طریقی نصب می‌شوند و گنو/لینوکس چطور روند نصب اتوماتیک بسته‌های نرم‌افزاری را کنترل می‌کند) و میز کار (بعدا حرف می‌زنیم). گاهی هم بعضی از توزیع‌ها تجاری هستند. مثلا ردهت که به عنوان یک شرکت تجاری، برای پیشتیبانی و کارهای دیگر، پول می‌گیرد. این روزها توزیع‌های زنده (Live) هم بسیار مرسوم شده‌اند. اینها توزیع‌هایی هستند که بدون نصب هم می‌توانند کامپیوتر را بوت کنند و بعد از بوت شدن به شکل کامل، در صورت علاقمندی می‌توان آن‌ها را نصب کرد.

در نهایت این را هم اضافه کنم که تهیه کنندگان توزیع‌ها، بسته‌های متفاوتی را برای توزیع‌شان انتخاب می‌کنند. مثلا توزیع پارسیکس به شکل پیشفرض لغتنامه فارسی را در سی دی خود را قرار داده. قابل ذکر است که تقریبا تمام نرم‌افزارهای مرسوم را می‌شود روی همه توزیع‌های مرسوم در هر لحظه حذف و اضافه کرد.

میز کار کار چیست؟ گنوم یا کی.دی.ای.؟

تا حالا می‌دانید که لینوکس هسته است. یک هسته کار گرافیکی نمی‌کند. برای ارتباط گرافیکی با کامپیوتر (همان چیزی که این روزها به آن عادت داریم) باید یک مدیر پنجره نصب کنیم و روی آن یک میز کار. از نظر فنی این دو مرحله برای کاربران شفاف هستند و اکثر توزیع‌ها یکی از میزکارهای مرسوم را به شکل پیش فرض انتخاب می‌کنند. در این مرحله بهتر است با مفهوم مدیر پنجره درگیر نشوید و برویم به سراغ میزکار. میزکار مجموعه آیکون‌ها،‌ پنجره‌ها، تولبارها، فولدرها، عکس‌های پس زمینه و ویجت‌های دسکتاپ است. دقیقا همان چیزی که وقتی پشت ویندوز می‌نشینید با آن طرفید. در ویندوز می‌توانید تم‌ها را عوض کنید، پس زمینه را تغییر دهید، آیکون‌ها را تغییر دهید و غیره ولی امکان تغییر کل برنامه‌ای که این چیزها را کنترل می‌کند را ندارید. در لینوکس این انتخاب هم مثل بقیه انتخاب‌ها وجود دارد. دو تا از مشهورترین میزکارهای لینوکس گنوم و کی.دی.ای. هستند. شکل زیر دو نمونه از این میزکار را نشان می‌دهد:

البته می‌دانید که در لینوکس هستیم و پر از انتخاب. انتخاب‌ دیگر ممکن است XFCE باشد که با هدف سبک بودن ساخته شده یا بسیاری مدیر پنجره‌های دیگر که اهداف گوناگون و گاهی بانمک را دنبال می‌کنند (:

هر میزکار مجموعه ابزار خودش را دارد که البته به راحتی در میزکارهای دیگر هم قابل اجرا هستند. اینکه شما از کدام میزکار استفاده می‌کنید درست مثل این است که از کدام بک‌گراوند استفاده می‌کنید: بستگی به سلیقه و کاربردهایتان دارد. بهترین پیشنهاد مثل همیشه این است که سری به هر کدام بزنید و هر کدام که پسندید را برای مدتی استفاده کنید و بعد ا زچند وقت اگر سرتان خیلی شلوغ نبود، سری به بقیه بزنید تا ببینید آیا خبر جدیدی در آن‌ها هست یا نه (:

تقریبا همه توزیع‌ها، اجازه نصب میزکارهای مختلف را به شما می‌دهند. بعضی توزیع‌ها هم نسخه‌های خاص برای میزکارهای خاص دارند. مثلا اوبونتو به شکل پیش‌فرض از میزکار گنوم استفاده می‌کند و به همین دلیل طرفداران کی.دی.ای.، توزیع کوبونتو را پشتیبانی می‌کنند که دقیقا همان اوبونتو است با میزکار پیش‌فرض کی.دی.ای. (دقیقا انگار که بعد از نصب اوبونتو، میزکار کی.دی.ای. را به آن اضافه کنید). حالا به راحتی می‌توانید حدس بزنید که xubuntu یا همان زوبونتو دقیقا همان اوبونتو است که میزکار XFCE به آن اضافه شده. حالا که بحث شاخه‌های منشعب از اوبونتو است، اسمی هم از ادوبونتو ببریم که دقیقا همان اوبونتو است با ظاهری دانش‌آموز پسندتر و پر از ابزارهای کمک آموزشی.

آیا لینوکس با سخت‌افزار من سازگار است؟

ده سال پیش می‌گفتند که نصب برنامه در لینوکس سخت است. پنج سال پیش می‌گفتند که لینوکس با سخت‌افزارها سازگار نیست. الان هر دوی این گزاره‌ها نادرستند. لینوکس بر خلاف ویندوز که نیاز به درایور و دیسک و سی دی راه انداز دارد، به شکل خودکار سخت افزارها را می‌شناسد و از آن‌ها استفاده می‌کند. مشکل وقتی خواهد بود که یک سخت‌افزار غیر مرسوم در دنیا داشته باشید (مثلا یک مودم ویندوزی یا یک پرینتر خیلی خاص یا یک جوی استیک غیرمرسوم یا یک کارت گرافیکی که سازنده درایورهایش را به اشتراک نگذاشته باشد). در این حالت دردسر خواهید داشت. متاسفانه هنوز بعضی از سازندگان سخت‌افزار، درایورهای لینوکسی‌شان را آماده نکرده‌اند و در نتیجه ممکن است در سخت‌افزار به مشکل بخورید. بهترین توصیه این است که اول کامپیوترتان را با نسخه لایو (زنده) توزیع مورد نظر بوت کنید و سازگاری سخت‌افزاری آن را بررسی و در صورت خوب بودن همه چیز، آن را نصب کنید.

خلاصه! کدام توزیع را انتخاب کنم؟

بستگی به نیازهایتان دارد و علاقمندی‌ها. اگر تازه کار هستید بهتر است سراغ توزیعی بروید که کاربران زیادی دارد و پشتیبانی از سخت‌افزارهای مختلف را هدف قرار داده. این روزها اوبونتو یک گزینه خوب است و مینت هم گزینه ای بهتر برای تازه کارانی که می خواهند بی دردسر شروع کنند.. اوبونتو تمام تلاشش را کرده ساده باشد ولی هنوز به آزادی وفادارتر است و در نتیجه بعد از نصب چند کار مرسوم با کامپیوتر (از جمله پخش ام پی تری) نیازمند نصب یکی دو بسته اضافی هستند اما مینت علاوه بر داشتن سادگی اوبونتو، تلاش کرده تا درست بعد از نصب به اکثر نیازهای یک کاربر معمول (مثل پخش ام پی تری یا داشتن فلش) هم پاسخ بدهد.

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

موخره

بیشتر بخوانید. گنو/لینوکس یک ابزار است و باید قبل از انتخاب درباره‌اش فکر کرد و بررسی تا بعدا ناراحت کننده نشود. من از هر آدمی که به دنیای لینوکس اضافه شود خوشحال می‌شوم ولی آگاهانه (: فعلا لینوکس مد شده. بد نیست ولی خطرناک هم هست. لینوکس بسیار قوی‌تر از ویندوز است و واقعا زیبا. اما با نصب لینوکس، کسی هکر نمی‌شود. باید تمرین کرد و یاد گرفت و قدم به قدم پیش رفت (:

فروشگاه محصولات گنو/لینوکس سی تو

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

اگر سوال دیگری بود در کامنت‌ها بگویید (:

لینوکس یعنی بهترین، سریع‌ترین و فنی‌ترین پشتیبانی (+ جوک مرتبط)

جالبه که وقتی صحبت از نرم افزارهای بازمتن و لینوکس می شه، یکی از استدلالها علیه اون اینه:

– پشتیبانی آقا پشتیبانی! وقتی چیزی مجانیه که دیگه خراب شد کارت با کرام الکاتبینه. من خودم زنگ می زنم مایکروسافت همه مشکلات رو حل می کنن برام.

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

– مطمئن هستید که کامپیوتر روشن است؟

– بعله خانم. مشکلم اینه که نمی تونم gateway رو عوض کنم.

– کابل شبکه رو چک کنین. معمولا در قسمت پستی..

– خواهرم! کابل شبکه رو می دونم چیه. جایی مثل 4.2.2.4 رو می تونم پینگ کنم ولی می خوام gateway رو عوض کنم.

– لطفا از منوی start در سمت چپ پایین گزینه run رو انتخاب کنید و بعد

– خانم جان! می گم اینها رو بلدم. از کجا باید …

می گویید نه؟ اینترنت را سرچ کنید یا دگمه TroubleShoot را فشار دهید تا از شما بپرسید که «کامپیوتر روشنه؟ کابل وصله؟ برق هم هست؟ دیگه نظری ندارم». این شاید به درد بعضی‌ها بخوره ولی من رو عصبی می کنه (: در عوض در دنیایی مثل دنیای لینوکس همیشه هزاران نفر مشتاق کمک شما هستند. بعضی ها مشکلات و راه حل اونها رو قبلا در اینترنت نوشته اند. در انجمن ها هر سوال مرتبط با لینوکس سریعا توسط دیگران جواب داده می شه (برای سوالات در ایران مراجعه کنید به انجمن‌های تکنوتاکس که البته بهتره قبل از هر سوال، جستجو کنید) و از اون بهتر همیشه یکسری IRC هست که آدم هاش آماده جواب دادن به شما هستند.

من امروز صبح می خواستم بدون gateway رو چجوری باید عوض کنم. وارد محیط چت عمومی IRC می شم. بیشتر از ششصد نفر در کانال #linux منتظر سوال من هستند. در خط اول سوالم رو می پرسم و سریعا دو نفر جواب می دهند. جواب دوم دقیقا همان جواب فنی است که من می خواهم (:


فراموش نکنید که در یک دنیای آزاد، افراد مشارکت طلب هستند و با یکدیگر همکاری می کنند. این تصور که کمک را فقط با پول می شود خرید، تصور دنیای انحصارها و رقابت ها است. برای اینکه ادای دینی هم کرده باشم، ده دقیقه ای در همان کانال می مانم و گپی می زنم و مشکل چند نفر را حل می کنم.

جوک.

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

خلبان به ناگهان متوجه برج بزرگی شد که رو به روی آن‌ها سبز شده بود و بعضی از چراغ‌هایش روشن بودند. از همراهش خواست تا روی کاغذی بزرگ بنویسید: «ما کجا هستیم؟» و به برج نزدیک شد. وقتی فاصله به اندازه کافی به برج نزدیک شد کاغذ را از پشت شیشه به افراد درون دفتر نشان دادند.

کارمندان سریعا به سمت یک کاغذ بزرگ دویدند و چیزی روی آن نوشتند و به سمت پنجره برگشتند. روی کاغذ نوشته شده بود: «شما درون یک هلی‌کوپتر هستید.»

خلبان لبخندی زد و به نقشه نگاه کند و به سمت فرودگاه سیاتاک رفت و به سلامتی فرود آمد.

بعد از فرود، مسافر از خلبان پرسید که: «چطور با خواندن اینکه شما درون یک هلی‌کوپتر هستید فهمیدی که کجای شهر هستیم؟‌»

خلبان گفت: «راحت بود. چیزی که خواندیم از نظر فنی درست ولی از نظر کاربردی کاملا بی استفاده بود. به راحتی فهمیدم که ما درست کنار ساختمان پشتیبانی فنی مایکروسافت هستیم.»


تشکر از دوستان خوبی که توی کامنت شیوه های بهتری رو هم دارند می گند و نشون می دن که لینوکس به چه جامعه فوق العاده پشت گرمه (: