You are on page 1of 9

‫مروری کلی بر سیستم فایل در لینوکس‬

‫فایلها‬
‫یک توصیف ساده از سیستم یونیکس که برای لینوکس نیز به کار می رود عبارت‬
‫است از‪" :‬در سیستم یونیکس همه چیز فایل است و اگر فایل نباشد یک فرایند‬
‫خواهد بود"‬
‫عبارت فوق صحیح است زیرا تعدادی فایل خاص وجود دارد که تنها فایل محسوب‬
‫نمی شوند (برای مثال ‪ pipes‬یا ‪ ) sockets‬اما برای سادگی گفته می شود که‬
‫همه چیز فایل است‪.‬سیستم لینوکس نیز درست همانند یونیکس‪ ،‬هیچ تفاوتی بین‬
‫فایل و دایرکتوری قائل نمی شود‪ ،‬زیرا دایرکتوری همان فایل است که شامل‬
‫اسامی سایر فایل هاست‪.‬برنامه ها‪ ،‬خدمات‪ ،‬متن ها‪ ،‬عکس ها همگی فایل‬
‫هستند‪.‬دستگاه های ورودی و خروجی و سایر دستگاه های دیگر نیز با توجه به‬
‫سیستم‪ ،‬فایل در نظر گرفته می شوند‪.‬‬
‫برای مدیریت تمام این فایل ها به شیوه ای منظم‪ ،‬ترجیح می دهیم که به انها‬
‫همانند درختی مرتب نگاه کنیم‪ (.‬به عنوان مثال همانند ساختار هارد دیسک در‬
‫‪ ) MS_DOS‬شاخه های بزرگتر شاخه های بیشتری دارندو شاخه های انتهایی‬
‫شامل برگ های درخت یا فایل های معمولی هستند‪.‬از حال از این تصویر درختی‬
‫استفاده خواهیم کرد‪ ،‬اما در اینده خواهیم دید که این تصویر کامل صحیح نمی‬
‫باشد‪.‬‬

‫مرتب سازی فایل ها‬


‫اغلب فایل ها تنها فایل هستند که به انها فایل های عادی(‪ )Regular files‬گفته‬
‫می شود‪.‬این فایل ها شامل داده های معمولی هستند مانند فایل های متنی‪،‬‬
‫فایل ها یا برنامه های اجرایی‪ ،‬ورودی یا خروجی برنامه ها و ‪....‬‬
‫در سیستم لینوکس به طور معمول فرض می شود که با هر چه که مواجه می‬
‫شوید فایل است اما موارد استثنایی نیز وجود دارد‪.‬‬
‫دایرکتوریها‪ :‬فایل ها و لیست سایر فایل ها‪.‬‬
‫فایل های خاص‪ :‬مکانیزمی که برای ورودی و خروجی به کار می رود‪.‬اکثر فایل‬
‫های خاص در ‪ dev/‬قرار دارند‪.‬در اینده دراین باره بیشتر بحث خواهیم کرد‪.‬‬
‫پیوندها‪ :‬سیستمی است که سبب می شود فایل یا دایرکتوری در چندین قسمت‬
‫از درخت فایل سیستم قابل مشاهده باشد‪.‬در این باره جزئیات بیشتر را خواهیم‬
‫گفت‪.‬‬
‫(دامنه) ‪: sockets‬یکی از انواع فایل های خاص که شبیه ‪ socket‬های ‪TCP/IP‬‬
‫است و به وسیله کنترل دسترسی به سیستم فایل‪ ،‬امنیت فرایند های داخلی‬
‫شبکه را تامین می کند‪.‬‬
‫‪ :Named pipes‬کمابیش عملکردی شبیه ‪ socket‬ها دارد و راهی برای ارتباط‬
‫فرایند ها با یکدیگر بدون استفاده از معنای ‪ socket‬شبکه را شکل می دهد‪.‬‬
‫نماد مفهوم‬
‫‪ -‬فایل عادی‬
‫‪ d‬دایرکتوری‬
‫‪ L‬پیوند‬
‫‪ c‬فایل های خاص‬
‫‪s socket‬‬
‫‪p Named paipe‬‬
‫برای اینکه همیشه مجبور نباشیم برای یافتن نوع فایل در یک لیست طولنی‬
‫جستجو کنیم‪ ،‬بیشتر سیستم ها به دنبال نام فایل‪ ،‬پسوندی را شامل یکی از‬
‫کارکتر های “‪ ”@|*=/‬اضافه می کنند که نشاندهنده نوع فایل می باشد‪.‬‬
‫شما به عنوان یک کاربر تنها با فایل های ساده‪ ،‬فایل های اجرایی‪،‬دایرکتوری ها‬
‫و پیوندها سر و کار خواهید داشت‪.‬فایل های خاص برای ایجاد سیستم به نوع‬
‫دلخواه است و تنها مدیران سیستم و برنامه نویسان با انها سر و کار خواهند‬
‫داشت‪.‬‬
‫حال قبل از اینکه به فایل ها و دایرکتوری های مهم نگاهی بیندازیم بد نیست‬
‫کمی بیشتر در مورد پارتیشن ها بدانیم‪.‬‬

