در این مقاله به بررسی ساختار دایرکتوری های لینوکس و کاربردشان پرداخته می شود. احتمالا این جمله را شنیده باشید که هر چیزی در UNIX و مشتقات آن (مانند لینوکس)، یک فایل محسوب می شود. اگر فایل نباشد، یک پروسه در حال اجرا خواهد بود.
سه دسته کلی از فایل ها در لینوکس وجود دارد:
- فایل های عمومی: این فایل ها متشکل از داده های باینری یا ASCII هستند. این دسته شامل فایل های معمولی همچون اسناد، تصاویر، صوت، ویدئو و.. می شود.
- فایل های دایرکتوری: در لینوکس، دایرکتوری ها نیز در دسته فایل ها دسته بندی می شوند. دایرکتوری ها، فضایی نیز برای فایل ها و پوشه های دیگر ارائه می کنند.
- فایل های مربوط به device ها: این فایلهای ویژه، یک رابط برای درایور دستگاه ها فراهم میکنند و امکان استفاده از دستگاههای سختافزاری همچون ماوس، کیبورد، دستگاههای متصل از طریق USB، هارد درایو و… را فعال مینمایند.
نمودار ساختار دایرکتوری های لینوکس
یک توزیع استاندارد لینوکس از ساختار دایرکتوری که در نمودار زیر نمایش داده شده است، پیروی می کند.
تصویر(1)
هر یک از دایرکتوری های فوق که در قدم اول فایل محسوب می شوند، شامل اطلاعات مهمی هستند. از جمله آنها می توان به فایل های پیکربندی، فایل های مرتبط با بوت درایور دستگاه ها و… اشاره کرد. در ادامه هر یک از این دایرکتوری ها به ترتیب بررسی خواهند شد.
دایرکتوری /
دایرکتوری روت که با اسلش (/) نمایش داده می شود، بالاترین سطح دایرکتوری درساختار دایرکتوری های لینوکس است. این دایرکتوری شامل تمامی دایرکتوری ها، ساب دایرکتوری ها و فایل ها در سیستم عامل لینوکس می باشد. ساختار سلسله مراتبی لینوکس از این دایرکتوری آغاز می گردد.
نکته: دایرکتوری روت نباید با هوم دایرکتوری روت (/root) اشتباه گرفته شود.
تصویر(2)
دایرکتوری /boot
این دایرکتوری یکی از ضروری ترین دایرکتوری ها در یک سیستم لینوکسی میباشد. همانطور که از نام این دایرکتوری مشخص است، شامل فایل های بوت لینوکس همچون بوت لودر، کرنل و دیگر فایل های مربوطه می باشد. فایل های vmlinuz، نشان دهنده فایل ایمیج فشرده شده از کرنل لینوکس است.
تصویر(3)
دایرکتوری /etc
دایرکتوری /etc شامل فایل های پیکربندی سیستم برای تمامی سرویس ها، اسکریپت ها و سایر برنامههای نصب شده میباشد. این دایرکتوری به عنوان مرکز عصبی سیستم لینوکس عمل میکند.
تصویر(4)
دایرکتوری /home
در ساختار دایرکتوری های لینوکس این دایرکتوری شامل فایل ها و پوشه های شخصی کاربران لینوکس می باشد. در محیط گرافیکی سیستم عامل لینوکس، این دایرکتوری به صورت پیشفرض دارای پوشههایی همچون Desktop، Documents، Downloads، Pictures، Videos و Public خواهد بود. همچنین، دایرکتوری /home فایلهای پیکربندی شخصی را نیز شامل میشود که اسامی آنها با پیشوند نقطه (.) آغاز میگردد. این فایل ها مخفی بوده و شامل تنظیمات اختصاصی یوزر برای سشن های ورود به shell سیستم هستند.
تصویر(5)
دایرکتوری /root
این دایرکتوری در واقع هوم دایرکتوری مربوط به یوزر root است. همانطور که بالاتر در قالب نکته بیان شد، این دایرکتوری نباید با دایرکتوری "/" اشتباه گرفته شود. اکانت root که با عناوینی همچون superuser، administrative user، system administrator یا صرفا یوزر root شناخته می شود، تمامی اختیارات لازم جهت اجرای دستورات و دسترسی به فایل های لینوکس را دارد.
تصویر(6)
دایرکتوری /opt
این دایرکتوری شامل پکیج های add-on و برنامه های متفرقه که به صورت پیشفرض در مخازن رسمی سیستم وجود ندارند، می شود. به عنوان مثال، هنگامی که برنامه هایی مانند Skype، Discord، Spotify و Java را نصب نمایید، در این دایرکتوری ذخیره می شوند.
تصویر(7)
دایرکتوری /dev
این دایرکتوری شامل فایل های ویژه مربوط به دستگاههای متصل همچون هارد درایو، کیبورد، ماوس و… می باشد. همانطور که اشاره شد، این فایل ها معمولی نیستند و یوزر نمی تواند عملیات خواندن و نوشتن را روی آنها انجام دهد. این فایل ها مربوط به دستگاه های استانداردی هستند که برنامه های موجود در سیستم از طریق فراخوان های ورودی و خروجی، با آنها در تعامل می باشند.
تصویر(8)
دایرکتوری /var
در ساختار دایرکتوری های لینوکس این دایرکتوری، محل ذخیره فایل های متغیری است که توسط سیستم تولید شده اند. از جمله این فایل ها می توان به فایل های لاگ، کش و spool اشاره کرد.
تصویر(9)
دایرکتوری /bin
این دایرکتوری از فایل های باینری، برنامه های قابل اجرا و دستورات رایج سیستم که توسط تمامی کاربران قابل اجرا هستند، تشکیل شده است. از جمله این دستورات می توان به ls ، pwd ، cat ، mkdir ، cd ، mv ، cp ، du ، df ، tar ، rpm ، wc ، history و.. اشاره کرد.
تصویر(10)
دایرکتوری /sbin
این دایرکتوری شامل فایلهای قابل اجرا، نرم افزارهای مفید و دستورات سیستمی است که برای کاربر root و یوزرهای با دسترسی کامل، رزرو شدهاند. از جمله این دستورات می توان به halt ، reboot ، mkfs ، fsck ، iptables ، ifconfig ، ip ، swapon و.. اشاره کرد.
تصویر(11)
دایرکتوری /usr
این دایرکتوری به علت حجم بسیار زیاد اطلاعاتی که نگهداری می کند، یکی از مهمترین دایرکتوری های لینوکس است. این دایرکتوری شامل فایل های فقط خواندنی (read-only) در سطح سیستم می باشد. از جمله این فایل ها می توان به کتابخانه ها، فایلهای باینری مرتبط با یوزر، اسناد، برنامه ها و ابزارهای سیستمی اشاره کرد.
تصویر(12)
دایرکتوری /proc
دایرکتوری /proc، یک دایرکتوری متفاوت در ساختار دایرکتوری های لینوکس محسوب می شود. یک فایل سیستم ساختگی یا مجازی است که شامل اطلاعات ضروری در خصوص پروسه های در حال اجرا می باشد. این دایرکتوری به عنوان مرکز کنترل و اطلاعات برای کرنل لینوکس محسوب میشود. اطلاعات این دایرکتوری با فرایند start up سیستم ایجاد شده و پس از خاموش کردن آن، از بین می روند.
تصویر(13)
دایرکتوری /mnt
از این دایرکتوری و ساب دایرکتوری های آن، به منظور اتصال موقت دستگاه های ذخیره سازی همچون هارد دیسک درایوها، درایوهای USB و CDROM ها استفاده می شود.
تصویر(14)
دایرکتوری /sys
دایرکتوری /sys یک فایل سیستم مجازی است که شامل مجموعه ای از فایل های مجازی بوده و رابطی برای هسته لینوکس فراهم می کند.
تصویر(15)
دایرکتوری /media
از این دایرکتوری برای اتصال دستگاه های قابل حمل مانند درایوهای USB استفاده می شود.
تصویر(16)
دایرکتوری /run
دایرکتوری /run یک دایرکتوری ویژه در حافظه سیستم می باشد و اقداماتی که از زمان روشن شدن کامپیوتر انجام شده است را ثبت می کند. این اطلاعات موقت هستند و نیازی به ذخیره دائمی آنها نیست. زمانی که سیستم مجددا روشن شود، هر فایلی که در دایرکتوری /run باشد حذف شده و فضا برای ثبت اطلاعات جدید فراهم می شود.
تصویر(17)
دایرکتوری /tmp
این دایرکتوری برای ذخیره موقت فایل ها کاربرد دارد و اکثر نرم افزارها از این دایرکتوری جهت ایجاد فایل های قفل شده استفاده می کنند. برنامه ها با ساختن این فایل در دایرکتوری /tmp اعلام می کنند که در حال کار با منابع مشخصی هستند و سایر برنامه ها برای دسترسی به آن منابع باید منتظر بمانند تا قفل فایل آزاد گردد. عدم دسترسی همزمان چندین پروسه به منابع یکسان، از data corruption یا "خرابی داده" جلوگیری می کند.
تصویر(18)
دایرکتوری /lib
این دایرکتوری حاوی کتابخانه های اساسی لازم جهت اجرای برنامه ها می باشد. کتابخانه هایی که در این دایرکتوری به اشتراک گذاشته شدهاند، این امکان را فراهم میکنند تا چندین برنامه به طور همزمان از کد یکسانی در حافظه استفاده نمایند. این مورد موجب می شود تا عملکرد کلی سیستم بهبود پیدا کند. در بسیاری از توزیع های مدرن لینوکسی، محتوای این دایرکتوری به مسیر /usr/lib منتقل شده است. هدف از این تغییرات، ساده سازی و انسجام بیشتر در ساختار سلسله مراتبی لینوکس می باشد.
تصویر(19)
دایرکتوری /lost+found
این دایرکتوری برای بازیابی فایلهایی که به علت کرش یا خاموش شدن ناگهانی سیستم دچار مشکل شده اند، استفاده می شود.
دایرکتوری /srv
این دایرکتوری که مخفف service است، شامل فایل های مربوط به سرویس ها می باشد.
نتیجه گیری
ساختار سلسله مراتبی فایل سیستم لینوکس، یک بخش حیاتی از سیستم عامل است و هر دایرکتوری برای اهداف مشخصی استفاده میشود. آشنایی با ساختار دایرکتوری های لینوکس، برای مدیران سیستم ضروری است و به آنها اجازه میدهد تا از امکانات لینوکس نهایت بهره را ببرند.