چرا لينوكس؟

لينوكس يك سيستم عامل متن باز است كه بر پايه سيستم عامل يونيكس ساخته شده است. لينوس توروالدز لينوكس را با همكاريبرنامه نويسان سراسر دنيا ساخته است.


  • آزاد بودن
  • شباهت به يونيكس
  • متن باز
  • سيستم عامل تحت شبكه


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

كرنل به تنهايي و بدون برنامه هاي كاربردي مانند ويرايشگرها و كلاينت هاي ميل بيفايده است.يك توزيع [1]لينوكس شامل اجزاء زير است:

  • كرنل لينوكس
  • برنامه هاي GNU شامل ويرايشگرها، مرورگرها
  • رابط گرافيكي X
  • برنامه هاي كاربردي آفيس
  • ابزارهاي توسعه و كامپايل نرم افزار
  • هزاران برنامه كاربردي آماده استفاده
  • برنامه ها/اسكريپت هاي نصب لينوكس
  • ابزارهاي مديريت بعد از نصب لينوكس مانند اضافه كردن كاربر ،‌نصب برنامه و ...


شركت هاي كوچك و بزرگ استفاده كننده لينوكس همواره نياز به پشتيباني دارند. شركت هايي نظير RedHat و Novell با تامين پشتيباني فني آن را به عنوان محصول مي فروشند.عليرغم اينكه توزيع هاي توليد شده در اجتماعات[2] مانند Debian و Gentoo نيز به صورت كاملا رايگان وجود دارند. در دنيا بيش از 200 توزيع كنند لينوكس وجود دارد.

چه كسي لينوكس را ساخت؟
در سال 1991 لينوس توروالدز در حال مطالعه يونيكس در دانشگاه بود. جايي كه از يك سيستم عامل آموزشي شبيه به يونيكس به نام Minix كه براي محيط هاي آكادميك طراحي و ساخته شده بود استفاده مي شد. بدليل اينكه Minix محدوديت هاي داشت لينوس به فكر ساختن سيستم عاملي بهتر افتاد. بنابراين او يك نسخه جديد از سيستم عامل مينيكس با نام لينوكس ساخت. لينوكس از همان ابتداي ساخت به صورت متن باز ارائه شد.
كرنل لينوكس توسط لينوس توسعه داشته شد. كرنل به همراه يك سري از نرم افزارهاي سيستمي و كتابخانه هاي پروژه GNU براي ساختن يك سيستم عامل پايدار پيوند داده شد. برخي از مردم از لينوكس با عنوان GNU/Linux ياد مي كنند چراكه لينوكس نرم افزارهاي سيستمي و كتابخانه هاي خود را از پروژه GNU گرفته است. اعتبار لينوس تولوالدز تنها به واسط توسعه كرنل لينوكس است نه كل اين سيستم عامل.

يك توزيع لينوكس= كرنل لينوكس + نرم افزارهاي سيستمي و كتابخانه هاي پروژه GNU+ اسكريپت هاي نصب و ابزارهاي مديريت سيستم عامل و ...

لطفا توجه كنيد كه توزيع هاي مختلف لينوكس براي تامين سلايق مختلف كاربران بسته بندي و آماده شده اند. كه هر كدام از آنها حاوي نسخه هاي تغيير يافته كرنل و بسته هاي نرم افزاري متنوعي هستند كه براي اهداف و نيازهاي مشخصي مانند موارد زير را برآورده مي سازند:
1.سرور
2.سيستم عامل روميزي
3.ايستگاه هاي كاري شبكه
4.روترها
5.سيستم عامل توكار دستگاهاي مختلف
6.تلفن هاي همراه
براي كسب اطلاعات بيشتر درمورد لينوس تولوالدز به سايت linux.org مراجعه كنيد.

مورد استفاده لينوكس در زندگي روزمره
شما مي توانيد از لينوكس به عنوان يك سرور ( سرويس دهنده) و يا يك سيستم عامل مستقل استفاده كنيد. به عنوان يك سرور لينوكس مي تواند سرويس ها و منابع شبكه اي متفاوتي را براي سرويس گيرندگان فراهم كند. يك سيستم عامل سرور بايد شرايط زير را داشته باشد:

  • پايدار
  • قوي و ستبر!
  • امن
  • بازدهي بالا

يك لينوكس همه ويژگي هاي بالا به اضافه رايگان و متن باز بودن را فراهم مي كند. اين يك سيستم عامل عالي براي موارد زيرمناسب است:

  • كامپيوترهاي روميزي
  • سرويس دهند هاي وب
  • ايستگاه هاي كاري توسعه دهندگان نرم افزار
  • ايستگاه كاري مانيتورينگ شبكه
  • سرويس هاي حياتي شبكه مانند DHCP, Firewall, Router, FTP, SSH, Mail, Proxy, Proxy Cache