‫در باره پارتیشن بندی‬

‫چرا پارتیشن؟‬
‫اغلب مردم دانش مبهمی راجع به پارتیشن ها دارند‪ ،‬زیرا تمامی سیستم های‬
‫عامل توانایی ایجاد و یا پاک کردن انها را دارند‪.‬‬
‫به نظر عجیب می رسد که لینوکس حتی زمانی که از مراحل نصب استاندارد‬
‫استفاده می کند‪ ،‬نیاز به بیش از یک پارتیشن روی یک دیسک دارد‪ .‬و این نیاز به‬
‫شرح و تفصیل بیشتر دارد‪.‬‬
‫هدف داشتن پارتیشن های مختلف در واقع دست یابی به امنیت داده ای بالتر در‬
‫هنگام بروز حادثه است‪.‬با تقسیم کردن هارد دیسک به چندین پارتیشن داده ها‬
‫می توانند به صورت گروهبندی شده و جداگانه باشند‪.‬‬
‫زمانی که حادثه ای در پارتیشنی رخ دهد‪ ،‬تنها داده های همان پارتیشن اسیب می‬
‫بینند در حالیکه سایر داده ها در دیگر پارتیشن ها اسیبی نمی بینند‪.‬‬
‫به دلیل امنیتی و قدرت عمل سیستم‪ ،‬از پارتیشن ها استفاده می شود‪،‬و بنا‬
‫براین نفوذ در بخشی از سیستم به این معنی نیست که کل کامپیوتر در خطر‬
‫است‪.‬و این مهمترین دلیل استفاده از پارتیشن بندی است‪.‬‬
‫به خاطر داشته باشید که چنین سیستم فایلی تنها امنیت داده ها را در هنگام‬
‫بروز اشکال و یا قطع‬
‫ناگهانی ابزارهای حافظه تامین می کند‪.‬و داده های شما را در مقابل ساختار‬
‫نادرست و یا اشکالت منطقی در سیستم فایل حفاظت نمی کند‪.‬در این مواقع‬
‫لزم است که از راه حل های ‪RAID‬‬
‫‪ Array Of Inexpensive Disks( )Redundant‬استفاده کنید‪.‬‬

‫انواع وطرحبندی پارتیشن‬


