/proc/pid/stat -
اطلاعات
وضعیت
فرایند
- /proc/pid/stat
- اطلاعات
وضعیت
درباره
فرایند. این
فایل توسط
ps(1) استفاده
میشود. این
اطلاعات در
پروندهٔ
منبع هسته
به نشانی
fs/proc/array.c تعریف
شده است.
- فیلدها به
ترتیب به
همراه
مشخصکنندههای
قالب
متناظر در
scanf(3) در ادامه
فهرست
شدهاند.
اینکه آیا
برخی از این
فیلدها
اطلاعات
معتبری را
نشان
میدهند یا
نه، تحت
نظارت
بررسی حالت
دسترسی ptrace به
صورت PTRACE_MODE_READ_FSCREDS |
PTRACE_MODE_NOAUDIT است (به
ptrace(2) مراجعه
کنید). اگر
این بررسی
دسترسی را
رد کند،
مقدار فیلد
به صورت 0
نمایش داده
میشود.
فیلدهای
تحت تأثیر
با علامت [PT]
مشخص
شدهاند.
- (1) pid %d
-
شناسهٔ
فرایند (PID).
- (2) comm %s
- نام فایل
اجرایی،
درون
پرانتز.
رشتههای
طولانیتر
از TASK_COMM_LEN (16)
نویسه (شامل
بایت تهی
پایانی null)
بدون اخطار
بریده و
کوتاه
میشوند.
این مقدار
صرفنظر از
اینکه فایل
اجرایی به
حافظه
مبادله (swap)
منتقل شده
باشد یا نه،
قابل
مشاهده
است.
- (3) state %c
- یکی از
نویسههای
زیر که
بیانگر
وضعیت
فرایند
است:
- R
- در حال اجرا
(Running)
- S
- خواب در
انتظار
وقفهپذیر
(Sleeping in an interruptible wait)
- D
- در انتظار
خواب دیسک
وقفهناپذیر
(Waiting in uninterruptible disk sleep)
- Z
- زامبی (Zombie)
- T
- متوقفشده
(با یک
سیگنال) یا
(پیش از
لینوکس 2.6.33)
توقف برای
ردگیری (trace stopped)
- t
- توقف
ردگیری (از
لینوکس 2.6.33 به
بعد)
- W
- صفحهبندی
(فقط پیش از
لینوکس 2.6.0)
- X
- مرده (از
لینوکس 2.6.0 به
بعد)
- x
- مرده (فقط
لینوکس 2.6.33 تا
3.13)
- K
- کشتهشدن
با بیداری
(Wakekill) (فقط
لینوکس 2.6.33 تا
3.13)
- W
- در حال
بیدار شدن (Waking)
(فقط لینوکس
2.6.33 تا 3.13)
- P
- پارکشده (Parked)
(فقط لینوکس
3.9 تا 3.13)
- I
- بیکار (Idle) (از
لینوکس 4.14 به
بعد)
- (4) ppid %d
- شناسه
فرایند
والد (PID
والد).
- (5) pgrp %d
- شناسه گروه
فرایند (Process group ID).
- (6) session %d
- شناسه نشست
فرایند (Session ID).
- (7) tty_nr %d
- ترمینال
کنترلی
فرایند.
(شماره
دستگاه
فرعی در
ترکیب
بیتهای 31
تا 20 و 7 تا 0
قرار دارد؛
شماره
دستگاه
اصلی در
بیتهای 15
تا 8 قرار
دارد.)
- (8) tpgid %d
- شناسه گروه
فرایند
پیشزمینه
مربوط به
ترمینال
کنترلی
فرایند.
- (9) flags %u
- کلمه
پرچمهای
هسته برای
فرایند.
برای معنی
بیتها،
تعاریف PF_* را
در پرونده
منبع هسته
لینوکس به
نشانی include/linux/sched.h
ببینید.
جزئیات به
نسخه هسته
بستگی
دارد.
- قالب این
فیلد پیش از
لینوکس 2.6 به
صورت %lu بود.
- (10) minflt %lu
- تعداد
خطاهای
جزئی صفحه (minor
faults) که فرایند
ایجاد کرده
و نیازی به
بارگذاری
یک صفحه
حافظه از
دیسک
نداشتهاند.
- (11) cminflt %lu
- تعداد
خطاهای
جزئی صفحه
که
فرایندهای
فرزندِ
منتظرشدهٔ
این فرایند
ایجاد
کردهاند.
- (12) majflt %lu
- تعداد
خطاهای
عمده صفحه (major
faults) که فرایند
ایجاد کرده
و نیازمند
بارگذاری
صفحه حافظه
از دیسک
بودهاند.
- (13) cmajflt %lu
- تعداد
خطاهای
عمده صفحه
که
فرایندهای
فرزندِ
منتظرشدهٔ
این فرایند
ایجاد
کردهاند.
- (14) utime %lu
- میزان
زمانی که
این فرایند
در حالت
کاربر (user mode)
زمانبندی
شده است، بر
حسب
تیکهای
ساعت (تقسیم
بر sysconf(_SC_CLK_TCK)). این
شامل زمان
مهمان، guest_time
(زمان
صرفشده
برای اجرای
پردازنده
مجازی،
پایینتر
را ببینید)
نیز
میشود، تا
برنامههایی
که از فیلد
زمان مهمان
اطلاعی
ندارند،
این زمان را
در محاسبات
خود از دست
ندهند.
- (15) stime %lu
- میزان
زمانی که
این فرایند
در حالت
هسته (kernel mode)
زمانبندی
شده است، بر
حسب
تیکهای
ساعت (تقسیم
بر sysconf(_SC_CLK_TCK)).
- (16) cutime %ld
- میزان
زمانی که
فرایندهای
فرزندِ
منتظرشدهٔ
این فرایند
در حالت
کاربر
زمانبندی
شدهاند،
بر حسب
تیکهای
ساعت (تقسیم
بر sysconf(_SC_CLK_TCK)).
(همچنین
ببینید: times(2)).
این شامل
زمان
مهمان، cguest_time
(زمان
صرفشده
برای اجرای
پردازنده
مجازی،
پایینتر
را ببینید)
میشود.
- (17) cstime %ld
- میزان
زمانی که
فرایندهای
فرزندِ
منتظرشدهٔ
این فرایند
در حالت
هسته
زمانبندی
شدهاند،
بر حسب
تیکهای
ساعت (تقسیم
بر sysconf(_SC_CLK_TCK)).
- (18) priority %ld
- (توضیحات
برای
لینوکس 2.6)
برای
فرایندهایی
که تحت یک
خطمشی
زمانبندی
بلادرنگ (real-time)
اجرا
میشوند (policy
در ادامه؛
به sched_setscheduler(2)
مراجعه
کنید)، این
مقدار
برابر است
با اولویت
زمانبندی
منفیشده
منهای یک؛
یعنی عددی
در محدوده -2
تا -100،
متناظر با
اولویتهای
بلادرنگ 1
تا 99. برای
فرایندهایی
که تحت
خطمشی
زمانبندی
غیربلادرنگ
اجرا
میشوند،
این مقدار
برابر است
با مقدار
خام nice (setpriority(2))
همانطور
که در هسته
نمایش داده
میشود.
هسته
مقادیر nice را
به صورت
اعدادی در
محدوده 0
(بالا) تا 39
(پایین)
ذخیره
میکند که
متناظر با
محدوده nice
قابل
مشاهده
برای کاربر
از -20 تا 19 است.
- پیش از
لینوکس 2.6،
این مقدار
مقیاسشدهای
بر اساس وزن
زمانبندی
اختصاصدادهشده
به این
فرایند
بود.
- (19) nice %ld
- مقدار nice (به
setpriority(2) مراجعه
کنید)،
مقداری در
بازه 19
(اولویت
پایین) تا -20
(اولویت
بالا).
- (20) num_threads %ld
- تعداد
ریسهها در
این فرایند
(از لینوکس 2.6).
پیش از
لینوکس 2.6،
این فیلد به
عنوان یک
جانگهدار
برای فیلدی
که پیشتر
حذف شده
بود، به
صورت ثابت
روی 0 تنظیم
شده بود.
- (21) itrealvalue %ld
- مدتزمان
بر حسب jiffies پیش
از ارسال
سیگنال
بعدی SIGALRM به
فرایند در
اثر تایمر
بازهای (interval timer).
از لینوکس 2.6.17
به بعد، این
فیلد دیگر
نگهداری
نمیشود و
مقدار آن به
صورت ثابت 0
است.
- (22) starttime %llu
- زمانی که
فرایند پس
از بالا
آمدن سیستم
(boot) آغاز شده
است. پیش از
لینوکس 2.6،
این مقدار
بر حسب jiffies
بیان میشد.
از لینوکس 2.6
به بعد، این
مقدار بر
حسب
تیکهای
ساعت بیان
میشود
(تقسیم بر
sysconf(_SC_CLK_TCK)).
- قالب این
فیلد پیش از
لینوکس 2.6 به
صورت %lu بود.
- (23) vsize %lu
- اندازه
حافظه
مجازی بر
حسب بایت.
- (24) rss %ld
- اندازه
مجموعه
مقیم (Resident Set Size):
تعداد
صفحاتی که
فرایند در
حافظه
واقعی دارد.
این فقط
شامل
صفحاتی است
که به عنوان
فضای متن
(کد)، داده
یا پشته به
حساب
میآیند.
شامل
صفحاتی که
بر اساس
تقاضا
بارگذاری
نشدهاند
یا صفحاتی
که به حافظه
مبادله (swap)
رفتهاند
نمیشود.
این مقدار
دقیق نیست؛
به /proc/pid/statm در
ادامه
مراجعه
کنید.
- (25) rsslim %lu
- حد نرم
کنونی بر
حسب بایت
روی rss
فرایند؛
توضیحات RLIMIT_RSS
را در getrlimit(2)
ببینید.
- (26) startcode %lu [PT]
- نشانیای
که بالاتر
از آن کد
متن برنامه
میتواند
اجرا شود.
- (27) endcode %lu [PT]
- نشانیای
که
پایینتر
از آن کد
متن برنامه
میتواند
اجرا شود.
- (28) startstack%lu [PT]
- نشانی شروع
(یعنی ته یا
پایین)
پشته.
- (29) kstkesp %lu [PT]
- مقدار
کنونی ESP
(اشارهگر
پشته)،
همانطور
که در صفحه
پشته هسته
برای این
فرایند
یافت
میشود.
- (30) kstkeip %lu [PT]
- مقدار
کنونی EIP
(اشارهگر
دستورالعمل).
- (31) signal %lu
- نگاشت بیتی
سیگنالهای
معلق،
نمایشدادهشده
به صورت یک
عدد دهدهی.
منسوخ شده
است، زیرا
اطلاعاتی
در مورد
سیگنالهای
بلادرنگ
ارائه
نمیدهد؛
به جای آن
از /proc/pid/status
استفاده
کنید.
- (32) blocked %lu
- نگاشت بیتی
سیگنالهای
مسدودشده،
نمایشدادهشده
به صورت یک
عدد دهدهی.
منسوخ شده
است، زیرا
اطلاعاتی
در مورد
سیگنالهای
بلادرنگ
ارائه
نمیدهد؛
به جای آن
از /proc/pid/status
استفاده
کنید.
- (33) sigignore %lu
- نگاشت بیتی
سیگنالهای
نادیدهگرفتهشده،
نمایشدادهشده
به صورت یک
عدد دهدهی.
منسوخ شده
است، زیرا
اطلاعاتی
در مورد
سیگنالهای
بلادرنگ
ارائه
نمیدهد؛
به جای آن
از /proc/pid/status
استفاده
کنید.
- (34) sigcatch %lu
- نگاشت بیتی
سیگنالهای
دریافتشده
(گرفتهشده)،
نمایشدادهشده
به صورت یک
عدد دهدهی.
منسوخ شده
است، زیرا
اطلاعاتی
در مورد
سیگنالهای
بلادرنگ
ارائه
نمیدهد؛
به جای آن
از /proc/pid/status
استفاده
کنید.
- (35) wchan %lu [PT]
- این همان
«کانالی»
است که
فرایند در
آن منتظر
است. این
مقدار
نشانی
مکانی در
هسته است که
فرایند در
آن به خواب
رفته است.
نام نمادین
متناظر با
آن را
میتوان در
/proc/pid/wchan یافت.
- (36) nswap %lu
- تعداد
صفحات
تعویضشده
(swap) (نگهداری
نمیشود).
- (37) cnswap %lu
- مقدار
تجمعی nswap
برای
فرایندهای
فرزند
(نگهداری
نمیشود).
- (38) exit_signal %d (از
لینوکس 2.1.22)
- سیگنالی که
هنگام
پایان کار
فرایند
باید به
والد ارسال
شود.
- (39) processor %d (از
لینوکس 2.2.8)
- شماره
پردازندهای
که آخرین
بار روی آن
اجرا شده
است.
- (40) rt_priority %u (از
لینوکس 2.5.19)
- اولویت
زمانبندی
بلادرنگ،
عددی در
محدوده 1 تا 99
برای
فرایندهایی
که تحت یک
خطمشی
بلادرنگ
زمانبندی
شدهاند،
یا 0 برای
فرایندهای
غیربلادرنگ
(به sched_setscheduler(2)
مراجعه
کنید).
- (41) policy %u (از
لینوکس 2.5.19)
- خطمشی
زمانبندی
(به sched_setscheduler(2)
مراجعه
کنید). با
استفاده از
ثابتهای SCHED_*
در linux/sched.h
رمزگشایی
میشود.
- قالب این
فیلد پیش از
لینوکس 2.6.22 به
صورت %lu بود.
- (42) delayacct_blkio_ticks %llu (از
لینوکس 2.6.18)
- تاخیرهای
تجمیعی
ورودی/خروجی
بلوکی (Block I/O)،
اندازهگیریشده
بر حسب
تیکهای
ساعت (صدم
ثانیه).
- (43) guest_time %lu (از
لینوکس 2.6.24)
- زمان
مهمانِ
فرایند
(زمان
صرفشده
برای اجرای
یک
پردازنده
مجازی برای
سیستمعامل
مهمان)، بر
حسب
تیکهای
ساعت (تقسیم
بر sysconf(_SC_CLK_TCK)).
- (44) cguest_time %ld (از
لینوکس 2.6.24)
- زمان
مهمانِ
فرزندان
فرایند، بر
حسب
تیکهای
ساعت (تقسیم
بر sysconf(_SC_CLK_TCK)).
- (45) start_data %lu (از
لینوکس 3.3) [PT]
- نشانیای
که بالاتر
از آن
دادههای
مقداردهیشده
و
مقداردهینشده
(BSS) برنامه
قرار
میگیرند.
- (46) end_data %lu (از
لینوکس 3.3) [PT]
- نشانیای
که
پایینتر
از آن
دادههای
مقداردهیشده
و
مقداردهینشده
(BSS) برنامه
قرار
میگیرند.
- (47) start_brk %lu (از
لینوکس 3.3) [PT]
- نشانیای
که بالاتر
از آن فضای
هیپ (heap)
برنامه
میتواند
با brk(2) گسترش
یابد.
- (48) arg_start %lu (از
لینوکس 3.5) [PT]
- نشانیای
که بالاتر
از آن
آرگومانهای
خط فرمان
برنامه (argv)
قرار
میگیرند.
- (49) arg_end %lu (از
لینوکس 3.5) [PT]
- نشانیای
که
پایینتر
از آن
آرگومانهای
خط فرمان
برنامه (argv)
قرار
میگیرند.
- (50) env_start %lu (از
لینوکس 3.5) [PT]
- نشانیای
که بالاتر
از آن
متغیرهای
محیطی
برنامه
قرار
میگیرند.
- (51) env_end %lu (از
لینوکس 3.5) [PT]
- نشانیای
که
پایینتر
از آن
متغیرهای
محیطی
برنامه
قرار
میگیرند.
- (52) exit_code %d (از
لینوکس 3.5) [PT]
- وضعیت خروج
ریسه در
قالبی که
توسط waitpid(2)
گزارش
میشود.