آیا از خود پرسیدهاید که چرا برخی از برنامهها در زیر /bin، یا /sbin، یا /usr/bin، یا /usr/sbin قرار دارند؟
برای مثال، دستور کمتر در پوشه /usr/bin قرار دارد. چرا /bin یا /sbin یا /usr/sbin/ نه؟
تفاوت بین همه این دایرکتوریها چیست؟
اگر بالاخره تصمیم گرفتید در مورد سیستمعامل رایانه لینوکس اطلاعات بیشتری کسب کنید، درک ساختار سیستم فایل زیربنایی آن مکان خوبی برای شروع است. در واقع Linux از خانواده سیستم عاملهای یونیکس میباشند که از هسته لینوکس استفاده میکنند و منبع باز هستند (family of Unix-like operating systems that use the Linux kernel and are open source).
در این مقاله، اجازه دهید ساختارهای سیستم فایل لینوکس را بررسی کنیم و معنای دایرکتوریهای سطح بالا را درک کنیم. این مقاله ساختار فایل سیستم یا دایرکتوری لینوکس، برخی از فایلهای حیاتی، قابلیت استفاده و مکان آنها را توضیح میدهد. حتما شنیدهاید که در یونیکس و مشتقات یونیکس مانند لینوکس همه چیز یک فایل در نظر گرفته میشود. اگر فایل نیست، پس باید یک فرآیند در حال اجرا باشد در ادامه همراه ما باشید.
دسته بندی های فایل لینوکس
اگر اخیراً از ویندوز به لینوکس تغییر دادهاید، فقدان سی درایو، دی درایو و این گونه قراردادهای نامگذاری آشنا ممکن است شما را گیج کند. اما نگران نباشید، زیرا هنگامی که متوجه شوید ساختار دایرکتوری لینوکس چگونه تنظیم شده است، تمام تردیدهای شما روشن خواهد شد.
سه دسته کلی فایل در لینوکس
General Files
General Files فایلهای معمولی هستند که از دادههای باینری تشکیل شدهاند. اینها فایلهای معمولی مانند اسناد، تصاویر، فایلهای صوتی و تصویری و غیره هستند.
Directory Files
در لینوکس، دایرکتوریها نیز به عنوان فایل دستهبندی میشوند، زیرا به عنوان فضای ذخیرهسازی برای فایلها و پوشههای دیگر نیز عمل میکنند.
Device Files
Device Files فایلهای خاصی هستند که رابطی را برای درایورهای دستگاه فراهم میکنند که امکان استفاده از دستگاههای سخت افزاری روی سیستم مانند ماوسها، کیبوردها، دستگاههای USB، هارد دیسکها و غیره را فراهم میکند. اینها در دایرکتوری /dev یافت میشوند.
نمودار ساختار دایرکتوری لینوکس Linux Directory Structure Diagram
یک توزیع استاندارد لینوکس از ساختار دایرکتوری که در زیر با نمودار و توضیح ارائه شده است پیروی میکند.
هر یک از دایرکتوریهای بالا (که در وهله اول یک فایل است) حاوی اطلاعات مهمی است که برای بوت شدن در درایورهای دستگاه، فایلهای پیکربندی و غیره لازم است.
/ Directory
root directoryکه با یک اسلش به جلو مشخص میشود (/)، بالاترین دایرکتوری در ساختار دایرکتوری لینوکس است. این شامل تمام دایرکتوریها، زیر شاخهها و فایلهای سیستم لینوکس شما میباشد. این از دایرکتوری root است که سلسله مراتب دایرکتوری لینوکس از آنجا شروع میشود.
توجه : دایرکتوری root (/) نباید با root home (/root) اشتباه گرفته شود.
دایرکتوری /boot
boot/ یکی از حیاتیترین دایرکتوریها در سیستم لینوکس است. همانطور که از نام استنباط میشود، دایرکتوری بوت شامل Linux boot files مانند bootloader، kernel و فایلهای مرتبط با آن است. فایلهایی مانند «vmlinuz» تصویر فشرده شده Linux kernel را نشان میدهند.
دایرکتوری /etc Directory
دایرکتوری /etc حاوی فایلهای پیکربندی سیستم برای تمام سرویسها، اسکریپتها و برنامههای شخص ثالث نصب شده است. این دایرکتوری مرکز عصبی سیستم لینوکس در نظر گرفته میشود.
دایرکتوری /home
دایرکتوری /home یک دایرکتوری است که شامل پوشهها و فایلهای شخصی کاربر است. در یک سیستم گرافیکی لینوکس، دایرکتوری خانه به طور پیشفرض حاوی پوشههایی مانند دسکتاپ، اسناد، دانلودها، تصاویر، ویدیوها و عمومی است.
علاوه بر این، دایرکتوری /home حاوی فایلهای پیکربندی شخصی است که با یک نقطه پیشوند شدهاند (.). اینها فایلهای مخفی هستند که حاوی تنظیمات خاص کاربر برای session login shell هستند.
دایرکتوری root/
دایرکتوری root/ دایرکتوری اصلی برای کاربر root است که به عنوان دایرکتوری اصلی کاربر اصلی (و نه به عنوان دایرکتوری root (/)) نیز شناخته میشود.
اکانت روت همچنین به عنوان superuser، کاربر مدیریت، مدیر سیستم یا فقط کاربر root شناخته میشود، تمام دسترسی به دستورات و فایلهای سیستم در لینوکس را دارد.
/opt Directory
دایرکتوری /opt دایرکتوری است که برای بستههای الحاقی و برنامههای نرم افزاری شخص ثالث که به طور پیش فرض در system’s officialگنجانده نشدهاند، رزرو شده است.
به عنوان مثال، هنگامی که برنامههایی مانند Skype ، Discord ، Spotify و Java را نصب میکنید ، برای ذکر چند مورد، آنها در دایرکتوری opt/ ذخیره میشوند .
دایرکتوری /dev
دایرکتوری /dev حاوی device files یا فایلهای مخصوص دستگاههایی است که به سیستم متصل هستند مانند هارد دیسک، صفحه کلید و ماوس. همانطور که گفته شد، این موارد عادی نیستند که کاربر بتواند در آن بخواند و بنویسد.
اینها چکیدهای از دستگاههای استانداردی هستند که برنامههای کاربردی در سیستم شما از طریق تماسهای ورودی و خروجی سیستم با آنها تعامل دارند.
دایرکتوری /var
دایرکتوری var/ فایلهای متغیر تولید شده توسط سیستم را ذخیره میکند که شامل log files ، caches یا حافظه پنهان و spool files میشود.
دایرکتوری bin/
دایرکتوری bin / شامل باینریهای کاربر، برنامههای اجرایی و دستورات رایج سیستم است که توسط همه کاربران در سیستم استفاده میشود. اینها عبارتند از ls، pwd، cat، mkdir، cd، mv، cp، du، df، tar، rpm، wc، history و غیره هستند.
دایرکتوری /sbin
دایرکتوری /sbin حاوی فایلهای اجرایی، ابزارهای کمکی و دستورات سیستمی است که برای کاربر اصلی یا کاربری با امتیازاتroot زرو شده است. این دستورات عبارتند از: halt، reboot، mkfs، fsck ، fdisk ، halt، iptables ، ifconfig ، ip ، swapon و غیره.
دایرکتوری usr/
دایرکتوری usr/ به دلیل حجم عظیمی از داده که در خود دارد به عنوان یکی از مهمترین دایرکتوریها رتبهبندی میشود. دایرکتوری شامل فایلهای فقط خواندنی در سراسر سیستم است. اینها شامل کتابخانهها، باینریهای کاربر و مستندات آنها، برنامهها و ابزارهای سیستمی است.
دایرکتوری proc/
دایرکتوری proc/ تا حدودی دایرکتوری عجیبی است. این یک فایل سیستم مجازی است که حاوی اطلاعات حیاتی در مورد فرآیندهای در حال اجرا است. این دایرکتوری به عنوان مرکز کنترل و اطلاعات برای هسته لینوکس در نظر گرفته میشود.
filesystem در هنگام راه اندازی سیستم ایجاد میشود و پس از خاموش شدن سیستم از بین میرود.
دایرکتوری /mnt
دایرکتوری mnt/ به همراه زیر شاخههای آن دایرکتوری است که به عنوان یک نقطه اتصال موقت برای نصب دستگاههای ذخیرهسازی مانند درایوهای دیسک سخت، درایوهای USB و CDROM در نظر گرفته شده است.
دایرکتوری /sys
Sys/ یک virtual file system است که شامل مجموعهای از فایلهای مجازی است که یک رابط برای Linux kernel فراهم میکند.
دایرکتوری media/
دایرکتوری media / دایرکتوری است که در آن سیستم رسانههای قابل جابجایی مانند درایوهای USB را نصب میکند.
دایرکتوری run/
دایرکتوری run/ یک filesystem موقتی است که حاوی دادههای زمان اجرا فرار است که نشان میدهد سیستم از زمانی که بوت شده است، بوده است. فایل های زیر پوشه run/ باید در شروع فرآیند بوت حذف شوند (حذف یا کوتاه شوند).
دایرکتوری /tmp
دایرکتوری tmp/ دایرکتوری است که فایلهای موقت را ذخیره میکند و بسیاری از برنامهها از این دایرکتوری برای ایجاد فایلهای قفل و نگهداری موقت دادهها استفاده میکنند.
فایلهای زیر دایرکتوری/tmp را حذف نکنید، مگر اینکه دقیقا بدانید چه کاری انجام میدهید! بسیاری از این فایلها برای برنامههای در حال اجرا حیاتی هستند و حذف آنها ممکن است بر خرابی سیستم تأثیر بگذارد.
دایرکتوری /lib
دایرکتوری /lib تمام کتابخانههای استاندارد ضروری مورد نیاز باینریهای کاربر را در دایرکتوری /bin ذخیره میکند.
دایرکتوری /lost+found
دایرکتوری /lost+found در حین نصب لینوکس نصب میشود که برای بازیابی فایلهایی که ممکن است به دلیل خاموش شدن غیرمنتظره خراب شوند مفید است.
دایرکتوری /srv
دایرکتوری /srv دایرکتوری سرویس است و به اختصار ' srv ' نامیده میشود. این دایرکتوری حاوی فایل های مخصوص سرور و مربوط به سرویس است.
کاوش فایل مهم، مکان و قابلیت استفاده آنها
Linux یک سیستم پیچیده است که بر خلاف ویندوز نیاز به روش پیچیدهتر و کارآمدتری برای start, stop, maintain و reboot یک سیستم دارد. برای هر فرآیند در لینوکس یک فایل پیکربندی کاملاً تعریف شده، binaries, man pages, info files و غیره وجود دارد. علاوه بر دایرکتوریهای اصلی، در اینجا لیستی از برخی از فایلها و دایرکتوریهای برجسته و موارد استفاده از آنها آورده شده است.
/boot/vmlinuz: فایل هسته لینوکس.
/dev/hda : فایل دستگاه برای اولین IDE HDD ( درایو دیسک سخت ).
/dev/hdc : فایل دستگاه برای IDE Cdrom معمولا.
/dev/sda : فایل دستگاه برای اولین درایو SATA (درایو دیسک سخت).
/dev/null : یک شبه دستگاه که وجود ندارد. گاهی اوقات خروجی زباله به /dev/null هدایت میشود تا برای همیشه گم شود.
/etc/bashrc: این فایل شامل پیشفرضها، توابع و نامهای مستعار در سراسر سیستم در میان فایلهای دیگر است که توسط همه کاربران سیستم استفاده میشود.
/etc/crontab: این یک فایل در سراسر سیستم است که به طور منحصربهفرد برای زمانبندی یا اتومات کردن وظایف سیستم در یک سیستم لینوکس فرمتبندی شده است.
/etc/exports: فایلی که تعیین میکند کدام سیستم فایل به میزبانهای راه دور صادر شده و گزینهها را مشخص میکند.
/etc/fstab : این یک فایل ویژه است که حاوی اطلاعاتی در مورد تمام نقاط اتصال موجود و گزینه های Mount Point است. هر خط در این فایل شش گزینه را ارائه میدهد که هر کدام نشان دهنده اطلاعاتی در مورد یک نقطه اتصال یا فایل سیستم است.
/etc/hosts: این یک فایل پیکربندی است که نام hosts سیستم را به آدرس های IP مربوطه نگاشت میکند.
/etc/hosts.allow : فایل مشخص میکند که کدام میزبانها مجاز به اتصال به سیستم بومی هستند.
/etc/host.deny : فایل مشخص میکند که کدام host ها از دسترسی و خدمات محروم هستند.
/etc/issue: حاوی یک پیام قبل از ورود به سیستم است.
/etc/modules: این فایل شامل نام ماژولهای هسته است که باید در زمان بوت بارگذاری شوند، یک عدد در هر خط.
/etc/motd motd : مخفف یک پیام روز است ، پیامی که کاربران پس از ورود دریافت میکنند.
/etc/mtab: یک فایل فقط خواندنی که حاوی لیستی از سیستمهای فایل نصب شده در حال حاضر است.
/etc/passwd: فایلی که حاوی اطلاعات کاربر سیستم مانند نام کاربری، UID، GID و پوسته ورود به سیستم است.
/etc/printcap: حاوی اطلاعات چاپگر است که توسط فایل /etc/cups/printers.conf تولید میشود.
/etc/profile: حاوی محیط گسترده سیستم لینوکس و سایر اسکریپتهای راه اندازی است.
/etc/profile.d : اسکریپت برنامه، پس از ورود به سیستم اجرا میشود .
/etc/rc.d : اطلاعات مربوط به اسکریپت خاص سطح اجرا .
/etc/rc.d/init.d : اسکریپت Initialisation سطح را اجرا کنید .
/etc/resolv.conf : این یک فایل Resolver DNS است. مشخص میکند که چگونه سیستم از DNS برای حل نام هاست استفاده میکند.
/etc/security : حاوی فایل های پیکربندی برای ماژول های مختلف PAM است.
/etc/skel: این دایرکتوری حاوی مجموعهای از فایلهای پیکربندی کاربر است که هنگام ایجاد کاربر در دایرکتوری اصلی کاربر کپی میشوند.
/etc/X11: این دایرکتوری حاوی فایلهای پیکربندی برای سیستم X-window است.
/usr/bin: قابل اجرا توسط کاربر.
/usr/bin/X11: این دایرکتوری شامل دایرکتوریها و باینریهای تودرتو بینهایت برای سیستم X Windows است.
/usr/include : دایرکتوری حاوی فایلهای هدر برای کامپایلرهای C است. این شامل stdio.h، stdlib.h، و string.h در میان دیگران است.
/usr/share: دایرکتوریهای مشترک فایلهای man ، فایلهای اطلاعاتی و غیره.
/usr/lib: این دایرکتوری از فایلهای شی و دایرکتوریها تشکیل شده است
/usr/sbin: دایرکتوری حاوی فایلهای باینری با امتیازات superuser یا برای مدیریت سیستم است.
/proc/cpuinfo: فایل حاوی اطلاعات سیستم از جمله مدل CPU، نام مدل، تعداد هستهها و سرعت ساعت برای ذکر چند فایل است.
/proc/interrupts : اطلاعات مربوط به وقفههای فعلی در حال حاضر استفاده میشوند.
/proc/ioports : فایل حاوی تمام آدرسهای ورودی/خروجی مورد استفاده دستگاههای روی سرور است.
/proc/meminfo : فایلی که اطلاعات استفاده از حافظه از جمله اطلاعات تعویض را ذخیره میکند.
/proc/modules : فایلی که تمام ماژولهای مورد استفاده هسته را دایرکتوری میکند
/proc/mount: فایل حاوی اطلاعات سیستم فایل نصب شده با جزئیات است.
/proc/stat: فایل حاوی اطلاعات دقیق در مورد سیستم و فعالیت هسته است.
/proc/swaps : فایل حاوی اطلاعاتی در مورد فایل swap است.
/proc/version : فایل حاوی اطلاعات نسخه لینوکس است.
/var/log/lastlog: یک فایل باینری که حاوی اطلاعاتی در مورد آخرین ورودهای موفق کاربر است.
/var/log/messages: فایل حاوی گزارشی از پیامهای تولید شده توسط دیمون syslog در هنگام بوت است.
/var/log/syslog: فایلی که حاوی لاگهای سیستم غیر بحرانی است.
/var/log/wtmp: فایلی که زمان ورود و مدت زمان ورود هر کاربر در سیستم را در حال حاضر دایرکتوری میکند.
سوالات متداول
1. چگونه میتوانیم به دایرکتوری اصلی (/) دسترسی پیدا کنیم؟
برای دسترسی به دایرکتوری اصلی (/)، میتوانید از دستور cd استفاده کنید. برای این کار، میتوانید دستور زیر را در ترمینال وارد کنید: ``` cd / `` این دستور، شما را به دایرکتوری اصلی سیستم لینوکس منتقل میکند. همچنین، شما میتوانید از نرمافزار مدیریت فایلهای گرافیکی مانند Nautilus یا Thunar نیز برای دسترسی به دایرکتوری اصلی استفاده کنید.
2. ساختار دایرکتوری در سیستم عامل چیست؟
ساختار دایرکتوری سازماندهی فایلها در سلسله مراتبی از پوشهها است. باید پایدار و مقیاس پذیر باشد، نباید اساساً تغییر کند و فقط باید به آن اضافه شود.
3. چرا به ساختار دایرکتوری نیاز داریم؟
ساختار دایرکتوری کارمندان را راهنمایی میکند تا فایلها را در داخل ساختار دایرکتوری در مکان مناسب، دوباره با اطمینان ذخیره کنند.