كرنل لينوكس چيست؟
كرنل قلب سيستم عامل لينوكس است كه منابع سيستم را مديريت مي كند. اين منابع شامل موارد زيراست:


  • مديريت فايل
  • چند برنامه اي
  • مديريت حافظه
  • مديريت I/O
  • مديريت پراسس ها
  • مديريت دستگاههاي جانبي
  • پشتيباني از شبكه شامل Ipv4 و Ipv6
  • قابليت هاي ويژه شامل حافظه مجازي، كتابخانه هاي اشتراكي ، بارگذاري درخواست ها و غيره

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








شل لينوكس چيست؟
كامپيوترها زبان صفر و يك يا همان باينري را درك مي كنند. اين زبان براي بشر بسيار دشوار و سخت است. بنابراين در سيتم عامل ها برنامه هاي خاصي وجود دارند كه به شل يا پوسته معروف هستند. شل دستورات را به زبال قابل فهم بشر دريافت و آنرا به زبان كرنل ترجمه مي كند تا كرنل بتواند آنرا تحليل و پردازش كند.
شل يك برنامه و يا يك محيطي است كه براي دستورات كاربر ايجاد شده است. تفسير و اجراي دستورات كاربر از كي برد و يا فايل از وظايف شل است.شل جزء لينوكس نيست ولي از كرنل لينوكس براي اجراي برنامه ها ، ساختن فايل ها و غيره استفاده مي كند.شل هاي زيادي در لينوكس وجود دارند.

  • BASH
  • CSH (C SHell)
  • KSH (Korn SHell)
  • TCSH

براي اينكه بدانيد لينوكس شما از چه شل هايي پشتيباني مي كند كافي است دستور زير را اجرا كنيد. دستور cat محتواي فايل shells در شاخه etc موجود در ريشه را نشان مي دهد.
$ cat /etc/shells
توجه كنيد كه هر كدام از شل ها در باطن كار مشابهي را انجام ميدهند اما در ظاهر از دستوراتي با شكل استفاده متفاوت و توابع توكار مختلف استفاده مي كنند.
در سيستم عامل MS-DOC نام شل COMMAND.COM است كه براي اهداف مشابهي استفاده مي شده است اما اين به قدرتمندي شل هاي لينوكس نيست.

رابط خط فرمان (CLI):
شل يك رابط براي استفاده از لينوكس را فراهم مي كند. رابطي كه مي توانيد در آن به تايپ و وارد كردن دستورات با استفاده از كي برد بپردازيد. اين رابط به عنوان خط فرمان معروف است.
براي فهميدن اينكه نوع شل فعلي شما چيست از دستورات زير مي توان كمك گرفت.

$ echo $SHELL

$ ps $$
چگونه مي توان از شل استفاده كرد؟
براي استفاده از شل شما كافي است دستورات لينوكس را تايپ كنيد. يك دستور يك برنامه كامپيوتري است كه براي منظور خاصي ايجاد شده است. مثال هايي از اين دستورات در ذيل آمده است:

  • ls
  • clear
  • cal
  • date
  • vi

اگر شما لينوكس را در محيط متني اجرا كرده ايد شما براي استفاده از لينوكس بايد به سيستم لاگين كنيد. اگر درمحيط گرافيكي قرار داريد مانند Gnome شما مي توانيد از طريق منوهاي Applications >> System Tools >> Terminal يك شل داشته باشيد. همين طور شما ميتوانيد با استفاده از كليدهاي Ctrl-Alt-F1 به يك ترمينال مجازي متني لاگين كنيد.


شل اسكريپت چيست؟
در حالت عادي شل يك محيط محاوره اي دارد. به اين معني كه شما دستورات را از طريق كي برد به شل داده و او آنها را اجرا مي كند. اگر شما به جاي اجراي تك به تك دستورات آنها را به ترتيب در يك فايل متني قرار داده و از شل بخواهيد آن فايل را اجرا كند بايد گفت كه شما يك شل اسكريپت اجرا كرده ايد.
شل اسكريپت در واقع يك سري از دستورات هستند كه در يك فايل متني ذخيره شده اند. شل اسكريپت شبيه به يك batch فايل در MS-DOS مي باشد ولي به مراتب قوي تر .
هر شل اسكريپت تشكيل شده است از :
·دستورات شل مانند if..else,do..while
·دستورات پردازش متن لينوكس مانند grep,awk,cut و غيره
·دستورات باينري لينوكس مانند w,who,fee و غيره

آيا شما مي دانيد؟
·اين شل است كه اين اجازه را به شما مي دهد تا دستورات مختلف را اجرا كنيد بدون اينكه شما مجبور به تايپ مسير كامل به آنها باشيد حتي اگر اين دستورات در مسير جاري شما نباشند.
·اين شل است كه به شما امكان استفاده از كاركتورهاي wildcard مانند * و ؟ را مي دهد تا تايپ راحت باشد.
·اين شل است كه اين توانايي را به شما مي دهد تا دستورات قيلي با استفاده از كليد هاي جهت نما مجدد قابل اجرا باشند و يا ليست كامل دستورات قبلي را ارائه مي دهد.
·اين شل است كه بحث ورودي و خروجي استاندارد و خطاها را پشتيباني مي كند.

