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

ویکی‎کتاب، کتابخانهٔ آزاد

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

دیرکتوری /[ویرایش]

تمام دیرکتوری‌های مهم مربوط به لینوکس درون (زیر) دیرکتوری / که به دیرکتوری ریشه یا 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[ویرایش]

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

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

dmseg

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

less dmseg