محمد لینوکس

همه چیز به غیر از لینوکس!

محمد لینوکس

همه چیز به غیر از لینوکس!

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

در قسمت قبلی دیدیم که میشه با لینوکس کارهای بسیار ساده Console رو انجام داد. در این قسمت می خواهیم کمی در مورد قدرت های لینوکس صحبت کنیم. قرار نیست ادامه Command Set لینوکس توضیح داده بشه. چون Command Set ها در بخش های مختلف این کلوب و سایت های فارسی دیگه و کتابهای زیادی عنوان شده. در اینجا فقط می خوام کمی در مورد کارکرد لینوکس باهاتون صحبت کنم.

هشدار - هشدار - امروز بحث کاربردی نیست و فقط تئوریک
------------------------------------

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

لینوکس به طور کلی سیستم عاملی چند منظورس که در بخش های زیر می خوام کمی در مورد عملکردشت تو بخش های مدیریتی مختلف براتون توضیح بدم.

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

مدیریت منابع در لینوکس شامل، مدیریت حافظه، مدیریت فایلها، مدیریت CPU، مدیریت Mediaهای ارتباطی و مدیریت کاربران میشه.

مدیریت حافظه: حافظه سیستم شما برای بالابردن سرعت عملیات به شما خیلی کمک می کنه. زمانی که این حافظه پر بشه از نظر منطقی هیچ برنامه دیگه ای نباید اجرا بشه ولی در سیستم های عامل این امکان به شما داده می شه که با تکنیک های مختلف برنامه های غیر لازم رو از حافظه خارج کنید و برنامه های جدید رو جایگزین اونها کنید و زمانی که به برنامه های قبلی دوباره نیاز بود اونها رو به جای اولیشون برگردونید و الی آخر. این کار از نظر تئوری توسط همه سیستم عامل نویسان دنیا پیاده شده ولی خود در بحث نرم افزار مسئله Performance و Optimization خیلی مهم. یعنی با تئوریهای ثابت ما پیاده سازی های مختلفی داریم. لینوکس یکی از سیستم های عامل قدرتمند که در بحث مدیریت حافظه بسیار دقیق و پویا عمل می کنه و شما بیشترین استفاده رو از حافظه اصلیتون می برید. به طور عامیانه تر شما در لینوکس حافظه مرده ندارید و یا بسیار کم دارید. حافظه مرده یعنی بخشی از حافظه که اختصاص داده شده ولی ازش به هیچ وجه استفاده ای نمیشه. چیزی که ویندوز به کرات شما باهاش برخورد دارید. بعد از چند ساعت کار سیستم کند میشه. شما با استفاده از Task Manager برخی از برنامه ها رو می بندید ولی هنوز سیستم کند و با Restart شدن سیستم دوباره به سرعت اولیه برمی گرده در حالی که هیچ کدام از Process های سیستم بعد از Restart از لیست خارج نشدن.

جوابی که در این زمینه داده می شه اینه که برنامه های تحت ویندوز حافظه هایی رو Allocate میکنن و در هنگام خروج اونها رو نمی بندن. این مطلب شامل نرم افزار های دارای Bug و نرم افزارهایی که با رخداد خطا بسته می شن میشه. در لینوکس به این صورت نیست. لینوکس به شما تضمین میده که در صورتیکه یک Process بخشی از حافظه رو اشغال کنه، حتی در صورت بسته شدن اجباری یا Force Kill حافظه تخصیص داده شده به سیستم عامل برمیگرده. اون درصدی از حافظه که گفتم در لینوکس به عنوان حافظه مرده و به صورت خیلی معدود پیش میاد داریم، بخش هایی از حافظه است که توسط Processهای کرنلی اختصاص داده شده و یا بخش هایی از حافظه که به صورت Global تعریف شده.

مدیریت فایلها:
قرار دادن دیسک در اختیار کابران به جز این موضوع که کاربران برای کار با دیسک های مختلف از جمله PATA و SATA و SCSI اطلاعات لازم رو ندارند و نیاز به یک واسط یا API واحد دارند باعث پایین اومدن سطح امنیت سیستم میشه. به همین منظور دیسک در لینوکس از نظر کاربران توسط یک سری رابط های برنامه نویسی عرضه میشه.

