proc(5) File Formats Manual proc(5)

proc - اطلاعات فرآیند، اطلاعات سیستم و سیستم‌فایل کاذب sysctl

سیستم‌فایل proc یک سیستم‌فایل کاذب (pseudo-filesystem) است که یک رابط برای ساختارهای داده هسته فراهم می‌کند. این سیستم‌فایل معمولاً در مسیر /proc سوار (mount) می‌شود. به‌طور معمول، سیستم آن را به‌صورت خودکار سوار می‌کند، اما همچنین می‌تواند به‌صورت دستی با استفاده از دستوری مانند زیر سوار شود:


mount -t proc proc /proc

بیشتر فایل‌های موجود در سیستم‌فایل proc فقط‌خواندنی هستند، اما برخی از فایل‌ها قابل نوشتن می‌باشند و امکان تغییر متغیرهای هسته را فراهم می‌کنند.

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

این گزینه مشخص می‌کند چه کسانی می‌توانند به اطلاعات موجود در دایرکتوری‌های /proc/pid دسترسی داشته باشند. آرگومان n یکی از مقادیر زیر است:
0
همه افراد می‌توانند به تمام دایرکتوری‌های /proc/pid دسترسی داشته باشند. این رفتار سنتی است، و اگر این گزینه سوار کردن مشخص نشود، مقدار پیش‌فرض خواهد بود.
1
کاربران نمی‌توانند به فایل‌ها و زیردایرکتوری‌های درون دایرکتوری‌های /proc/pid به‌جز دایرکتوری‌های متعلق به خودشان دسترسی داشته باشند (خود دایرکتوری‌های /proc/pid همچنان قابل مشاهده باقی می‌مانند). فایل‌های حساس مانند /proc/pid/cmdline و /proc/pid/status اکنون در برابر سایر کاربران محافظت می‌شوند. این امر بررسی اینکه آیا کاربری در حال اجرای برنامه‌ای خاص است را غیرممکن می‌سازد (مشروط بر اینکه برنامه از راه‌های دیگر هویتش را با رفتارش آشکار نکند).
2
مانند حالت ۱، اما علاوه بر آن دایرکتوری‌های /proc/pid متعلق به سایر کاربران نامرئی می‌شوند. این بدان معناست که ورودی‌های /proc/pid دیگر نمی‌توانند برای کشف PIDهای موجود روی سیستم استفاده شوند. این کار مانع از آگاهی از وجود فرآیندی با یک مقدار PID خاص نمی‌شود (این موضوع می‌تواند از راه‌های دیگر، برای مثال با "kill -0 $PID" فهمیده شود)، اما UID و GID فرآیند را پنهان می‌کند، که در غیر این صورت می‌توانست با به‌کارگیری stat(2) روی یک دایرکتوری /proc/pid به دست آید. این کار جمع‌آوری اطلاعات درباره فرآیندهای در حال اجرا را برای مهاجم به‌شدت پیچیده می‌کند (مانند کشف اینکه آیا دیمونی با دسترسی‌های ارتقایافته در حال اجرا است، آیا کاربر دیگری برنامه‌ای حساس را اجرا می‌کند، آیا کاربران دیگر اصلاً برنامه‌ای را اجرا می‌کنند یا خیر، و مواردی از این قبیل).
شناسه عددی گروهی را مشخص می‌کند که اعضای آن مجاز به مشاهده اطلاعات فرآیندی هستند که در حالت عادی توسط hidepid ممنوع شده است (یعنی کاربران عضو این گروه به‌گونه‌ای رفتار می‌کنند که گویی /proc با hidepid=0 سوار شده است). این گروه باید به‌جای رویکردهایی مانند افزودن کاربران غیرریشه به فایل sudoers(5) استفاده شود.
فقط زیرمجموعه مشخص‌شده از procfs را نمایش می‌دهد، و تمام فایل‌ها و دایرکتوری‌های سطح بالا در procfs را که به وظایف (tasks) مربوط نمی‌شوند پنهان می‌کند.