‫‪ 2‬پارتیشن عمده در سیستم لینوکس وجود دارد‪:‬‬
‫پارتیشن داده‪ :‬داده های نرمال سیستم لینوکس‪ ،‬شامل پارتیشن ریشه(‪ )root‬که‬
‫حاوی کلیه داده ها برای شروع و اجرای سیستم است‪.‬‬
‫پارتیشن ‪: swap‬توسعه حافظه فیزیکی کامپیوتر ‪ ،‬حافظه یدکی روی هارد‬
‫دیسک‪(.‬حافظه مجازی)‬
‫اغلب سیستم ها شامل پارتیشن ریشه‪ 1،‬یا چند پارتیشن داده و یک یا چند‬
‫پارتیشن ‪ swap‬می باشند‪.‬‬
‫سیستم های محیط های ترکیبی ممکن است حاوی پارتیشن هایی برای سایر داده‬
‫های سیستم باشند‪ ،‬به عنوان مثال پارتیشنی با سیستم فایل ‪ FAT‬یا ‪ VFAT‬برای‬
‫داده ‪. MS Windows‬‬
‫اکثر سیستم های لینوکس هنگام نصب برای تنظیم نوع پارتیشن از ‪fdisk‬‬
‫استفاده می کنند‪.‬معمول این کار به صورت خودکار انجام می شود‪.‬گرچه بعضی‬
‫اوقات ممکن است این قدر خوش شانس نباشید‪.‬در این موارد شما نیاز دارید که‬
‫خودتان نوع پارتیشن ها را تعیین کنید و حتی عمل پارتیشن بندی را نیز خودتان‬
‫انجام دهید‪.‬ابزار ‪ fdisk‬در این مورد به شما کمک خواهد کرد‪.‬‬
‫جدا از این ها‪ ،‬لینوکس از انواع مختلفی از سیستم های فایلی دیگر نیز حمایت‬
‫می کند‪.‬همانند ‪ JFS،NFS،fatXX‬و بسیاری از سیستم های فایلی که در دیگر‬
‫سیستم عامل ها در به کار می روند‪.‬‬
‫پارتیشن استاندارد ریشه(که با یک سلش مجزا نشان داده می شود‪ )/،‬حدودا ‪100‬‬
‫تا ‪ 500‬مگا بایت فضا اشغال می کند و شامل فایل های پیکر بندی سیستم‪ ،‬اصلی‬
‫ترین دستورات و برنامه های سرویس دهنده‪ ،‬کتابخانه های سیستم‪ ،‬برخی‬
‫فضاهای موقتی و دایرکتوری خانه ی(‪ )home‬کاربر اصلی‬
‫یا همان مدیر(‪ )administrative‬می باشد‪.‬یک نصب استاندارد نیازمند حدودا ‪250‬‬
‫مگا بایت فضا برای پارتیشن ریشه است‪.‬‬
‫فضای ‪ swap‬تنها برای خود سیستم قابل دسترس است‪ ،‬و در حین عملیات عادی‬
‫سیستم از دید ما پنهان است‪ swap.‬سیستمی است که همانند سیستم های‬
‫نرمال یونیکس به شما اطمینان می دهد که هر اتفاقی که بیفتد شما می توانید‬
‫به کار خود ادامه دهید‪.‬به علت این فضای کمکی شما هیچ گاه در لینوکس با پیغام‬
‫های خطایی مثل حافظه بیش از حد مجاز و یا ابتدا برخی از کارها را متوقف‬
‫کرده و مجدد امتحان کتید‪ ،‬مواجه نخواهید شد‪ Swap .‬یا حافظه مجازی مدت‬
‫زیادی است که مورد قبول سیستم های عامل خارج از دنیای یونیکس واقع شده‬
‫است‪.‬‬
‫به طور طبیعی استفاده از حافظه روی هارد کند تر از استفاده از تراشه های‬
‫واقعی حافظه کامپیوتر است اما داشتن چنین حافظه ای بسیار راحت است‪.‬‬
‫لینوکس معمول اندازه ‪ swap‬را ‪ 2‬برابر مقدار حافظه فیزیکی حساب می‬
‫کند‪.‬هنگام نصب سیستم باید بدانید که چگونه عمل کنید‪.‬مثالی از سیستمی با‬
‫‪ 512‬مگا بایت ‪:RAM‬‬
‫اولین امکان‪ 1 :‬پارتیشن ‪ swap‬با ‪ 1‬گیگ فضا‪.‬‬
‫دومین امکان‪ 2 :‬پارتیشن ‪ swap‬با ‪ 512‬مگا بایت فضا‪.‬‬
‫سومین امکان‪ ( :‬با ‪ 2‬هارد دیسک) ‪ 1‬پارتیشن با ‪ 512‬مگا بایت روی هر دیسک‪.‬‬
‫انتخاب اخر زمانی که دستگاه های ‪ I/O‬زیادی وجود داشته باشند بهترین نتیجه را‬
‫می دهد‪.‬‬
‫برای راهنمایی بیشتر مستندات نرم افزار را مطالعه کنید‪ .‬برخی کاربرد ها‬
‫همچون پایگاه داده‬
‫(‪ ، )DB:Data Base‬احتمال به فضای ‪ swap‬بیشتری احتیاج دارند‪ .‬برخی دیگر‬
‫ممکن است از هیچ ‪ swap‬استفاده نکنند‪.‬فضای ‪ swap‬همچنین به نگارش هسته‬
‫تان بستگی دارد‪.‬‬
‫هسته در بسیاری از توزیع های لینوکس در پارتیشن مجزایی قرار دارد‪.‬زیرا‬
‫مهمترین فایل سیستم محسوب می شود‪.‬در این حالت یک پارتیشن ‪ boot/‬نیز‬
‫وجود دارد که هسته(ها) را شامل می شود‪.‬‬
‫بقیه فضای هارد دیسک معمول بین پارتیشن های داده تقسیم می شود‪ ،‬با‬
‫وجودیکه ممکن است کلیه داده های غیر بحرانی سیستم در یک پارتیشن قرار‬
‫بگیرند‪ .‬برای مثال زمانی که نصب استاندارد ایستگاه کاری (‪ )workstation‬را‬
‫اجرا می کنید‪.‬زمانی که داده های غیر بحرانی در پارتیشن های متفاوت قرار می‬
‫گیرند‪ ،‬معمول الگوی زیر اتفاق می افتد‪:‬‬
‫یک پارتیشن برای برنامه های کاربر (‪)user/‬‬
‫یک پارتیشن شامل داده های شخصی کاربر (‪)home/‬‬
‫یک پارتیشن برای ذخیره داده های موقتی مثل چاپ_و ‪ _mail‬صف ها(‪)var/‬‬
‫یک پارتیشن برای سومین بخش و نرم افزار اضافی(‪)opt/‬‬
‫یک بار که پارتیشن ها ساخته شدند‪،‬می توانید تعداد بیشتری به انها اضافه‬
‫کنید‪.‬تغییر اندازه یا تغییر ویژگی های پارتیشن های موجود امکان پذیر است اما‬
‫توصیه نمی شود‪.‬‬
‫تصمیم تقسیم هارد دیسک ها به پارتیشن ها توسط مدیر سیستم(‬
‫‪ )administrator‬صورت می گیرد‪.‬مدیر در سیستم های بزرگتر حتی ممکن است‬
‫با استفاده از نرم افزار مناسب یک پارتیشن را روی چندین هارد دیسک توسعه‬
‫دهد‪.‬در حین فرایند نصب شما می توانید طرح پارتیشن خودتان را با استفاده از‬
‫ابزار خاص توزیع در حال نصب‪ ،‬که معمول یک رابط گرافیکی و یا ‪( fdisk‬ابزاری‬
‫متنی برای ایجاد پارتیشن ها و تنظیم ویزگی هایشان)است‪،‬تعریف کنید‪.‬‬
‫نصب ایستگاه کاری یا مشتری(‪ )client‬اساسا برای استفاده یک شخص است‪.‬نرم‬
‫افزار انتخابی برای نصب این موضوع را منعکس می کند و تاکید اصلی بر روی‬
‫بسته های عمومی کاربر‪ ،‬مانند زمینه دسکتاپ زیبا‪ ،‬ابزارهای توسعه‪ ،‬برنامه های‬
‫مشتری برای ‪ ،E_mail‬نرم افزار چند رسانه ای‪ ،‬وب و دیگر خدمات است‪.‬‬
‫همه چیز با هم در یک پارتیشن بزرگ قرار می گیرد‪ ،‬فضای ‪ swap‬با دو برابر‬
‫ظرفیت ‪ RAM‬نیز اضافه می گردد و ایستگاه کاری شما به طور کلی کامل شده و‬
‫بیشترین فضای ممکن دیسک را برای استفاده شخصی فراهم می کند‪.‬‬
‫در سرویس دهنده‪ ،‬داده های سیستم تمایل دارند که از داده های کاربر مجزا‬
‫باشند‪.‬برنامه هایی که خدمات را ارائه می دهند در جایی متفاوت با جایی که داده‬
‫های مربوط به این خدمات وجود دارند‪ ،‬نگهداری می شوند‪.‬پارتیشن های متفاوتی‬
‫در اینگونه سیستم ها ایجاد می شوند‪:‬‬
‫یک پارتیشن با تمام داده های لزم برای راه اندازی ماشین‬
‫یک پارتیشن با داده های پیکربندی و برنامه های سرویس دهنده‬
‫یک یا چند پارتیشن شامل داده های سرویس دهنده مانند جداول پایگاه داده‪mail،‬‬
‫های کاربران‪،‬ارشیو ‪ftp‬و غیره‪.‬‬
‫یک پارتیشن با درخواست ها و برنامه های کاربران‬
‫یک یا چند پارتیشن برای فایل های خاص کاربران(دایرکتوری های کاربران)‬
‫یک یا چند پارتیشن ‪( swap‬حافظه مجازی)‬
‫خدمات دهنده ها معمول حافظه بیشتر و در نتیجه فضای ‪ swap‬بیشتری‬
‫دارند‪.‬مطمئنا فرایندهای خدمات دهنده (‪ )server‬مانند پایگاه داده‪،‬به فضای‬
‫‪ swap‬بیش از حد معمول احتیاج دارد‪.‬برای اجرای بهتر‪ swap ،‬معمول به پارتیشن‬
‫های ‪ swap‬متفاوتی تقسیم می شود‪.‬‬
‫فرمان ‪df‬در یک سیستم در حال اجرا‪ ،‬اطلعات در مورد پارتیشن ها می تواند با‬
‫استفاده از دستور‬
‫‪df‬‬
‫(‪ )disk full or disk free‬نشان داده شود‪.‬درلینوکس ‪ df‬نگارش ‪ GNU‬است و –‪h‬‬
‫یا گزینه ‪human readable‬‬
‫را که قابلیت خوانایی را بسیار تقویت می کند‪ ،‬حمایت می کند‪.‬توجه داشته باشید‬
‫که سیستم های یونیکس تجاری معمول نگارش ‪ df‬و دیگر دستورات خاص‬
‫خودشان را دارند‪.‬رفتار انها معمول مشابه است‪ ،‬گرچه ابزار عمومی با نگارش‬
‫‪ ، GNU‬خصوصیات بهتر و بیشتری دارند‪.‬‬
‫دستور ‪ df‬تنها اطلعات پارتیشن های فعال و غیر ‪ swap‬را نمایش می دهد که‬
‫می تواند شامل پارتیشن های سایر سیستم های شبکه باشد‪.‬‬
‫سایر طرحبندی های سیستم فایل‬
‫صوری‬
‫برای راحتی سیستم فایل لینوکس معمول به صورت ساختار درختی در نظر‬
‫گرفته می شود‪.‬در سیستم لینوکس استاندارد‪ ،‬عموما با طرحبندی زیر مواجه می‬
‫شوید‪:‬‬

