پرش به محتوا

لینوکس مقدماتی/ساختار و محتوای دایرکتوری‌های لینوکس

اکنون در

ساختار و محتوای دایرکتوری‌های لینوکس

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

دایرکتوری /

[ویرایش]

تمام دیرکتوری‌های مهم مربوط به لینوکس درون (زیر) دایرکتوری / که به دایرکتوری ریشه یا root directory معروف است، قرار دارند.

دایرکتوری /bin و /usr/bin و /sbin

[ویرایش]

این دایرکتوری حاوی فایل‌های باینری(برنامه‌) ضروری است. برنامه‌هایی مانند فایرفاکس در /usr/bin حضور دارند در حالی که برنامه‌های مهمِ سیستمی مانند برنامهٔ پوستهٔ bash در دایرکتوری /bin حضور دارند.

دایرکتوری /usr را می‌توان روی یک پارتیشن دیگر(پارتیشن جدا از سایر دیرکتوری‌ها) نصب کرد.

دایرکتوری /sbin حاوی فایل‌های باینری(برنامه‌های) ضروری برای مدیریت سیستم است.

دایرکتوری /boot

[ویرایش]

دایرکتوری /boot حاوی فایل‌هایی است که برای راه‌اندازی سیستم (boot کردن سیستم) نیاز است. برای مثال فایل‌های boot loader یا بارگذار راه‌انداز GRUB و همینطور هسته یا همان kernel لینوکس در این دایرکتوری ذخیره می‌شود.(شایان ذکر است که فایل‌های تنظیمات GRU‌B در این دایرکتوری نیستند بلکه در دایرکتوری /etc قرار دارند که همینطور که بعدا توضیح داده خواهد شد دایرکتوری ای است که وظیفهٔ نگه‌داری فایل‌های تنظیمات را بر عهده دارد)

دایرکتوری /dev

[ویرایش]

لینوکس دستگاه‌های جانبی و غیر جانبی را به صورت فایل در نظر می‌گیرد و نمایش میدهد(یعنی به ازای هر دستگاه یک فایل معادل آن در نظر می‌گیرد) و دایرکتوری /dev حاوی تعدادی فایل‌های ویژه یا special file یا فایل دستگاهی می‌باشد که این فایل‌ها در حقیقت نمایندهٔ دستگاه‌ها هستند یعنی لینوکس هر دستگاه را با فایلی در نظر میگیرد و اطلاعات مربوط به آن دستگاه را در فایل مربوط به آن ذخیره می‌کند. در حقیقت یک فایل‌ دستگاهی مربوط به یک دستگاه رابطی (interface) است برای درایوری که با آن دستگاه کار می‌کند.

در حقیقت فایل‌های دستگاهی فایل‌ به معنایی که ما با آن آشناییم نیستند اما این فایل‌ها به صورت فایل‌های معمولی نمایش داده می‌شوند به عنوان مثال /dev/sda مربوط به اولین درایو SATA در سیستم است. اگر بخواهیم این درایو را پارتیشن بندی کنیم، می‌توانیم برای یک برنامهٔ پارتیشن‌بندی فایل /dev/sda را مشخص کنیم تا پارتیشن بندی را آغاز کند.

این دایرکتوری علاوه بر فایل دستگاهی حاوی شبه دستگاه‌‌ها نیز می‌باشد. شبه دستگاه‌ها، دستگاه‌هایی مجازی هستند که به ازای آن‌ها سخت‌افزاری وجود ندارد. به عنوان مثال /dev/random اعداد تصادقی تولید می‌کند. /dev/null یک دستگاه مجازی است که خروجی‌ای ندارد و ورودی‌هایی که به آن داده می‌شود را در نظر نمی‌گیرد و دور می‌اندازد(یکی از استفاده‌های آن این است که زمانی که میخواییم یک خروجی نمایش داده نشود یعنی میخواهیم خروجی دور ریخته شود(مثلا پیام error یا خطایی که رخ می‌دهد) می‌توانیم آن را به این دایرکتوری پایپ کنیم مثلا:echo "we are here" | /dev/null )

دایرکتوری /etc