در سیستم های عامل Multiuser و MultiTasking بسیار اتفاق میافته که چند Process به طور همزمان به بخشی از اطلاعات دیسک نیاز داشته باشند پس مدیریت فایل در سیستم های عامل یکی از بخش های بسیار مهم قلمداد میشه.

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

آسانسوری رو در نظر بگیرید در ساختمانی 20 طبقه. به طور معمول و الگوریم ساده به نظر میرسه که دکمه ای که زده میشه باید به اون طبقه بریم. پس این برنامه رو می نویسیسم و در آسانسور نصب می کنیم. روزی اتفاق میافته که در طبقه 18ام فردی دکمه آسانسور رو میزنه. بعد از حرکت آسانسور فردی در طبقه اول دکمه رو میزنه و همزمان با اون فردی در طبقه 16ام. طبق الگوریتم ما آسانسور به طبقه 18 ام میره و فرد رو سوار میکنه. بعد به طبقه اول میاد و بعد 16ام.

نوشتن الگوریتم های بهینه و مناسب برای دیسک در راندمان و بالا بردن سرعت سیستم نقش بسیار زیادی داره. سرعت CPU و RAM در مقابل Disk بسیار بالاست، پس برای اینکه استفاده از RAM و پردازشگر سیستم ما بهینه باشه باید از الگوریتم های مناسب دسترسی به دیسک استفاده کنیم. در لینوکس الگوریتم های دسترسی به دیسک طی سالهای مختلف در Unix و خانواده هاش و تا امروزه در لینوکس به کرات مورد تغییر قرار گرفته و خروجی که امروز در Kernel لینوکس قرار داده بهینه ترین روش در بین روشهای معمول دسترسی به دیسک.

مورد بعدی سیستم Cache در فایل سیستم لینوکس. Cache در 2 جا برای سیستم بسیار مفیده. اولا زمانی که شما می خواهید یک بایت از روی دیسکتون بخونید دیسک به شما یک سکتور و یا 512 بایت داده رو میده. در اصل واحد خوندن از دیسک Sectorها هستند و نه بایت ها. زمانی که شما برنامه ای می نویسید که یک فایل رو بایت به بایت بخونه در صورتی که Cache وجود نداشته باشه، به ازای هر بار خواندن یک بایت سیستم عامل ملزم که یک سکتور رو بخونه و بایت مورد نظر شما رو از روی اون استخراج کنه و تحویل شما بده. این عمل نه تنها سرعت رو بسیار پایین میاره بلکه باعث اصطحلاک دیسک شما میشه. Cache لینوکس آخرین دسترسیهای دیسک رو در حافظه نگه میداره و بخش های درخواستی شما قبل از ارسال به دیسک می بایستی از لایه Cache لینوکس رد شوند. در صورتی که اطلاعات درخواستی شما در Cache سیستم موجود نباشه اطلاعات در خواستی شما به Cache لینوکس منتقل میشه و سپس از Cache به شما اطلاعات داده میشه. Cache دیسک سیستم شما بر روی حافظه اصلی قرار داده.
بالابردن مقدار حافظه Cache تا حدی سرعت رو بالا میبره ولی زمانی که از نقطه کار Cache شما عبور کنید به دلیل افزایش حافظه Cahce جستجوی داده مورد نیاز خود در پایین اوردن سرعت نقش زیادی داره.

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

مدیریت Process:
همانطور که میدونید سیستم های کامپیوتری تک CPU در آن واحد تنها قابلیت اجرای یک دستور العمل رو دارند ولی با الگوریتم های پیاده شده در سیستم های عامل شما همزمان به گوش دادن موسیقی و کار با برنامه Editor خودتون مشغولید. تخصیص CPU به Processهای مختلف کاریه که در سیستم های عامل صورت میگیره. این تخصیص به قدری سریع صورت میگیره که در نظر شما، تمامی برنامه ها همزمان در حال فعالیتند.

در محیط Task Manager ویندوز شما ، تعداد زیادی Process وجود داره. تمامی این Processها در اصطلاح در حالت Suspend هستند. یعنی هیچ فعالیتی نمیکنند. مدیریت CPU به صورت ساده اینطور به نظر میاد که باید به تمامی پردازه ها بخشی از زمان CPU داده بشه. ولی آیا Process که منتظر دریافت یک کلید از صفحه کلید است نیازی به CPU داره؟

