آشنایی با procfs(764 مجموع کلمات موجود در متن) (7313 بار مطالعه شده است) آشنایی
با procfs
procfs یک
سیستم فایل مجازی است کــه در شاخه proc/
متصل
شده و امکان دسترسی به اطلاعات هسته را
فراهم میسازد.
این
یکی از ویژگیهای لینوکس اسـت که دسترسی
به اطلاعات هسته و پردازشها را در قالب
متنی فراهــم میسازد.
بسیاری
از دستورات خط فرمــان مــانند ps،
top،
pstree اطلاعات
خود را این فایل سیستم استخراج میکنند.
نکته
قابل توجه این است که این مــقاله بــرای
هستههای سری 2.6
لینوکس
نوشته شده و ممکن است برخی از موارد ذکر
شده در آن در سری 2.4
موجود
نباشد.
فایل سیستم
مجازی فایلهای
و دایرکتوریهای موجود در شاخه 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/0
توجه داشته
باشید که بجای [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 "1 min:\t" $1 "\n5 min:\t" $2 "\n15 min:\t" $3 }' /proc/loadavg
۴) اطلاعات پارتیشنهای سیستم در فایل proc/partitions/ قرار دارد.
$ cat /proc/partition
۵) فایلهای proc/net/ و proc/sys/net/ را میتوانید برای نمایش و یـــا تغییر اطــلاعات مــهم شبکه استفاده کنید.
برای مثال برای غیر فعال کردن ping دستور زیر را در حالت ریشه وارد کنید:
# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
یا برای فعال کردن IP Forwarding و IP Masquerading دستور زیر را در حالت کاربر ریشه وارد کنید:
#echo 1 > /proc/sys/net/ipv4/ip_forward
۶) فایل سیستمهای متصل به سیستم را میتوانید از proc/mounts بدست آورید:
$cat /proc/mounts
۷) برای تغییر بلادرنگ نام میزبان، دستور زیر را وارد کنید:
#echo memphis > /proc/sys/kernel/hostname
۸) برای دریافت اطلاعات CPU کامپیوتر، دستور زیر را وارد کنید:
$cat /proc/cpuinfo
۹) برای دیدن مقدار فضای مصرف شده Swap از دستور زیر استفاده کنید:
$cat /proc/swaps
۱۰) برای دیدن مدت زمانی که سیستم در حال اجراست، پس از آخرین بوت:
$cat /proc/uptime
۱۱) برای نمایش منابع به اشتراک گذاشته شده به واسطه NFS:
$cat /proc/fs/nfsd/exports
مقداری اطلاعات از هسته
۱)برای نمایش شماره نسخه هستهای که در حال اجراست:
$cat /proc/version
۲) فایل proc/kmsg/ توسط دایمن klogd برای منبع اطلاعات ثبتی استفاده میشود.
۳) فایل proc/kcore/ دسترسی به حافظه فیزیکی سیستم را فــراهــم میسازد.
آنرا میتوانید با استفاده از gdb برای بررسی وضعیت ساختار هریک از دادههای موجود در هسته استفاده کنید.
برای اطلاعات دقیقتر میتوانید نگاهی به فایل usr/src/linux/Documentation/filesystems/proc.txt/بیاندازید.
البته بـه شرطی که کد منبع هسته بر روی سیستمتان نصب باشد.
PDF Version
مترجم:آلن باغومیان alan@technoux.org
منبع: http://linuxgazette.net/115/nirendra.html |