در زیر مسیر /proc، گروه‌های کلی زیر از فایل‌ها و زیردایرکتوری‌ها قرار دارند:

/proc/pid (زیردایرکتوری‌ها)
به proc_pid(5) مراجعه کنید.
هر یک از این زیردایرکتوری‌ها حاوی فایل‌ها و زیردایرکتوری‌هایی است که اطلاعات مربوط به فرآیند با شناسه فرآیند (PID) متناظر را ارائه می‌دهند.
در زیر هر یک از دایرکتوری‌های /proc/pid، یک زیردایرکتوری task قرار دارد که شامل زیردایرکتوری‌هایی به شکل task/tid است که اطلاعات متناظر درباره هر یک از نخ‌های فرآیند را در بر دارد، که در آن tid شناسه نخ در هسته است.
زیردایرکتوری‌های /proc/pid هنگام پیمایش در /proc با getdents(2) قابل مشاهده هستند (و بنابراین وقتی کسی از ls(1) برای دیدن محتویات /proc استفاده می‌کند، قابل مشاهده خواهند بود).
/proc/tid (زیردایرکتوری‌ها)
به proc_tid(5) مراجعه کنید.
هر یک از این زیردایرکتوری‌ها شامل فایل‌ها و زیردایرکتوری‌هایی است که اطلاعات مربوط به نخ با شناسه نخ متناظر را ارائه می‌دهند. محتویات این دایرکتوری‌ها همانند دایرکتوری‌های متناظر /proc/pid/task/tid است.
زیردایرکتوری‌های /proc/tid هنگام پیمایش در /proc با getdents(2) قابل مشاهده نیستند (و بنابراین وقتی کسی از ls(1) برای دیدن محتویات /proc استفاده می‌کند نیز دیده نمی‌شوند ).
/proc/self
به proc_self(5) مراجعه کنید.
هنگامی که یک فرآیند به این پیوند نمادین جادویی دسترسی پیدا می‌کند، به دایرکتوری /proc/pid خود آن فرآیند ارجاع داده می‌شود.
/proc/thread-self
به proc_thread-self(5) مراجعه کنید.
هنگامی که یک نخ به این پیوند نمادین جادویی دسترسی پیدا می‌کند، به دایرکتوری /proc/self/task/tid خود آن نخ ارجاع داده می‌شود.
/proc/[a-z]*
فایل‌ها و زیردایرکتوری‌های گوناگون دیگر در زیر /proc اطلاعات سراسری سیستم را نمایش می‌دهند.
همچنین ببینید:

بسیاری از فایل‌ها حاوی رشته‌هایی هستند (مانند متغیرهای محیطی و خط فرمان) که در قالب داخلی ذخیره شده‌اند، و زیرفیلدهای آن‌ها با بایت‌های تهی ('\0') خاتمه می‌یابند. هنگام بررسی چنین فایل‌هایی، ممکن است متوجه شوید که اگر از دستوری با ساختار زیر برای نمایش آن‌ها استفاده کنید، خروجی خواناتر خواهد بود:


$ cat file | tr '\000' '\n'

cat(1), dmesg(1), find(1), free(1), htop(1), init(1), ps(1), pstree(1), tr(1), uptime(1), chroot(2), mmap(2), readlink(2), syslog(2), slabinfo(5), sysfs(5), hier(7), namespaces(7), time(7), arp(8), hdparm(8), ifconfig(8), lsmod(8), lspci(8), mount(8), netstat(8), procinfo(8), route(8), sysctl(8)

فایل‌های منبع هسته لینوکس: Documentation/filesystems/proc.rst، Documentation/admin-guide/sysctl/fs.rst، Documentation/admin-guide/sysctl/kernel.rst، Documentation/admin-guide/sysctl/net.rst و Documentation/admin-guide/sysctl/vm.rst.

2026-02-08 Linux man-pages 6.19