به پردازش هایی که منتظر یک رخداد یا Event سخت افزاری هستند، پردازه های Waiting گفته میشه و سیستم عامل ها این پردازه ها رو از لیست پردازه های فعال خارج می کنند. برای مثال پردازه ای که دستور خواندن اطلاعات از روی هارد رو داده از لیست پردازه های فعال خارج میشه و در لیست وقفه یا Interrupt مربوط به دیسک قرار داده میشه. زمانی که دیسک عملیات خوندن رو انجام بده، با یک Interruptبه CPU سیستم عامل شما رو متوجه این امر میکنه. سیستم عامل Process های موجود در لیست دیسک رو از حالت Suspend به حالت Ready میبره و در بازی تخصیص CPu اونها رو هم شرکت میده.

به این ترتیب تعداد زیاد Process های موجود در لیست Task Manager باعث کندی سیستم شما نمیشه بلکه تعداد Processهای فعال سیستم هستند که باعث کندی سیستم میشن.

آیا میدونید بیشترین برنامه ای که از سیستم رو کند می کنه چیه؟ Photoshop?  Winamp? ماشین حساب؟ برنامه حسابداری ؟ نههههههههههههه

برنامه زیر به زمان C یا معادلش در VB بیشترین فشار رو به سیستم وارد می کنن:

While (true);

یعنی یک برنامه یک خطی!

اگر شما این برنامه رو Compile و اجرا کنید می بینید که در لیست Task Manager مقدار CPU در حدود 100% برای اون در نظر گرفته شده. دلیلشم اینه که این پردازه زمانی که CPU بهش تعلق داده میشه، اون رو ول نمی کنه. دراصل هیچ زمانی اتفاق نمیافته که این Process به حالت Suspend بره. تنها زمانی این اتفاق میافته که، زمان استفاده این Process از CPU تموم بشه که سیستم عامل به صورت اجباری CPU رو از این Process میگیره.

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


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

سیستم های عاملی که از شبکه پشتیبانی می کنند زحمت زیادی رو برای این امر کشیدن. Stackشبکه های موجود فعلی با تمامی سادگیشون دارای پیچیدگی های خیلی زیاد در پیاده سازین. ضعف مدیریت شبکه در سیستم های عامل باعث بالارفتن شدید هزینه ها میشه. شاید برای شما درکش مقداری سخت باشه ولی Optimize کردن بخشی از کد Stack شبکه های پر استفاده مثل TCP/IP در نرم افزار معادل هزینه های سر سام آور سخت افزاری.
سیستم عامل لینوکس سیستم عاملی که توانایی برخورد با Loadهای بسیار بالای شبکه ای رو بدون ایجاد هیچگونه خرابی و یا از بین رفتن اطلاعات برای کاربران فراهم میکنه.

شکی نیست که بخش اعظم مدیریت از بین نرفتن اطلاعات در شبکه های کامپیوتری مدیون پروتکل های قوی شبکه ای و سیستم های فیزیکی موجود در مسیر ولی از طرفی همگان قبول دارند که Unix و Linux بخش عمده ای از این استاندار ها رو تدوین و به جامعه جهانی عرضه کرده.

زمانی بود که لینوکس در پی پیاده سازی دستگاههای سخت افزاری شبکه ای موجود مثل Routerها و Firewallها بود. همیشه نرم افزار قابلیت های کمتری نسبت به نمونه های سخت افزاری داشت. اما امروزه خیلی از شرکت های بزرگ سخت افزاری شبکه مانند Cisco بعضی از قابلیت ها یا Featureهای کاربری موجود بر روی سخت افزار های خودشون رو از روی نمونه های نرم افزاری و شبیه سازی شده در سیستم های عامل معتبر مثل لینوکس کپی برداری می کنند.

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

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

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

حالا فرض کنید سیستم عامل لینوکس در آن واحد بخواد به بیش از چندین هزار ارتباط شبکه ای پاسخ بده. ارتباطاتی که بر خلاف ارتباطات Transaction Based شروع و پایان مستقلی ندارند و نگهداری وضعیت و کنترل وضعیت فعلی تماما بر عهده سیستم عامل است. در اینجا مبحثی پیش میاد به نام State Machine که موقعیت و وضعیت هر پایانه رو مشخص می کنه. در ارتباطات TCP/IP به طور معمول ارتباط انجام میشه، طرف ارسال کننده داده ها رو ارسال می کنه و بعد از ارسال هر Packet ، علامتی به عنوان دریافت اطلاعات از طرف مقابل دریافت می کنه.