‫شکل فوق طرحبندی سیستم ردهت رانشان می دهد‪.‬این طرحبندی بسته به مدیر‬
‫سیستم و وظیفه ماشین یونیکس‪ ،‬ممکن است تغییر کند‪ .‬و یا دایرکتوری ها‬
‫ممکن است کم یا زیاد شوند‪.‬اسامی نیز لزوما مانند فوق نیستند‪،‬و تنها قراردادی‬
‫هستند‪.‬‬
‫درخت سیستم فایل از ‪(/‬سلش) اغاز می شود‪.‬این دایرکتوری تمام زیر دایرکتوری‬
‫ها و فایل ها را شامل می شود و دایرکتوری ریشه یا به اختصار ریشه سیستم‬
‫فایل نامیده می شود‪.‬‬
‫معمول قبل از دایرکتوری هایی که تنها یک سطح پایین تر از ریشه اند‪ ،‬یک سلش‬
‫قرار میگیرد تا مکانشان مشخص شود و مانع اشتباه گرفته شدن انها با سایر‬
‫دایرکتوری ها با اسامی مشابه گردد‪ .‬همیشه خوب است زمان شروع با یک‬
‫سیستم جدید‪ ،‬نگاهی به دایرکتوری ریشه بیندازیم‪:‬‬
‫زیر دایرکتوری های ریشه را در زیر مشاهده می کنید‪.‬‬