[ویرایش]

این دایرکتوری حاوی فایل‌های تنظیمات است، این فایل‌ها متنی هستند و می‌توان آن‌ها را با یک برنامهٔ ویرایشگر متن(مثلا nano یا pico یا vi یا vim یا gedit) ویرایش کرد و به این ترتیب تنظیمات را تغییر داد. دایرکتوری /etc/ حاوی فایل‌های تنظیمات سراسری سیستم می‌باشد. فایل‌های تنظیمات مربوط به هر کاربر درون دایرکتوری خانهٔ همان کاربر قرار دارد.

در این دایرکتوری فایل‌های تنظیمات برای دیمِن‌هایی مانند وب سرور آپاچی و دیتابیس سرور مای اس کیو ال وجود دارد.

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

فایل‌های تنظیمات شخصی که در دایرکتوری خانهٔ‌ هر کاربر وجود دارد تنظیمات سیستمی را که در دایرکتوری /etc وجود دارند را override می‌کنند.

فایل‌های(و دیرکتوری‌های) تنظیمات شخصی کاربر که در دایرکتوری خانهٔ هر کاربر وجود دارد مخفی هستند یعنی نام آن‌ها با کاراکتر . (نقطه) شروع می‌شود. مانند

دایرکتوری .ssh

دایرکتوری /home

[ویرایش]

دایرکتوری /home یا دایرکتوری خانه حاوی یک دایرکتوری home بانام همان کاربر برای هر کاربر می‌باشد. مثلا اگر یک کاربر با نام کاربری sadegh داشته باشیم دایرکتوری خانهٔ‌ کاربر در این آدرس قرار دارد /home/sadegh این دایرکتوری حاوی فایل‌های مربوط به کاربر (مانند فیلم و عکس و ...) و فایل‌های تنظیمات مخصوص آن کاربر است. هر کاربر به طور پیشفرض فقط مجوز write را برای دایرکتوری خانهٔ خود را دارد و برای اینکه بتواند فایل‌های سیتمی را ویرایش کند باید تبدیل به کاربر root شود.

دایرکتوری /lib و /usr/lib

[ویرایش]

این دایرکتوری حاوی فایل‌های کتابخانه‌ای اشتراکی(shared libraries) ضروری است که فایل‌های باینری(برنامه‌ها) ضروری در دیرکتوری‌های /bin و /sbin به آن‌ها نیاز دارند و از آن‌ها استفاده می‌کنند.

کتابخانه‌هایی که برنامه‌های درون دایرکتوری /usr/bin به آن‌ها نیاز دارند درون /usr/lib قرار دارند و کتابخانه‌هایی که برنامه‌های درون /bin به آن‌ها نیاز دارند در /lib وجود دارند.

فایدهٔ این دایرکتوری و کتابخانه‌های اشتراکی(shared libraries):

فرض کنید که دو برنامه داریم از یک کتابخانه استفاده می‌کنند به جای اینکه هر کدام از این دو برنامه آن کتابخانه‌ را به خود اضافه کنند، آن دو برنامه می‌توانند این کتابخانه را از /lib یا /usr/lib صدا بزنند و از آن استفاده کنند.

دایرکتوری /media

[ویرایش]

این دایرکتوری حاوی زیر دیرکتوری‌هایی است که مربوط به رسانه‌های جداشدنی(قابل حمل) یا به عبارتی Removable media است که به رایانه وصل شده‌اند(مثلا فلش یا هارد اکسترنال یا دیسک سی دی...) برای مثال وقتی که یک سی دی را در سی دی رام قرار می‌دهیم به صورت خودکار یک دایرکتوری در دایرکتوری /media ساخته می‌شود و برای دیدن محتوای سی دی باید وارد این دایرکتوری شویم. با خارج کردن سی دی این دایرکتوری از بین می‌رود.

دایرکتوری /proc

[ویرایش]

این دایرکتوری مشابه دایرکتوری /dev مباشد چرا که مانند دایرکتوری /dev حاوی فایل‌های استاندارد نیست. بلکه حاوی فایل‌های دستگاهی است که شامل اطلاعاتی در بارهٔ فرآیند‌ها و سیستم می‌باشند.