حال فرض کنید که بیش از 1000 ارتباط شبکه ای در سیستم عامل شما وجود دارد و 700 بسته اطلاعاتی در آن واحد ارسال شده است. اگر از 50 پایانه موجود جوابی مبنی بر دریافت اطلاعات رسیده نشه، این اطلاعات باید دوباره ارسال بشه. در TCP/IP امکان این است که هرکدام از طرفین از طرف مقابل درخواست کنند که داده ها را با سرعت کمتری ارسال کند و یا طول بسته های اطلاعاتی را تغییر دهد. به جز پیاده سازی این مسائل مربوط به Stackهای شبکه، مسئله های مربوط به ارسال همزمان داده ها از طریق Processها، قطع شدن اتحمالی شبکه و مشکل سیستم عامل در اطلاع دادن به Processها و از طرفی پیگیری بسته های ارسال شده و نگهداری بسته های دریافتی از Processها در طول این مدت. بسته شدن یک Processدر زمان قطعی شبکه و اطلاع دادن به طرف مقابل مبنی بر اینکه بسته های دیگری ارسال نکن و فرستادن پیغام های مناسب برای مطلع کردن طرف دوم از نرسیدن بسته به طرف اول و در کنار همه اینها، رد کردن بسته های اضافی ارسال شده از طرف نفوذگران به سیستم و شناسایی و خنثی کردن بسته های آنها، مشکلات و موضلاتیست که بخش مدیریت شبکه در لینوکس با اونها باید مقابله کنه. پیاده سازی صحیح سیستم مدیریت شبکه، باعث بالارفتن راندمان کاری در سیستم های اداری و مالی میشه.

مدیریت کاربران:
تمامی مدیریت های بالا رو در نظر بگیرید. حالا فرض کنید لینوکس به جای یک نفر با چند نفر سروکار داشته باشد که هر کدام مشکلات خود را در مسائل مدیریتی بالا داشته باشند.

زمانی که شما به تنهایی بر روی سیستم Login هستند، سیستم عامل CPU را به درخواست های شما میدهد ولی زمانی که چند کاربر بر روی سیستم فعال هستند، مدیریت تمامی منابع از نظر سیستم عامل سخت تر خواهد شد. این سختی بخشی به دلیل مسائل امنیتی کار است یعنی عدم تاثیر گذاری فعالیت های یک کاربر بر روی کاربر دیگه، و بخش دیگه مشکلات مربوط به توضیع منابع به صورت عادلانه در بین کاربران می باشد.

----------------------------------------------------------------------------------------------

در بخش های بعدی در مورد چگونگی عملکرد Kernel لینوکس توضیح داده خواهد شد.


موفق باشی

از طرف عماد سی تی

سریال آبکی لینوکس ۲

این قسمت: بیاموز

---------------------------------------------------------------------------------------------------
آنچه گذشت:

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

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

------------------------------------------------------------------------------------------------------
خوب، مواد لازم برای امروز،

1- یک دستگاه کامپیوتر متناسب با شخصیت لینوکس
2- یک دستگاه Keyboard با حداقل کلید
3- برق 220V شهری با فرکانس 50-60 هرتز جریان حداقل 1 آمپر
4- یک فقره میز کامپیوتر و صندلی
5- ماوس به اندازه کافی
6- نوشابه یا قهوه بسته به خودتون به میزان کافی

بند اول - قبل از هرچیزی از سایت شخصی من emadct.com یک PDF برای نصب لینوکس FC5 دانلود کنید. تو این PDF سعی کردم با گرامر کشاورزی نصب لینوکس رو توضیح بدم، امیدوارم شما الوات IT از پسش بر بیاید.

بند دوم- برای تحقیق دانشگاه، جلوی دوستان و بقیه موارد شبیه، اگه خواستید از PDF بدون درج اسم استفاده کنید(صفحه اول رو میشه با Adobe Professional ویرایش کرد)، ولی اگه یه جایی گذاشتید برای استفاده دیگران، یه صلوات هم نثار نویسنده کنید خدا رو خوش بیاد.