چرا از شل اسكريپت استفاده مي كنيم؟
·شل اسكريپت ها مي توانند ورودي را از كاربر و يا فايل دريافت كرده و خروجي را در صفحه نمايش نشان دهند.
·هر كاري كه شما به صورت تكراري مجبور به انجام آن هستيد را مي توانيد به صورت اسكريپت انجام دهيد. مانند اجراي اتوماتيك وظايف تكراري
·صرفه جويي در زمان
·ساختن ابزارها و برنامه هاي دلخواه
·سفارشي كردن موارد مربوط به مديريت سيستم
·از آنجايي كه اسكريپت ها به خوبي تست شده اند، احتمال بروز خطا در هنگام پيكربندي سرويس ها و وظايف راهبري سيستم مانند اضافه كردن كاربر جديد ،‌به شدت كاهش مي يابد.
·نمونه هايي از اسكريپت هايي كه در حال حاضر زياد استفاده مي شوند:
oمانيتور كردن سيستم لينوكس
oتهيه نسخه پشتيبان و ساختن snapshot
oنسخه برداري از پايگاه داده MySQL و Oracle
oايجاد سيستم اعلان هشدار بر اساس ميل
oشناسايي اينكه چه برنامه هايي در حال استفاده بيش از حد از منابع سيستم هستند
oشناسايي اينكه چه مقدار حافظه آزاد وجود دارد
oشناسايي اينكه چه كساني به سيستم لاگين كرده و مشغول انجام چه كاري هستند
oشناسايي اينكه آيا همه سرويس هاي شبكه اي لازم در حال اجرا هستند يا خير. به عنوان مثال اگر وب سرور اجرا نيست يك ميل و يا يك پيام كوناه به مدير سيستم ارسال شود.
oتعيين لاگين هاي غير موفق جهت تشخيص حملات و يا نفودها به سرور . به اين صورت كه اگر تعداد دفعات لاگين غير موفق در محدوده كوتاهي از زمان اتفاق افتاد به صروت خودكار همه IP هايي كه لاگين از آنجا صورت گرفته بسته شود.
oمديريت كاربران مطابق سياست هاي امنيتي دلخواه
oگردآوري اطلاعات درمورد سرورهاي محلي و راه دور
oتنظيم سرويس هاي سرور مانند سرويس Bind (سرور DNS ) براي اضافه كردن Zone جديد



نوشتن شل اسكريپت كار بسيار مفرحي است! ايجاد اسكريپت هاي زيبا(شايد هم زشت) كار بسيار مفيد و پر فايده اي است.

در اينجا چند نمونه از اسكريپت هايي كه من هر روز از آنها استفاده مي كنم را براي شما ليست مي كنم:

  • شناسايي وضعيت هواي امروز ( بسيار مفيد است . بخصوص هنگامي كه در يك اتاق چت هستيد)
  • تعيين اينكه يك سايت از چه سيستم عاملي استفاده مي كند. ( مانند netcraft)
  • دانلود پيام هاي RSS و نمايش آنها در هنگام لاگين
  • شناسايي نام فايل هاي MP3 كه شما به آنها گوش مي دهيد.
  • مانيتور كردن تاريخ انقضاء دامنه به صورت روزانه


ما در اين مقاله از چه شلي استفاده مي كنيم؟
شلي كه ما در اين مقاله استفاه خواهيم كرد bash است.

اهداف آموزش
بعد از اين آموزش شما :

  • مفاهيم بنيادي شل اسكريپت خواهيد فهميد
  • نوشتن اسكريپت هاي شل و استفاده از آنها براي صرفه جويي در زمان با اسكريپ هاي خودكار را خواهيد آموخت
  • به سفارشي كردن فايل هاي start-up شل بپردازيد
  • ابزارهاي جذاب بسازيد
  • وظايف راهبري سيستم مانند مديريت كاربران و مانيتور كردن سيستم لينوكس و غيره را انجام دهيد


شروع كار با برنامه نويسي شل
در ادامه مطالعه اين بخش شما قادر خواهيد بود تا موراد زير را انجام دهيد:
·فهم و يادگيري اقدامات اوليه براي نوشتن شل اسكريپت
·تعريف متغيير و استفاده از آنها
·محاسبات در شل
·عبارات اوليه ورودي / خروجي
·استفاده از كاركتورهاي Wild card
·شناسايي مفاهيم ضروري مانند پايپ ها ، فيلتر ها و پراسس ها

در بخش بعدي اين مقاله كار با شل را آغاز خواهيم كرد...
منبع:
http://www.cyberciti.biz/nixcraft/linux/docs/uniqlinuxfeatures/lsst/index.html