فرایند چیست؟
هر برنامهای که در لینوکس اجرا میشود، به یک یا چند فرایند (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 معمولاً نشانه یک مشکل واقعی در سیستم
است که باید بررسی شود.