بیژن حجازی
بیژن حجازی
خواندن ۶ دقیقه·۲ سال پیش

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

در سیستم عامل Linux برخلاف ویندوز که با درایو ها سر و کار داریم، با یک سری directory رو به رو هستیم.
در سیستم عامل Linux برخلاف ویندوز که با درایو ها سر و کار داریم، با یک سری directory رو به رو هستیم.

مقدمه

برای اون هایی که از پس زمینه ویندوزی میان در نگاه اول ساختار پوشه ها و نحوه دسته بندی شون در لینوکس اندکی عجیب به نظر میرسه. در حالی که توی ویندوز چند تا درایو داریم (که اصل کاری شون C عه) این جا فضای هارد دیسک به صورت یکپارچه نگه داشته شده و همه فولدر ها داخل یک فولدر مادر به نام root قرار داده شدن.

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

در ادامه به بررسی فولدر های اصلی در لینوکس می پردازیم.

مسیر (Path)

وقتی میخایم تو فولدر ها گشت و گذار کنیم باید آدرس (مسیر) هر فولدر رو بلد باشیم. با دستور cd که مخفف change directory هست می تونیم مسیر مون رو عوض کنیم. دستور cd یک argument از ما میگیره که همون آدرس (مسیر، path) مقصد مورد نظر هست. به دو صورت می تونیم آدرس رو بدیم:

  • مطلق (absolute): یعنی از root شروع میکنیم و به ترتیب میریم جلو. مثلا آدرس مطلق دسکتاپ کاربری به نام bizhan میشه:
/home/bizhan/Desktop
  • نسبی (relative): یعنی به نسبت مسیری که الان درش حضور داریم آدرس میدیم. برای مثال اگه تو مسیر خانه حضور داشته باشم برای ورود به Desktop باید این مسیر رو به دستور cd بدیم:
cd Desktop
نمودار کلی ساختار سلسله مراتبی فایل ها (FHS) در لینوکس
نمودار کلی ساختار سلسله مراتبی فایل ها (FHS) در لینوکس

/home/[username]

زمانی که ترمینال رو باز می کنیم به صورت پیش فرض در مسیر خانه (home directory) قرار داریم که به صورت اختصار با ~ هم نشون داده میشه. برای مثال اگر نام کاربری شما bizhan باشه آدرس مطلق (absolute path) مسیر خانه میشه:

/home/bizhan

تو پوشه خانه کاربری شما فولدر هایی مثل Desktop, Pictures, Videos و ... قرار داره که انگاری همون Documents توی ویندوز میشه. یک سری فایل های مخفی هم هست توی این مسیر که اول اسمشون dot داره (همون نقطه) مثلا bashrc. و bash_history. که هر کدوم کاربرد های خاص خودشون رو دارن. به صورت کلی ۳ روش برای ورود به مسیر خانه هست:

cd cd /home/bizhan cd ~

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

روت (Root)

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

cd /

حالا با دستور ls می تونیم محتویات این مسیر رو مشاهده کنیم. برای مثال همون طوری که بالا گفتیم اگر نام کاربری مون bizhan باشه و بخایم وارد خانه این کاربر بشیم (به نسبت مسیر root) باید دستور زیر رو وارد کنیم:

cd home/bizhan

دقت کن که تو مثال بالا اول آدرس / قرار ندادیم چون این آدرس نسبی عه. در کد بالا فرض رو بر این گذاشتیم که تو مسیر root حضور داریم (برای درک این که در حال حاضر تو چه مسیری هستیم می تونی دستور pwd رو توی ترمینال وارد کنی).

مسیر root خودش یک سری فولدر داره که فقط کاربر root حق دستکاری (write) روشون رو داره. این کاربر هم مثل بقیه کاربر های یک home directory داره برای خودش با این فرق که آدرس خانه اش root/ عه. یعنی تو پوشه home نیست خانه اش.

/bin