دایرکتوری /root

[ویرایش]

این دیرکتوری، دایرکتوری خانهٔ کاربر root محسوب میشود. به جای اینکه مکان این دایرکتوری /home/root باشد، /root‌ است.

دایرکتوری /sbin -فایل‌های باینری مربوط به مدیریت سیستم

[ویرایش]

این دایرکتوری مشابه دایرکتوری /bin است. شامل فایل‌های باینری(برنامه‌هایی) است که کاربر root از آن‌ها برای مدیریت سیستم استفاده می‌کند.

دایرکتوری /tmp

[ویرایش]

برنامه‌ها فایل‌های موقتی خود را در این دایرکتوری ذخیره می‌کنند. معمولا این فایل‌ها زمانی که سیستم ریستارت یا (همان بازراه‌اندازی) می‌شوند پاک می‌شوند.

دایرکتوری /usr

[ویرایش]

این دایرکتوری حاوی برنامه‌ها و فایل‌هایی است که کاربران با آن‌ها کار می‌کنند(نه برنامه‌ها و فایل‌های مربوط به سیستم) . برای مثلا برنامه‌های غیر ضروری در دایرکتوری /usr/bin حضور دارند(نه در /bin) و باینری‌های غیر ضروری سیستمی نیز در /usr/sbin حضور دارند(نه /sbin). کتابخانه‌های اشتراکی برای فایل‌های باینری مذکور در /usr/lib واقع شده‌اند.

دایرکتوری /var

[ویرایش]

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

دایرکتوری /var/log

[ویرایش]

این دایرکتوری حاوی فایل‌های لاگ و زیر دیرکتوری‌هایی که حاوی فایل‌های لاگ می‌باشند است. این فایل‌های لاگ مربوط به دیمِن‌هایی هستند که روی سیستم وجود دارند. مثلا فایل‌های لاگی که برای دیمِن apache یا mysql روی سیستم وجود دارد. فایل‌های لاگ بعضی از دیمِن‌ها مانند samba یا apt درون دایرکتوری مخصوص آن‌ها قرار دارد مثلا: /var/log/samba/ یا /var/log/apt/ از این فایل‌های لاگ می‌توان برای عیب یابی سیستم استفاده کرد.

نکته: فایل syslog به آدرس /var/log/syslog فایلی است که برنامه‌هایی که فایل‌ لاگ به صورت مجزا ندارند اطلاعات لاگ خود را درون این فایل می‌ریزند. به عنوان مثال NetworkManager یک دیمِن است در اوبونتو که فایل لاگ مجزا ندارد و لاگ خود را در syslog می‌ریزد.

انواع لاگ:

syslog
[ویرایش]

syslog یک برنامه است که وظیفهٔ مدیریت و ذخیره فایل‌های لاگ برای دیمِن‌ها را بر عهده دارد. برنامه‌ها و دیمِن‌هایی که روی سیستم اجرا می‌شوند از برنامهٔ syslog برای مدیریت و ذخیرهٔ لاگ‌هایشان استفاده می‌کنند مانند برنامهٔ آپاچی

به طور کلی هر برنامه‌ای که روی سیستم اجرا می‌شود و لاگ‌های خود را ذخیره می‌کند از برنامهٔ syslog برای ذخیرهٔ آن‌ها به صورت سازمان‌یافته و منسجم استفاده می‌کند.

نکته: syslog برای ذخیرهٔ لاگ‌های هستهٔ لینوکس(کرنل) استفاده نمی‌شود.

klog برنامه‌ای است که لاگ‌های مربوط به کرنل را ذخیره می‌کند. مثلا وقتی یک دستگاه جانبی مانند درایو فلش را به رایانه وصل می‌کنیم. در لاگ کرنل پیامی درج می‌شود.

نکته: برای مشادهٔ لاگ‌های مربوط به کرنل از دستور زیر استفاده می‌کنیم:

dmseg

برای اینکه بهتر بتوانیم محتویات لاگ کرنل را ببینیم:

less dmseg