مدیریت فرایند و سیگنال‌ها

فرایندها، شناسه‌ها و /proc

فرایند چیست؟

هر برنامه‌ای که در لینوکس اجرا می‌شود، به یک یا چند فرایند (process) تبدیل می‌شود. هسته لینوکس به هر فرایند یک شناسه یکتا به نام PID می‌دهد و اطلاعات کامل آن را در فایل‌سیستم مجازی /proc نگه می‌دارد. برای مدیر سیستم، فهمیدن این‌که چه فرایندهایی در حال اجرا هستند، چه منابعی مصرف می‌کنند و به چه فرایند دیگری وابسته‌اند، اولین قدم برای عیب‌یابی هر مشکلی است.

دستور ps رایج‌ترین ابزار برای مشاهده فرایندهاست. با گزینه‌های مناسب می‌توان خروجی را دقیقاً مطابق نیاز شکل داد:

› نمایش همه فرایندها با جزئیات کامل
ps aux

› نمایش درختی فرایندها بر اساس والد و فرزند
ps -ef --forest

› اطلاعات یک فرایند خاص از روی PID
cat /proc/1234/status
cat /proc/1234/cmdline

هر فرایند یک فرایند والد (PPID) دارد؛ فرایند شماره ۱ معمولاً systemd یا init است و ریشه درخت تمام فرایندهاست. وقتی فرایند والد از بین برود، فرزندانش به فرایند شماره ۱ واگذار می‌شوند تا یتیم نمانند. همچنین هر فرایند یک وضعیت (state) دارد؛ مهم‌ترین‌ها عبارت‌اند از R (در حال اجرا)، S (خواب قابل‌قطع)، D (خواب غیرقابل‌قطع، معمولاً منتظر I/O) و Z (zombie، یعنی فرایندی که تمام شده اما والدش هنوز خروجی آن را نخوانده). دیدن تعداد زیاد فرایند در وضعیت D یا Z معمولاً نشانه یک مشکل واقعی در سیستم است که باید بررسی شود.

برای ذخیره‌ی پیشرفت و شرکت در آزمون، وارد شوید — رایگان است.