این مسیر که مخفف binary هست فایل های binary دستور هایی رو نگه داری میکنه که به صورت عمومی ازشون استفاده میکنیم مثلا ls. این فایل ها executable هستن به این معنی که خودشون رو می تونیم اجرا کنیم و نیازی به واسطه برای اجرا شدنشون نداریم.

/boot

فایل هایی که برای درست بوت شدن (بارگذاری اولیه) سیستم عامل لازمه در این مسیر نگه داری میشن مثل kernel. کرنل در لغت به معنی هسته است و قسمت مرکزی سیستم عامله که فعالیت های اصلی مثل مدیریت منابع سخت افزازی شامل RAM رو انجام میده.

/dev

این مسیر که مخفف شده device هست فایل های مربوط به device های ضروری متصل به سیستم رو نگه داری میکنه. مثلا وقتی که یک USB drive به سیستم وصل می کنیم یک فایل همنام اسم USB Drive داخل مسیر زیر درست میشه:

/dev/disk/by-label

/etc

این فولدر فایل هایی رو در خودش نگه داری میکنه که تنظیمات پیکربندی (configuration) مربوط به کل سیستم رو انجام میدن. اگر دقت کنی برخی فایل های داخل این مسیر پسوند conf. دارن که مخفف همون configuration عه. مثلا تنظیمات پیکربندی مربوط به mysql داخل مسیر زیر نگه داری میشه:

/etc/mysql

/lib

فایل های binary که داخل فولدر هایی مثل bin ذخیره میشن برای اجرا شدن نیاز به یک سری پیش نیاز هایی دارن (library) که در این مسیر نگهداری میشن.

/media

این مسیر، فولدر های حافظه های جانبی مثل CD-ROM و USB Flash رو نگهداری میکنه و از طریق فولدر هایی که در این مسیر هستن می تونیم به حافظه های جانبی دسترسی داشته باشیم. در مقایسه با مسیر dev/ که فایل های مورد نیاز این تجهیزات رو نگهداری میکنه، این مسیر فولدر هایی رو نگهداری میکنه که نقطه ورود به اون حافظه های جانبی هستن.

/mnt

فایل هایی که توسط ادمین به صورت موقتی mount میشن در این مسیر نگهداری میشن.

/opt

مخفف optional عه. بسته های نرم افزاری اختیاری (همون هایی که خودمون نصب میکنیم) در این مسیر ذخیره میشن. مثلا Google Chrome که به صورت پیش فرض روی لینوکس نصب نیست رو وقتی خودمون نصب میکنیم در این مسیر نگهداری میشه فایل هاش.

/sbin

این مسیر شبیه به مسیر bin/ عه با این تفاوت که binary هایی رو نگهداری میکنه که توسط ادمین سیستم با اهدافی مثل نگهداری سیستم استفاده میشن. حرف s اول این مسیر هم نشون دهنده همین system هست. به عبارت دیگه این مسیر system binaries رو نگهداری میکنه.

/srv

مخفف service عه. همون طور که از اسمش هم مشخصه فایل هایی رو نگهداری میکنه که به سرور مربوطه (چون این سرور عه که سرویس میده) مثلا دیتا ها و اسکریپت هایی که به سرور مربوطه.

/tmp

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

/usr

مخفف user هست. اکثرا برنامه ها و ویژگی هایی رو نگهداری میکنه که چندین کاربر ازش استفاده میکنن. فایل های داخل این مسیر اصطلاحا second hierarchy هستن. برای مثال usr/bin فایل های binary برنامه های کاربر رو نگهداری میکنه. اگه توی مسیر bin/ یک فایل binary رو پیدا نکردین باید توی usr/binary دنبالش بگردین مثلا scp.

/proc

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

نتیجه گیری

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

برنامه نویسیلینوکسیونیکسlinuxunix
سلام! نوشتن به منزله مطالعه «خود» هست. من بیشتر تو زمینه برنامه نویسی و روان شناسی مطلب میذارم. خوشحال میشم نظرات تون رو باهام در میون بذارین.
شاید از این پست‌ها خوشتان بیاید