‫‪bin/‬برنامه های عمومی که توسط سیستم توزیع شده اند‪،‬مدیر سیستم و‬


‫کاربران‪.‬‬
‫‪boot/‬فایل های راه اندازی و هسته‪.vmlinuz،‬و همچنین داده های ‪GRUB‬‬
‫(‪ GR and Unified Boot Loader(.GRUB‬تلشی است برای رهایی از راه‬
‫انداز_بارکننده هایی که امروزه میشناسیم‪.‬‬
‫‪dev/‬شامل مراجعاتی به کلیه سخت افزار های فرعی ‪،CPU‬که به صورت فایل‬
‫هایی با خصوصیات ویژه ارائه می شوند‪.‬‬
‫‪etc/‬مهمترین فایل های پیکربندی سیستم در این دایرکتوری قرار دارند‪.‬داده های‬
‫این دایرکتوری مشابه با داده های موجود در ‪ control panel‬ویندوز می باشد‪.‬‬
‫‪home/‬دایرکتوری های ‪ home‬کاربران معمولی‪.‬‬
‫‪(initrd/‬در برخی توزیع ها)اطلعات برای راه اندازی‪.‬این دایرکتوری را پاک نکنید!‬

‫‪lib/‬فایل های کتابخانه ای‪ ،‬شامل فایل های کلیه برنامه هایی که مورد نیاز‬
‫کاربران و سیستم است‪.‬‬
‫‪lost+found/‬همه پارتیشن ها ‪ lost_found‬را در دایرکتوری بالتر خود‬
‫دارند‪.‬فایل هایی که در حین خرابی ذخیره می شوند‪ ،‬در این محل هستند‪.‬‬
‫‪misc/‬برای اهداف متفرقه‪)miscellaneous(.‬‬
‫‪mnt/‬نقطه اتصال استاندارد (‪ )mount point‬فایل های خارجی سیستم‪.‬برای‬
‫مثال ‪ CD_ROM‬یا دوربین دیجیتال‪.‬‬
‫‪net/‬برای قرارگرفتن کلیه فایلهایی که روی سایر کامپیوتر ها در شبکه قرار‬
‫دارند‪.‬‬
‫‪opt/‬نوعا شامل نرم افزار های شخص ثالث (منظور نرم افزارهای تولید شده‬
‫توسط سایر شرکتهاست‪ ).‬می باشد‪.‬‬
‫‪proc/‬یک سیستم فایل مجازی است که شامل اطلعاتی راجع به منابع سیستم‬
‫می باشد‪.‬اطلعات بیشتر راجع به مفهوم فایل ها در ‪ proc‬با وارد کردن دستور‬
‫‪ man proc‬به دست می اید‪.‬فایل ‪ proc.txt‬سیستم فایل مجازی را با جزئیات‬
‫بیشتر مطرح می کند‪.‬‬
‫‪root/‬دایرکتوری ‪ home‬کاربر مدیر‪.‬به تفاوت بین ‪،/‬دایرکتوری ریشه و ‪، root/‬‬
‫دایرکتوری خانه کاربر ریشه توجه داشته باشید‪.‬‬
‫‪sbin/‬برنامه های مورد استفاده سیستم و مدیر سیستم‪.‬‬
‫‪tmp/‬فضایی موقت برای استفاده توسط سیستم که پس از راه اندازی مجدد پاک‬
‫می شود پس از ان برای ذخیره هیچ کاری استفاده نکنید‪.‬‬
‫‪usr/‬برنامه ها‪،‬کتابخانه ها‪،‬مستندات و غیره‪.‬برای تمامی برنامه های مربوط به‬
‫کاربران‪.‬‬
‫‪var/‬مخزنی برای تمامی فایل های متغیر و موقت ایجاد شده توسط کاربر‪.‬مانند‬
‫فایل هایی که از اینترنت ‪ download‬شده اند و یا برای نگهداری ‪ image‬از یک‬
‫‪ CD‬قبل از رایت شدن ان‪.‬‬

‫چگونه متوجه می شوید که یک دایرکتوری به کدام پارتیشن تعلق دارد؟‬


‫استفاده از دستور ‪ df‬با نقطه (‪ ).‬به عنوان انتخاب نشان می دهد که دایرکتوری‬
‫جاری به کدام پارتیشن متعق است و در مورد مقدار فضایی که پارتیشن استفاده‬
‫می کند اطلع می دهد‪.‬‬
‫‪. Sandra:/lib> df –h‬‬
‫‪Filesystem size Used Avail Use% Mounted on‬‬
‫‪/ dev/hda7 980M 163M 767M 18%/‬‬
‫به عنوان یک اصل کلی‪،‬هر دایرکتوری در زیر دایرکتوری ریشه‪ ،‬در پارتیشن ریشه‬
‫قرار دارد‪،‬مگر اینکه در یک لیست کامل ‪ df‬یک ورودی مجزا داشته باشد‪.‬‬
‫اصل سیستم فایل‬
‫برای بسیاری از کاربران و برای بسیاری از اعمال مدیریت سیستم‪،‬کافیست‬
‫بپذیرند که فایل ها و دایرکتوری ها در یک ساختار درخت مانند مرتب شده‬
‫اند‪.‬اگرچه کامپیوتر چیزی در مورد درخت ها و یا ساختار های درختی نمی داند‪.‬‬
‫هر پارتیشن‪ ،‬سیستم فایل خاص خودش را دارد‪.‬با در نظر گرفتن کلیه سیستم‬
‫های فایل با هم‪،‬می توانیم نظریه ساختار درختی کل سیستم را شکل دهیم‪ ،‬اما‬
‫کار به همین سادگی هم نیست‪.‬در سیستم فایل هر فایل با یک ‪ inode‬نشان داده‬
‫می شود‪ ،‬که نوعی شماره سریال است که شامل اطلعاتی راجع به داده های‬
‫واقعیی است که فایل را ایجاد کرده اند‪:‬فایل به چه کسی متعلق است‪ ،‬و در‬
‫کجای هارد دیسک قرار دارد‪.‬‬
‫هر پارتیشن مجموعه ‪ inode‬های خودش را دارد‪.‬در سیستمی با پارتیشن های‬
‫متعدد‪،‬فایل هایی با شماره ‪ inode‬های یکسان وجود دارند‪.‬‬
‫هر ‪ inode‬یک ساختار داده را بر روی هارد دیسک شرح می دهد‪،‬که ویژگی های‬
‫فایل را ذخیره کرده‪،‬و شامل محل فیزیکی داده های فایل می باشد‪.‬زمانی که‬
‫هارد دیسک برای پذیرفتن منبع داده ها مقدار دهی اولیه می شود‪،‬معمول در حین‬
‫فرایند نصب سیستم اولیه یا هنگام افزودن دیسک های اضافی به سیستم‬
‫موجود‪،‬تعداد ثابتی از ‪ enode‬ها در پارتیشن ایجاد می شوند‪.‬این تعداد بیشترین‬
‫مقدار فایل ها از هر نوعی(از جمله دایرکتوری ها‪،‬فایل های خاص‪،‬پیوند ها و‪)...‬‬
‫که می توانند در یک زمان روی پارتیشن باشند‪ ،‬خواهد بود‪.‬ما نوعا روی داشتن ‪1‬‬
‫‪ inode‬در فضایی بین ‪ 2‬تا ‪ 8‬کیلوبایت فضا حساب می کنیم‪.‬‬
‫زمانی که فایل جدیدی ایجاد شد‪،‬یک ‪ inode‬ازاد را اختیار می کند‪.‬در این ‪inode‬‬
‫اطلعات زیر موجود‬
‫می باشد‪:‬‬
‫صاحب (‪)owner‬و گروه دارنده فایل‪.‬‬
‫نوع فایل(نرمال‪،‬دایرکتوری و‪.)...‬‬
‫اجازه دسترسی به فایل‪.‬‬
‫تاریخ و ساعت ایجاد‪،‬اخرین خواندن و تغییر‪.‬‬
‫تاریخ و ساعتی که این اطلعات در ‪ inode‬تغییر کرده اند‪.‬‬
‫تعداد پیوند ها به این فایل‪.‬‬
‫اندازه فایل‪.‬‬
‫ادرسی که محل واقعی داده های فایل را تعریف می کند‪.‬‬

‫تنها اطلعاتی که ‪ inode‬شامل ان نمی شود‪،‬نام فایل و دایرکتوری می باشد‪.‬این‬


‫اطلعات در داخل دایرکتوری های خاص فایل ذخیره می شوند‪.‬با مقایسه اسامی‬
‫فایل ها و شماره های ‪ inode‬ها‪،‬سیستم قادر به ایجاد ساختار درختی است که‬
‫کاربر آن را درک می کند‪.‬کاربران می توانند شماره ‪ inode‬ها را با استفاده از‬
‫گزینه –‪ i‬در دستور ‪ ls‬نمایش دهند‪ inode.‬ها فضای مجزای مختص خودشان را بر‬
‫روی دیسک دارند‪.‬‬
‫آشنایی با سیستم فایل‬
‫مسیر‬
‫زمانی که شما از سیستم می خواهید که دستوری را اجرا کند‪،‬معمول مجبور‬
‫نیستید که مسیر کامل ان دستور را بدهید‪.‬به عنوان مثال‪ ،‬ما می دانیم که دستور‬
‫‪ ls‬در دایرکتوری ‪ bin/‬قرار دارد‪،‬اما برای اینکه کامپیوتر محتوای دایرکتوری جاری‬
‫را لیست کند‪،‬نیاز نیست که فرمان ‪ bin/ls/‬را وارد کنیم‪.‬‬
‫متغیر محیطی ‪ PATH‬از این ویژگی حمایت می کند‪.‬این متغیر دایرکتوری هایی در‬
‫سیستم را که فایل های اجرایی در ان جا پیدا می شوند‪،‬فهرست می‬
‫کند‪.‬وبنابراین از بسیاری از انواع و مکانهای حفاظت شده دستورات کاربر‬
‫نگهداری می کند‪.‬پس مسیر به طور طبیعی شامل دایرکتوری های بسیاری است‬
‫که هر یک مکانی از اسمشان شامل ‪ bin‬می باشند‪،‬همانگونه که در ادامه نشان‬
‫داده شده است‪.‬فرمان ‪ echo‬برای نشان دادن محتوای (یا ‪ )$‬متغیر ‪ path‬استفاده‬
‫شده است‪:‬‬

‫‪Rogier:> echo $PATH‬‬


‫‪opt/local/bin:/usr/X11R6/bin:/usr/bin:/usr/sbin/:/bin/‬‬

‫در این مثال دایرکتوری های ‪opt/local/bin،/usr/X11R6/bin،/usr/bin،/usr/sbi/‬‬


‫‪n‬و‪ bin/‬متعاقبا برای برنامه مورد نیاز جستجو می شوند‪.‬به محض پیدا شدن‪،‬‬
‫جستجو متوقف می شود حتی اگر جستجو در همه دایرکتوری های مسیر صورت‬
‫نگرفته باشد‪.‬این حالت می تواند منجر به وضعیت غریبی شود‪.‬در اولین مثال زیر‬
‫کاربر می داند که برنامه ای به نام ‪ sendsms‬برای فرستادن ‪ SMS‬وجود دارد و‬
‫کاربر دیگری روی همان سیستم قادر است از ان استفاده کند‪،‬اما نمی‬
‫تواند‪.‬تفاوت در پیکر بندی متغیر ‪ PATH‬است‪:‬‬
‫[‪jenny@blob jenny[$ sendsms‬‬
‫‪bash:sendsms: command not found‬‬
‫[‪jenny@blob jenny[$ echo $PATH‬‬
‫‪bin:/usr/bin:/usr/bin/x11:/usr/X11R6/bin:/home/jenny/bin/‬‬
‫[‪jenny@blob jenny[$ su – tony‬‬
‫‪:Password‬‬
‫‪Tony:~>which sendsms‬‬
‫‪Sendsms is /user/local/bin/sendsms‬‬

‫‪Tony:~echo $PATH‬‬
‫‪\:home/tony/bin.Linux:/home/tony/bin:/usr/local/bin:/usr/local/sbin/‬‬
‫‪usr/X11R6/bin:/usr/bin:/usr/sbin:/bin:/sbin/‬‬
‫توجه کنید که استفاده ازابزار ‪ )su )switch user‬به شما این امکان را می دهد‬
‫که در شرایطی که کلمه عبور کاربری را می دانید‪،‬پوسته(‪( )shell‬در مورد ‪shell‬‬
‫در قسمت های اینده توضیح خواهیم داد‪).‬را در محیط ان کاربر اجرا کنید‪.‬‬
‫\ نشان دهنده ادامه خط است‪ ،‬بدون اینکه ‪ enter‬یک خط را از بقیه جدا کند‪.‬‬
‫در مثال بعد‪،‬کاربر مایل است با فراخوان دستور ‪ )wc )word count‬تعداد خطوط‬
‫یک فایل را بررسی کند‪،‬اما هیچ اتفاقی رخ نمی دهد و مجبور می شود که این‬
‫عمل را با استفاده از کلید های ترکیبی ‪ CTRL+C‬متوقف کند‪:‬‬
‫‪Jumper:~> wc –l test‬‬
‫(‪)ctrl-c‬‬
‫‪Jumper:~> which wc‬‬
‫‪)wc is hashed )/home/jumper/bin/wc‬‬

‫‪jumber:~> echo $PATH‬‬


‫‪\:home/jumper/bin:/usr/local/bin:/usr/local/sbin:/usr/x11R6/bin/‬‬
‫‪usr/bin:/usr/sbin:/bin:/sbin/‬‬
‫استفاده از فرمان ‪ wich‬به ما نشان می دهد که این کاربر در دایرکتوری ‪home‬‬
‫خود یک دایرکتوری ‪ bin‬دارد که شامل برنامه ایست که ‪ ws‬را فراخوانی کرده‬
‫است‪.‬از انجاییکه هنگام جستجوی مسیرها برای فراخوانی ‪، wc‬ابتدا برنامه در‬
‫دایرکتوری ‪ home‬کابر پیدا شده است‪،‬این برنامه اجرا شده است‪،‬احتمال با‬
‫ورودی متوجه نمی شود‪ ،‬پس مجبوریم ان را متوقف کنیم‪.‬برای حل این مسئله‬
‫راه های بسیاری هست(همیشه برای حل مسائل در لینوکس یا یونیکس راه های‬
‫بسیاری وجود دارد)‪:‬یک پاسخ میتواند نامگذاری مجدد برنامه ‪ ws‬کاربر باشد‪ ،‬و یا‬
‫کاربر می تواند مسیر کامل را به فرمانی که قصد اجرای انرا دارد‪ ،‬بدهد که می‬
‫تواند با استفاده از –‪ a‬به دستور ‪ wich‬به دست اید‪:‬‬
‫‪Jumper:~> /usr/bin/wc –l test‬‬
‫‪test 10‬‬
‫اگر کاربر بیشتر از برنامه هایی در دیگر دایرکتوری ها استفاده می کند‪،‬می تواند‬
‫مسیرش را تغییر دهد تا دایرکتوری های خویش را ببیند‪:‬‬
‫‪Jumper:~> export‬‬
‫‪\:PATH=/usr/local/bin:/usr/local/sbin:/usr/x11R6/bin‬‬
‫‪usr/bin:/usr/sbin:/bin:/sbin:/home/jumper/bin/‬‬

‫تغییرات ثابت نیستند!‬


‫توجه داشته باشید که زمانی که از دستور ‪ export‬در پوسته(‪ )shell‬استفاده می‬
‫کنید‪،‬تغییرات موقتی هستند و تنها در همان زمان معتبر هستند(تا زمانی که ‪log‬‬
‫‪ out‬می کنید)‪.‬‬
‫مسیرهای مطلق و نسبی‬
‫مسیر‪ ،‬یعنی راهی که احتیاج دارید انرا در ساختار درختی دنبال کنید تا به فایل‬
‫داده شده برسید‪،‬می تواند به عنوان اغاز تنه درخت( ‪ /‬یا دایرکتوری ریشه)‬
‫توصیف شود‪.‬در این حالت مسیر با ‪ /‬اغاز شده و مسیر مطلق نامیده می‬
‫شود‪،‬چرا که امکان هیچ گونه خطایی وجود ندارد‪ :‬تنها یک فایل در سیستم می‬
‫تواند یافت شود‪.‬‬
‫در حالتی دیگر‪ ،‬مسیر با ‪ /‬اغاز نمی شود و امکان اشتباه گرفتن ~‪( BIN/WC/‬در‬
‫دایرکتوری ‪ home‬کاربر)با ‪ bin/wc‬در ‪ usr/‬از مثال قبل وجود دارد‪.‬مسیر هایی‬
‫که با ‪ /‬اغاز نمی شوند همواره نسبی هستند‪.‬‬
‫در مسیر های نسبی ما همچنین از علمات ‪(.‬نقطه) و ‪ 2(..‬نقطه) برای‬
‫دایرکتوری جاری و دایرکتوری والد استفاده می کنیم‪.‬مجموعه ای از مثال های‬
‫عملی‪:‬‬
‫• زمانی که قصد ترجمه کد مبدا را دارید‪،‬معمول مستندات نصب همزمان که از‬
‫اجرای برنامه پیکربندی دیگری در محل دیگری از سیستم ممانعت می کند‪ ،‬شما را‬
‫راهنمایی می کند تا فرمان ‪ configure/.‬را اجرا کنید‪،‬که برنامه پیکربندی را که‬
‫در دایرکتوری جاری قرار دارد اجرا کند‪.‬‬
‫• در فایل های ‪ HTML‬مسیر های نسبی معمول برای ساختن مجموعه ای از‬
‫صفحات که به اسانی قابل انتقال به مکانی دیگر باشند مورد استفاده قرار می‬
‫گیرند‪:‬‬
‫• یکبار دیگر به تفاوت توجه کنید‪:‬‬
‫‪Theo:~> ls/mp3‬‬
‫‪Is: /mp3: no such file or directory‬‬
‫‪/Theo :~>s mp3‬‬
‫‪/Oriental/ pop/ sixties‬‬

Rate