منبع اصلی نوشتار زیر در این لینک قرار دارد

نمایش درختواره فرایند ها در لینوکس

در هر سیستم عاملی امکان ایجاد یک فرایند از فرایند دیگر وجود دارد که فرایند ایجاد شده را فرایند فرزند و فرایند دیگر را فرایند والد می گویند. همچنین هر فرایند  فرزند نیز می تواند دیگر فرایند ها را ایجاد کند تا یک ساختار درختی میان فرایند های والد و فرزند ایجاد شود.

در توزیع های لینوکسی فرایند init یا امروزه systemd جد تمامی فرایند های موجود در سیستم هستند که دارای شناسه یا ProcessID صفر هستند. برای مشاهده ساختاری درختواره فرایند ها که در واقع ارتباط میان فرایند ها را نشان می دهد می توان از دستورهای ps و pstree استفاده کرد. پیش از نشان دادن دستورها یک مثال ساده از آنچه باعث ایجاد فرایند والد می شود، گفته خواهد شد.

فرض کنید که در محیط خط فرمان یک پنجره گرافیکی ترمینال مانند Gnome Terminal را باز می کنید و می خواهید دستور ssh را برای اتصال به ماشین راه دور استفاده کنید. در اینجاد Gnome Terminal یک پوسته bash (یا هر پوسته پیشفرض کاربر) را ایجاد می کند تا کاربر بتواند یک دستور (در اینجا ssh) را اجرا کند. در شکل زیر رایطه میان فرایند با شناسه 4181 مربوط به gnome-terminal و فرایند bash با شناسه 4255 را مشاهده می کنید.

linux_pstree1

به همین ترتیب اگر دستور ssh را اجرا کنید، والد آن یک فرایند ssh با شناسه دیگر است، درواقع شناسه sshd والد با انجام فراخوان سیستمی fork یه فرایند فرزند همسان خود را ایجاد می کند و فرایند فرزند منابع مورد نیاز را از والد خود به ارث می برد.

برای مشاهده ساختار درختواره میان فرایند ها می توانید از یکی از دستورهای زیر استفاده کنید.

ps -ejH

ps axjf

pstree



برچسب ها : , , , , , ,