Find system files and place files in the correct location
هدف درس¶
در این درس با استاندارد ساختار فایلها (FHS) و روشهای یافتن فایلها و دستورات در سیستم لینوکس آشنا میشویم؛ همچنین مکانهای معمول فایلها و دایرکتوریهای مهم را بررسی خواهیم کرد.
دانش مورد نیاز¶
- آشنایی با FHS
- استفاده از ابزارهای:
find,locate,updatedb,whereis,which,type
ساختار سلسلهمراتبی فایلها (FHS)¶
FHS سندی است که محل مناسب قرارگیری فایلها و دایرکتوریها را تعیین میکند. این شناخت به مدیر سیستم کمک میکند تا فایلها را در محلهای درست قرار دهد و سریعتر آنها را پیدا کند.
نمونهای از دایرکتوریهای مهم:
/: ریشهٔ فایلسیستم/bin: فایلهای اجرایی ضروری/boot: فایلهای ایستا بوتلودر/dev: فایلهای دستگاه/etc: تنظیمات مخصوص میزبان/lib: کتابخانههای اشتراکی ضروری/media: محل مونتکردن رسانههای قابلحمل/mnt: محل موقت برای مونتها/opt: بستههای نرمافزاری الحاقی/sbin: باینریهای سیستمی ضروری/srv: دادههای سرویسهای ارائهشده توسط سیستم/tmp: فایلهای موقت/usr: سلسلهمراتب ثانویه (قابل به اشتراکگذاری و فقط خواندنی)/var: دادههای متغیر (لاگها، spoolها، کشها)/home: دایرکتوریهای خانگی کاربران
نکته:
/usrمعمولاً شامل دادههای اشتراکی و قابل خواندن است؛/varشامل فایلهایی است که تغییر میکنند (لاگ، اسپول، ...).
مسیر جستجوی فرمانها (PATH)¶
شل با متغیر محیطی PATH دنبال باینریها میگردد:
میتوانید با export PATH=$PATH:/your/new/dir مسیر را موقتاً تغییر دهید یا در ~/.bashrc برای ماندگاری اضافه کنید.
ابزارهای یافتن فایلها و دستورات¶
which— نشان میدهد کدام فایل اجرایی درPATHاجرا خواهد شد:
type— عمومیتر ازwhichاست و میگوید یک نام، builtin یا keyword شل است یا باینری:
whereis— مکان باینری، صفحات manual و سورس (در صورت وجود) را نمایش میدهد:
find— جستجوی زنده در درخت فایل؛ بسیار انعطافپذیر:
find /tmp -maxdepth 1 -user jadi
find . ! -user jadi # فایلهایی که متعلق به کاربر jadi نیستند
find /etc -iname '*vmware*'
locateوupdatedb— سریعتر ازfindچون از پایگاه داده استفاده میکنند. پایگاه داده باupdatedb(یا بهصورت خودکار توسط daemon/cron) بهروز میشود:
locate networking
sudo updatedb # بروزرسانی دیتابیس locate (نیاز به دسترسی روت)
cat /etc/updatedb.conf # تنظیمات حذف مسیرها/نوع FS از ایندکس
هشدار:
updatedbمعمولاً به طور زمانبندیشده اجرا میشود؛ اجرای دستی آن در سیستمهای با I/O حساس ممکن است بار زیادی بر دیسک وارد کند؛ فقط در صورت نیاز و با آگاهی اجرا کنید.
مثالها و نکات عملی¶
- با
which -aمیتوانید بفهمید چند نسخه از یک ابزار در سیستم وجود دارد. - اگر
whichچیزی نشان نداد اماtypeبگوید builtin است، معمولاً نیازی به فایل اجرایی مجزا نیست. locateفوقالعاده سریع است اما ممکن است جدیدترین تغییرات را نشان ندهد تا زمانی کهupdatedbاجرا شود.
چکلیست (قبل از تغییر یا نصب فایلها)¶
- آیا مکان انتخابشده مطابق FHS است؟
- آیا فایل باید در
/usr(قابلاشتراک/خواندنی) باشد یا در/optیا/srv؟ - آیا نیاز است که PATH برای کاربران اضافه شود؟ مکان آن و مستندسازی را مشخص کنید.
- آیا مالکیت/اجازههای فایل مناسب تنظیم شده است؟ (با
chown/chmod)
تمرینها¶
- با
which -aوtypeتفاوت بینpingموجود در/usr/binو/binرا بیابید. - با
findتمام فایلهای/tmpکه متعلق به شما هستند را لیست کنید. locateرا برای رشتهای اجرا کنید که قبلاً تغییر کرده — سپسupdatedbرا اجرا و نتیجه را دوباره بررسی کنید.
نکات کلیدی برای آزمون
- بدانید FHS چه دایرکتوریهایی را برای چه مصارفی توصیه میکند (مثلاً
/etcبرای پیکربندی،/varبرای دادههای متغیر). - تفاوت
which،typeوwhereisرا تشخیص دهید. - بدانید
findجستجوی زنده انجام میدهد وlocateاز دیتابیس استفاده میکند؛ وupdatedbدیتابیس را بهروز میکند.