بند سوم- قبل از شروع نصب لینوکس اگه از خودتون مطمئن نیستید یا از Document که من نوشتم، بهتره یکی از محصولات VMWare یا Microsoft Virtual PC یا Bochs یا QEMu رو نصب کنید و به صورت مجازی یک سیستم کامپیوتری در Windows خود ایجاد کنید، اینطوری هم می‌تونید Linux بریزید و اون سیستم مجازی رو خراب کنید و هم Windows باشید PDF بخونید.

بند چهارم- سعی کنید از PDF نصب جلوتر باشید، یعنی یه مرحله نصب که نمایش داده شد، اول خودتون فکر کنید که چیکار باید کرد، بعدش قبل از اینکه ادامه بدید، PDF رو بخونید ببینید همچین چیزی که فکر کردید هست یا من اشتباه نوشتم!

بند پنجم- راهنمای نصب برای FC5، نصب SUSE و Ubuntu و بقیه نسخه‌ها کمی متفاوت ولی در اصول یکی هستن. برای همین اگه نسخه‌دیگری رو می‌خواهید نصب کنید، یه بار رو سیستم مجازی Fedora نصب کنید که خیالتون از مراحل نصب باشید و فقط در نسخه دیگری کار Map کردن رو انجام بدید که این بخش رو مغزتون انجام می‌ده.

بند ششم- برای نصب فضای کافی کنار بگذارید.

بند هفتم- مواظب داده‌های اصلی روی سیستم خودتون باشید ( در حالتی که از سیستم مجازی استفاده نمی‌کنید)

بند هشتم- نصب لینوکس در محیط مجازی زمانبرتر از سیستم‌ واقعی، به همین منظور در سیستم مجازی سعی کنید حد اقل بسته‌ها رو نصب کنید، تا زمان کمتری طول بکشه.

بند نهم- در Virtual PC و VMWare، می‌شه تو هر مرحله از نصب از سیستم SnapShot گرفت، مثل Hibernate می‌مونه، از سیستم در حال Running پشتیبان می‌گیره و اگه مرحله بعدی رو خراب کردید می‌تونید برگردید (مثل فیلم Butterfly Effect)

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


------------------------------------------------------------------------------------------------------------

نصب ویندوز با نصب لینوکس چه فرقهایی داره؟

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

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

------------------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------
بعد از نصب لینوکس
------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------

