پنجشنبه, ۱۱ بهمن, ۱۴۰۳ / 30 January, 2025
آشنایی با procfs
procfs یک سیستم فایل مجازی است کــه در شاخه proc/ متصل شده و امکان دسترسی به اطلاعات هسته را فراهم میسازد. این یکی از ویژگیهای لینوکس اسـت که دسترسی به اطلاعات هسته و پردازشها را در قالب متنی فراهــم میسازد. بسیاری از دستورات خط فرمــان مــانند ps، top، pstree اطلاعات خود را این فایل سیستم استخراج میکنند. نکته قابل توجه این است که این مــقاله بــرای هستههای سری ۲.۶ لینوکس نوشته شده و ممکن است برخی از موارد ذکر شده در آن در سری ۲.۴ موجود نباشد.
● فایل سیستم مجازی
فایلهای و دایرکتوریهای موجود در شاخه proc/ مجازی هستند زیرا اطلاعات موجود در آنها در ابزارهای ذخیره سازی دائمی مانند دیسکهای سخت ذخیره نمیشوند، در مقابل تماما در حافظه RAM قرار میگیرند.
● اتصال proc
برای دیدن اینکه آیا فایل سیستم proc هم اکنون بــر روی سیستم شما متــصل میباشد یا خیر میتوانید از دستورات mount یا grep proc /etc/mtab استفاده کنید. در صورتی که کتصل نیست از دســتور mount بـــرای اتصال آن اسـتفاده کنید:
# mount -t proc proc /proc
● اطلاعات پروسهها
هـــر پروسه یــک ورودی در شاخه proc/ دارد که با شماره PID آن مشخص میشوند.
▪ برخی از فایلهای مهم موجود در این فایل سیستم عبارتند از:
- pid/cmdline:
شماره پروسه/فرمان که فرمانی است که پروسه خاصی بواسطه آن اجرا شده است.
- pid/cwd:
حاوی لینکی به شاخه فعلی پروسه در حال اجراست.
- pid/environ:
حاوی لیستی از متغییرهای محیطی پروسه است.
- pid/exe:
حاوی لینکی به برنامهای است که پروسه را اجرا کرده است.
- /pid/fd:
حاوی لینکهایی به تمامی فایلهایی است که یک پروسه در حال حاضر آنها را باز کرده است.
- pid/mem:
حاوی محتویات حافظه اشغالی توسط پروسه است.
- pid/stat:
حاوی اطلاعات وضعیت پروسه است.
- pid/statm:
حاوی اطلاعات مصرف حافظه پروسه است.
▪ چند مثال برای دریافت اطلاعات پروسهها
۱) برای پیدا کردن فایلهای ورودی استفاده شده توسط یک پروسه خاص از دستور زیر استفاده کنید:
$ ls -l /proc/[pid]/fd/۰
توجه داشته باشید که بجای [pid] باید شماره پروسه مورد نظرتان را وارد کنید.
۲) برای پیدا کردن سوکتهای مورد استفاده توسط یک پروسه دستور زیر را وارد کنید:
# ls -l /proc/[pid]/fd|sed -n /socket/{s/.*[//;s/]//p}#
اطلاعات مربوط به این سوکتها را میتوانید با استفاده از دستور netstat -ae بدست آورید. ۳) برای دریافت آرگومانهای خط فرمان ارسال شده به یک پروسه دستور زیر را وارد کنید:
$ cat /proc/[pid]/cmdline
۴) برای دریافت پروسه والد یک پروسه از دستور زیر استفاده کنید:
$ grep PPid /proc/[pid]/status
● اطلاعات عمومی سیستم
فایل سیستم procfs حـاوی مقدار زیادی اطلاعات در مورد سیستم است. مانند بار پردازشگر، پیکربندی فایل سیستمها و شبکه و... در زیر مثالهایی برای دریافت این اطلاعات و تغییر آنها ارائه شده است.
۱) برای دریافت میزان حافظه آزاد سیستم از دستور زیر استفاده کنید:
$ grep Free /proc/meminfo
۲) اطلاعات آمــاری سیستم از زمــان آخرین راهانــدازی در فایـــل proc/stst/ قـــرار دارند. بــرای دیدن تعداد پروسهای که سیستم از زمان آخرین بوت داشته است، از دستور زیر استفاده کنید:
$ grep processes /proc/stat
۳) برای دیدن میزان بار سیستم در ۱، ۵ و ۱۵ دقیقه گذشته دستور زیر را وارد کنید:
$ awk ۰۳۹;{print "۱ min: " $۱ "
۵ min: " $۲ "
۱۵ min: " $۳ }# /proc/loadavg
۴) اطلاعات پارتیشنهای سیستم در فایل proc/partitions/ قرار دارد.
$ cat /proc/partition
۵) فایلهای proc/net/ و proc/sys/net/ را میتوانید برای نمایش و یـــا تغییر اطــلاعات مــهم شبکه استفاده کنید. برای مثال برای غیر فعال کردن ping دستور زیر را در حالت ریشه وارد کنید:
# echo ۱ > /proc/sys/net/ipv۴/icmp_echo_ignore_all
یا برای فعال کردن IP Forwarding و IP Masquerading دستور زیر را در حالت کاربر ریشه وارد کنید:
#echo ۱ > /proc/sys/net/ipv۴/ip_forward
۶) فایل سیستمهای متصل به سیستم را میتوانید از proc/mounts بدست آورید:
/proc/mounts
۷) برای تغییر بلادرنگ نام میزبان، دستور زیر را وارد کنید:
#echo memphis > /proc/sys/kernel/hostname
۸) برای دریافت اطلاعات CPU کامپیوتر، دستور زیر را وارد کنید:
/proc/cpuinfo
۹) برای دیدن مقدار فضای مصرف شده Swap از دستور زیر استفاده کنید:
/proc/swaps
۱۰) برای دیدن مدت زمانی که سیستم در حال اجراست، پس از آخرین بوت:
/proc/uptime
۱۱) برای نمایش منابع به اشتراک گذاشته شده به واسطه NFS:
/proc/fs/nfsd/exports
● مقداری اطلاعات از هسته
۱)برای نمایش شماره نسخه هستهای که در حال اجراست:
/proc/version
۲) فایل proc/kmsg/ توسط دایمن klogd برای منبع اطلاعات ثبتی استفاده میشود.
۳) فایل proc/kcore/ دسترسی به حافظه فیزیکی سیستم را فــراهــم میسازد. آنرا میتوانید با استفاده از gdb برای بررسی وضعیت ساختار هریک از دادههای موجود در هسته استفاده کنید.
● برای اطلاعات دقیقتر میتوانید نگاهی به فایل usr/src/linux/Documentation/filesystems/proc.txt/بیاندازید. البته بـه شرطی که کد منبع هسته بر روی سیستمتان نصب باشد.
ایران مسعود پزشکیان دولت چهاردهم پزشکیان مجلس شورای اسلامی محمدرضا عارف دولت مجلس کابینه دولت چهاردهم اسماعیل هنیه کابینه پزشکیان محمدجواد ظریف
پیاده روی اربعین تهران عراق پلیس تصادف هواشناسی شهرداری تهران سرقت بازنشستگان قتل آموزش و پرورش دستگیری
ایران خودرو خودرو وام قیمت طلا قیمت دلار قیمت خودرو بانک مرکزی برق بازار خودرو بورس بازار سرمایه قیمت سکه
میراث فرهنگی میدان آزادی سینما رهبر انقلاب بیتا فرهی وزارت فرهنگ و ارشاد اسلامی سینمای ایران تلویزیون کتاب تئاتر موسیقی
وزارت علوم تحقیقات و فناوری آزمون
رژیم صهیونیستی غزه روسیه حماس آمریکا فلسطین جنگ غزه اوکراین حزب الله لبنان دونالد ترامپ طوفان الاقصی ترکیه
پرسپولیس فوتبال ذوب آهن لیگ برتر استقلال لیگ برتر ایران المپیک المپیک 2024 پاریس رئال مادرید لیگ برتر فوتبال ایران مهدی تاج باشگاه پرسپولیس
هوش مصنوعی فناوری سامسونگ ایلان ماسک گوگل تلگرام گوشی ستار هاشمی مریخ روزنامه
فشار خون آلزایمر رژیم غذایی مغز دیابت چاقی افسردگی سلامت پوست