خوب از نصب رد شیم (دیدید ماسمالیو D، وارد محیط لینوکس شیم.

محیط لینوکس شامل 2 بخش، محیط گرافیکی و محیط Console. محیط گرافیکی اونجاست که شما اشکال رنگی و صفحات گرافیکی می‌بینید و محیط Console مانند محیط Command Prompt در ویندوز دارای شکلی سیاه با متنهای سفید و به صورت Text می باشد.

به صورت پیش فرض بعد از نصب محیط گرافیکی برای شما نمایش داده می‌شه، در شرایطی که شما محیط گرافیکی را نصب نکرده باشید یا، محیط Text رو به صورت پیش فرض قرار داده باشید، محیط Console نمایش داده می‌شه.

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

کاربران سیستم لینوکس به 3 گروه تقسیم می‌شوند. گروه مدیر‌ها، گروه کاربران و root. بازهم بر خلاف Windows که ما چندین Administrator با قابلیت‌های یکسان داریم و گروهی کاربر با قابلیت‌های متفاوت، در لینوکس ما تنها یک کاربر با قابلیت محض داریم به نام root. بقیه مدیران کاربران جزئی هستند که مقداری از قدرت root را به ارث برده اند. کاربران جزء کاربری در پایین ترین لایه قرار می‌گیرند و تنها کارهایی را می‌توانند انجام دهند که کاربران لایه‌های بالایی به آنها اجازه داده باشند.

ما در لینوکس 3 اصطلاح root داریم که معمولا دوستان با آنها معجون درست می‌کنند:

1- کاربر root: این root قابل دیدن نیست، بلکه جزئی از Policy سیستم در تصمیم گیری‌های عملکردی است(دیدی یکی یه چیزیو بلد نیست، چند تا کلمه قلمبه سلمبه می‌گه، که بگه تو نمی‌فهمی ((: )
2- root: به مسیر اولیه یا پایه لینوکس گفته می‌شه. بر خلاف ویندوز که مسیر‌های پایه محدود به نام درایوها می‌شن مثل :C و و ... در لینوکس ما تنها یک مسیر واحد داریم، که به آن root گفته می‌شود و بقیه فایلهای سیستم در زیر شاخه این مسیر قرار دارند و از این شاخه بالاتر نداریم. به عبارت دیگه، تنها شاخه لینوکس که شاخه بالاتری ندارد شاخه root سیستم است و با علامت / نمایش داده می‌شود.
3- شاخه root واقع در root: در root سیستم، یک شاخه یا Directory داریم به نام، root که محل قرار گیری فایل‌های کاربر مدیر سیستم (یا root) است( چی در اومد). به بیان دیگه، کاربر root سیستم (تعریف اول) باید یک شاخه برای قرار دادن فایلهاش داشته باشه که اسم این شاخه root (تعریف سوم) که طبق تعریف کل سیستم باید در مسیر اصلی لینوکس یا همان root (تعریف دوم) است. این شاخه با نماد root/ نمایش داده می‌شه.

ما در root لینوکس کلی شاخه داریم:
root: مسیر قرار گیری فایل‌های مدیر سیستم
bin: مسیر قرار گیری فایل‌های اجرایی قابل اجرا برای کلیه کاربران (غیر مدیریتی)
sbin: مسیر قرارگیری فایل‌های اجرایی قابل اجرا برای کاربران مدیر( مدیریتی)
dev: مسیر قرار گیری فایل‌های مربوط به وسایل سخت افزاری
etc: مسیر قرار گیری تنظیمات سیستم (مثل Registry)
usr: مسیر قرار گیری کلیه نرم‌افزار‌های نصب شده بر روی لینوکس شما
var: مسیر قرار گیری فایل‌های runtime برنامه‌های در حال اجرا (معمولا از یک پارتیشن پویا با سرعت بالا استفاده می‌شود)
tmp: مسیر قرار گیری فایل‌های Temp تولید شده توسط نرم‌افزارها
opt: مسیر اختیاری برای نصب برنامه‌ها
home: مسیر قرار گیری شاخه‌های مربوط به کاربران غیر root سیستم.
mnt: مسیر قرار گیری Mappingهای Storageهای شما(میگم یعنی چی)
media: مسیر قرار گیری Mappingهای اتوماتیک Storageهای شما(اینم می‌گم)
و تعدادی شاخه دیگه در لینوکس‌های مختلف.

اینجا یک مسئله‌ای خیلی مهم. در لینوکس همه چیز فایل است.

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

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

فراموش نکنید، در لینوکس همه‌چیز فایل است.

------------------------------------------------------------------------------------------------------------

چند دستور ساده،
بعد از شروع لینوکس، وارد محیط متنی اون بشید، اگه با محیط گرافیکی لینوکس شما شروع شد، با استفاده از کلید‌های Alt Ctrl F1 وارد محیط متنی 1 بشید. در لینوکس ما می‌تونیم 12 محیط واقعی و بینهایت محیط مجازی داشته باشیم. این محیط های واقعی با استفاده از ALT CTRL و کلید F مربوطه نمایش داده می‌شوند. به طور معمول، 6 تای اولی متنی و 4تای آخر گرافیکی هستند، ولی در هنگام نصب لینوکس شما فقط از محیط 7 گرافیک می‌گیرید که قابل گسترش.

وقتی وارد محیط متنی اول شدید با root و رمز مشخص شده در مراحل نصب وارد سیستم شوید و اولین کاری که انجام می‌دید ساختن یک کاربر معمولیه.

وقتی وارد محیط متنی شدید دستورات زیر رو اجرا کنید:
adduser user
passwd user

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

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

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

قبل از هرچیز باید موقعیت یابی کنیم:
ما لینوکس نصب کردیم،
لینوکس Boot شد،
ما وارد لینوکس شدیم با کاربر مدیر سیستم،
کاربر جدید ساختیم برای جلوگیری از خطرات احتمالی،
از کاربر root خارج شدیم،
وارد کاربر جدید شدیم و الان می‌خواهیم دستورات خودمون رو اجرا کنیم،
در محیط‌های متنی دیگه، سیستم آماده دریافت نام‌کاربری و رمز عبور برای ورود به سیستم

خوب برای شروع دستور / cd رو اجرا کنید، این دستور باعث میشه، شما به root سیستم منتقل بشید. دستور ls رو اجرا کنید.

توضیح: دستور فلان رو اجرا کنید یعنی اینکه دستور رو تابپ کنید و enter رو فشار دهید
توضیح: دستور فلان رو اجرا کنید با پارامتر فلان، یعنی اینکه دستور رو تایپ کنید و پارامتر‌ها رو با فاصله از اون وارد کنید و کلید Enter رو فشار دهید.

دستور cd مخفف Change Directory یا تغییر شاخه است. دستور ls مخفف List و برای گرفتن لیست از فایلهای مسیر جاری استفاده می‌شه. مثل Dir در Dos. حالا سعی کنید یک فایل بسازید، دستور touch رو با پارامتر a اجرا کنید. این دستور از شما خطا می‌گیره، زیرا شما یک کاربر جزء هستید و می‌خواهید در root سیستم فایل ایجاد کنید و این امر توسط لینوکس جلوگیری می‌شه. دستور cd رو اجرا کنید. دستور cd خالی به معنی انتقال به مسیر مربوط به کاربر فعلی می‌شه. یعنی اگه کاربر root باشید دستور cd معادل دستور cd به همراه پارامتر root/ و در صورتی که کاربر user باشید، دستور cd به تنهایی به معنی cd با پارامتر home/user/ می‌باشد.

حال که دستور cd رو اجرا کردید، دستور pwd رو اجرا کنید، تا ببینید کجا هستید. حال دستور touch با پارامتر a رو اجرا کنید، اینبار از شما خطایی نگرفت و در صورتی که دستور ls رو اجرا کنید فایل a رو می‌بینید. حال با دستور rm به معنی remove و پارامتر a فایل ساخته شده به نام a رو پاک کنید.

خوب دستورات دیگه:

دوباره یک فایل بسازید
touch a

فایل ساخته شده a رو به نام دیگری کپی کنید:
cp a b
دستور cp به معنی کپی کردن و به صورت معمول با 2 پارامتر استفاده می‌شه، پارامتر اول فایل مبدا و پارامتر دوم فایل مقصد.
این باعث می‌شه از فایل شما به نام a یک کپی به نام b ساخته بشه. این عمل معادل دستور کپی و چسباندن در ویندوز عمل می‌کنه.

حالا فایل a رو با دستور rm پاک کنید. تنها فایلی که می‌مونه فایل b. می‌تونید مراحل رو با ls ببینید. این دو مرحله کار رو می‌شه با دستور mv انجام داد که مانند Cut و Paste در ویندوز عمل می‌کنه. یعنی یک کپی از فایل تهیه می‌شه و فایل اصلی پاک می‌شه به اصطلاحی عمل Move انجام میشه. پس تابپ کنید:
mv b a
یعنی فایل b رو به a تغییر نام بده.

خوب تا حالا با فایل‌ها کار کردید، فایل‌ها مثل کاغذند، که میشه اونها رو تو کیف یا پوشه قرار داد. برای ساخت پوشه از دستور mkdir استفاده کنید.
mkdir folder
 این باعث ایجاد یک شاخه می‌شه به نام folder، این بار اگه شما دستور زیر رو تابپ کنید:
mv a folder

باعث تغییر نام a به folder نمیشه، بلکه به خاطر اینکه folder اسم یک شاخه می‌باشد، فایل a رو به داخل اون شاخه یا پوشه انتقال می‌ده.

می‌تونید حالا برید داخل شاخه folder و فایل های توش رو ببینید:
cd folder
ls

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

ضمنا یکی از تفاوتهای اصلی ویندوز و لینوکس در جدا ساز شاخه هاس که در ویندوز از بک اسلش یا استفاده می‌شه و در لینوکس از اسلش یا /. مثل سایت‌های اینترنت که از اسلش استفاده می‌کنن.

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

مورد بعدی تفاوت، حساس بودن لینوکس به نام کوچک و بزرگ فایلهاست برای مثال دستورات زیر خطاست:
touch a
cp A b

زیرا در دستور cp شما می‌خواهید فایلی با نام A‌بزرگ رو کپی کنید، در حالی که اسم فایل ما a کوچک کی‌باشد.

جا افتادن این مسئله یه مقدار سخت، ولی کم کم عادت می‌کنید.

یکی از پارامتر‌هایی که معمولا دستورات لینوکس از اون پشتیبانی می‌کنن، پارامتر help-- که باعث می‌شه یک راهنما از اون دستور نمایش داده بشه و مثل ?/ در ویندوز عمل می‌کنه. مانند:
cp --help
mv --help
touch --help

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

man cp
man mv
man touchژ

توجه کنید برای خروج از برنامه man شما باید در برنامه کلید Escape رو بزنید و تایپ کنید q: و کلید Enter رو فشار بدید.
( البته در بعضی از نسخه‌ها با کلید q هم خارج می‌شه)

مورد دیگه خیلی خوب در لینوکس اینه‌که شما می‌تونید با نوشتن چند حرف از دستور و فشار دادن کلید tab دستور رو کامل کنید. برای مثال دستور fdisk، که شما می‌تونید تایپ کنید fdi و کلید tab رو فشار بدید تا خود Shell لینوکس برای شما ادامه دستور رو کامل کنه. اگه تعداد دستورات زیاد باشه، چیزی نمایش داده نمی‌شه و باtab دوم که شما فشار بدید کل دستوراتی که با fdi شروع می‌شن نمایش داده می‌شه. اگه تعداد دستورات زیاد تر از صفحه باشه، یک صفحه از دستورات نمایش داده می‌شه و سیستم منتظر فشار کلید از سوی شما می‌شه. کلید enter یک خط صفحه رو به پایین می‌بره، کلید Space یک صفحه رو انتقال می‌ده و کلید q از نمایش دستورات خارج می‌شه. این‌کار رو شما با اسم فایل‌ها هم می‌تونید انجام بدید.

ضمنا محیطی که شما الان داخلش قرار دارید Console لینوکس نام داره و اسمش Bash. این نرم‌افزار یکی از قدرتمند ترین Shellهای موجود در جهان، که خیلی هم پویا و پر استفاده است.

برای مثال ما دستوری داریم به نام echo که هر پارامتری که به اون داده بشه رو چاپ می‌کنه مثل
echo salaam

حال شما دستورا زیر رو تابپ کنید:

for i in `seq 10`; do
echo salaam
done

این دستورات باعث می‌شن که 10 خط سلام برای شما نمایش داده بشه. Bash از بقیه دستورات کنترلی مثل if، do ، While و switch پشتیبانی می‌کنه که خارج از بحث اینجاست.

حالا برای ادامه از محیط متنی خارج شید،

قبل از exit کردن، همه فایل‌هایی که ساختید رو پاک کنید با rm

برای پاک کردن شاخه از دستور rm با پارامتر r- استفاده کنید مثل
rm -r folder

r به معنی Recursive یا بازگشتی که برای پاک کردن شاخه‌ها و زیر‌شاخه‌های موجود استفاده می‌شه و دستور rm به تنهایی قابلیت پاک کردن شاخه‌ها رو نداره.

همچنین برای کپی کردن شاخه‌ها می‌تونید از cp با پارامتر r- و سپس شاخه مبدا و مقصد استفاده کنید.

دستور exit رو تایپ کنید.

حالا با کلید Alt Ctrl F7 به محیط گرافیکی برید(توجه کنید زمانی که در محیط متنی‌هستید استفاده از کلید Alt F7 کافیه)

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

اگه پسورد نام کاربری userرو فراموش کردید، در محیط متنی با نام کاربری root وارد شید و دستور passwd رو با پارامتر user اجرا کنید، این کار باعث می‌شه بتونید رمز عبور کاربران جزء رو تغییر بدید.

بعد از اینکه تو محیط گرافیکی دور زدید، از منوی اصلی محیط گرافیکی گزینه Logoff رو انتخاب کنید،

اگه از محیط مجازی استفاده می‌کنید گزینه Shutdown و اگه از محیط واقعی استفاده می‌کنید گزینه Reboot رو انتخاب کنید.

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

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

------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------

برای امروز بسه

بی ساکزز

از طرف عماد سی تی