در آمدی بر مدیریت و کنترل پروسه ها¶
در مورد پروسه ها این سه فعل همیشه استعمال می شود :
live،execute،die
مفاهیم زیر را نیز در نظر بگیرید :
Terminates automatically : Said to die
Terminates manually : Stop manually or Kill
هرکدام از موارد زیر هنگامی که اجرا می شوند یک پروسه یا اصطلاحا فرآیند به حساب می آیند : Commands
Applications
Scripts
توجه شود که Shell ها خود پروسه می باشند. دستوراتی که درون این shell ها اجرا می شوند خود به تنهایی پروسه می باشند و اصطلاحا آنها را child Proccess یا بچه فرآیند ;-( می نامند.
نشان ها و مفاهیم¶
lifetime : lifetime یک پروسه به وسیله طول زمان اجرای آن معنا پیدا می کند ( درواقع مدت زمانی که live است.( برای مثال می توان به دستور ls اشاره نمود به محض نمایش خروجی Terminate یا اصطلاحا نابود می گردد. یا مثلا باز نمودن یک Web Browse مثل گوگل کروم ، lifetime طولانی تری دارد و در دوره ای نامحدود در حال اجرا خواهد بود ، مگر اینکه به صورت دستی Terminate شود .
نوعی دیگر از lifetime ها وجود دارد که به طور پیوسته از زمان بوت سیستم تا خاموش شدن آن در حال اجرا خواهد بود،مثل server Daemons ها.
Process ID (PID) : شماره (یا شناسه) هر پروسه که در زمان شروع ،به آن تعلق می گیرد . این شماره ها اعداد صحیح هستند. User ID (UID) & Group ID (GID) : GID و UID یک پروسه مرتبط با کاربری است که پروسه را اجرا کرده است . این موضوع دسترسی پروسه را به اشیادر فایل سیستم محدود می سازد.پروسه ها یا سطوح دسترسی مرتبط اند و
Parent Proccess : اولین پروسه ای که توسط kernel در زمان شروع سیستم ،آغاز می گردد ،برنامه ای است که به آن init می گویند. این پروسه PID به شماره 1 دارد و اولین Parent تمام پروسه ها روی سیستم می باشد. Shell زاده پروسه init می باشد و خود پروسه Parent دستوراتی است که در آن اجرا می شوند. به این دستورات Child Process یا Sub Process می نامند.
ٍ Environment : هر پروسه نگهدارنده لیستی از متغیر ها و ارزش های وابسته به آنها است. در مجموع،این لیست به عنوان environment پروسه مورد نظر و متغیر های مورد نظر که environment variables خوانده می شوند ،شناخته می شود. Child Processها ارث برنده تنظیمات environment اشان از Parent Processها هستند مگر آنکه یک environment جایگزین ،هنگامی که برنامه اجرا می شود ،مشخص شده باشد.
Curent Working Directory : دایرکتوری پیشفرضی که در ارتباط با هر پروسه می باشد . پروسه در بیشتر مواقع فایل ها را در این دایرکتوری read و write می کند.
نکته : چنانچه یک Parent Process را kill کنیم ، تمام Child هایش نیز kill می شود .
Process Monitoring ( نظارت پروسه ):
ps, pstree, top
# ps [options]
آپشن های پرکاربرد :
-a : نمایش پروسه هایی که به دیگر کاربران تعلق دارند و همگی به یک ترمینال الحاق گشته تند . به صورت معمول ،تنها پروسه کاربران جاری نمایش داده می شود .
-f : Full-format listing ، این آپشن آرگومان های command را چاپ می کند.
-l : Long Format ، که شامل Priority Parent PID و دیگر اطلاعات می باشد.
-u : User Format ،که شامل usernameها و زمان آغاز پروسه می باشد.
-w : Wide Output Format : به منظور برطرف نمودن کوتاه سازی خط خروجی پیشفرض استفاده می شود. برای عرض نامحدود می توان از -ww استفاده نمود .
-x : شامل پروسه هایی بدون کنترل Terminal ها خواهد بود . اغلب برای مشاهده پروسه های daemon و دیگر پروسه هایی که از Terminal Session،آغاز شده اند، استفاده می گردد.
-C : CMD، نمایش نمونه هایی از نام Command
-U : User ،نمایش پروسه هایی که متلق به Username هستند.
تمرین : خروجی دستورات زیر را بررسی کنید.
# ps````
ps -aux````¶
# ps aux````
ps u -C apache2 : تمام پروسه های وب سرورآپاچی````¶
# pstree [options][pid|user]````
این دستور لیستی سلسله مراتبی از پروسه ها را در قالب یک درخت نمایش می دهد . این دستور برای فهم چگونگی ارتباطات پروسه هایParent/Child ، بسیارکارآمد است .
آپشن های پرکاربرد :
-a : نمایش آرگومان های command_Line که برای راه اندازی پروسه ها راه اندازی می شوند.
-c : غیر فعال نمودن فشرده سازی Subtree های یکسان
-G : استفاده از کاراکتر های VT100 line-dreaming به جای کاراکترهای plain به منظور نمایش درخت مربوطه . این آپشن نمایش خوشایندتری را نتیجه می دهد اما ممکن است برای چاپ نمودن با شماره گذاری کردن برنامه ها مناسب نباشد .
-h : هایلایت نمودن دودمان پروسه جاری ( معمولا sell). Terminal مربوطه می بایستی از عمل highlighting پشتیبانی می کند تا این آپشن گویا و قابل فهم باشد.
-n : ٰٰٰٰsort نمودن به صورت عددی )PID( به جای حروف الفبایی )Name(.
-p : داخل نمودن PIDها در خروجی نمایش داده شده
مثال : خروجی دستور مقابل را مشاهده نمایید .
pstree -p¶
init(1)─┬─NetworkManager(3245)─┬─dhclient(4590) │ ├─{NetworkManager}(3305) │ └─{NetworkManager}(4591) ├─accounts-daemon(5925)───{accounts-daemon}(5927) ├─acpi_fakekeyd(2339) ├─acpid(2321) ├─atd(2291) ├─avahi-daemon(2845)───avahi-daemon(2848) ├─bluetoothd(2839) ├─clamd(3485)───{clamd}(3486) ├─colord(4409)───{colord}(4422) ├─colord-sane(4424)─┬─{colord-sane}(4426) │ └─{colord-sane}(7485) …
خروجی دستور مطابق بالا می باشد.
top [options]````¶
پدر خروجی چیزی شبیه دستور ps را به ما می دهد . با این تفاوت که به صورت مدوام در حال نمایش خروجی های مورد نظر است. این دستور برای مواقعی که نیازمند مشاهده حالت های یک یا چند پروسه یا دیدن چگونگی استفاده آنها از سیستم ها ، مفید می باشد .
متغیر TERM :
آپشن های خط فرمانی عمومی :
-b : در حالت batch اجرا کنید . این آپشن برای فرستادن خروجی از دستور top به برنامه های دیگر یا به یک فایل مفید می باشد . این آپشن تعدادی از تکرارهای مشخص شده با آپشن -n را اجرا می کند و از بین می برد . این آپشن برای زمانی که دستور top ، روی ترمینالی که استفاده می کنیم نمی تواند نمایش پیدا کند ،مفید است .
-d, “delay” : مشخص نمودن زمانی برای تاخیر در ثانیه های به روز رسانی صفحه نمایش . به صورت پیش فرض این زمان 5 ثانیه می باشد.
-i : نادیده گرفتن پروسه های بی کار ؛ "Idle” . لیست نمودن تنها آنهایی که interesting هستند و منابع سیستم را می گیرند.
-n, “num” : نمایش مکرر num , سپس خارج شدن به جای اجرای بی نهایت . بهتر است با آپشن -b استفاده شود.
-q : اجرای بدون تاخیر . چنانچه کاربر Superuser باشد ،بالاترین اولویت ممکن آن را اجرا می نماید . این آپشن باعث می شود که top به طور مداوم به روزرسانی شود و احتمالا هر زمان idle که CPU داشته است را مصرف می کند .
نکته : اجرای دستور top -q با اجرای Superuser توصیه نمی شود زیرا روی پرفورمانس سیستم تاثیر می گذارد.
-s : اجرا در حالت ایمن . بعضی از دستورات تعاملی top چنانچه به عنوان یک Superuser اجرا شود می تواند خطرناک باشد . این پشن آنها را غیر فعال می کند .0 آپشن های تعاملی پرکاربرد )Single-Command Key(:
spacebar : Refresh نمودن صفحه
h : پدید آوردن یک Help Screen
K : کشتن )Kill( کردن یک پروسه. Signal--->PID ، به صورت پیش فرض شماره سیگنال آن 15 به معنای SIGTERM می باشد.
n : عوض نمودن تعداد پروسه های نمایشی . به صورت پیش فرض این مقدار صفر می باشد.
q : بستن برنامه
r : عوض نمودن Priority یک پروسه (renice)
s : عوض نمودن زمان تاخیر در ثانیه های بین به روزرسانی ها . می توان مقدار زمان تاخیر را تسریع بخشید که می تواند شامل کسری از ثانیه ها باشد.
تمرین : نتایج دستورات زیر را در خروجی بررسی کنید :
# top
حال می توانید با دستور تعاملی q از محیط خارج شوید.
# top -d 1
مثال :
# top -bi -n 5 -d 1 > /home/ali/file1
-bi : توجیه کننده حالت batch می باشد ، که در اینجا مقصود از I حذف پروسه های idle می باشد.
-n 5 : نمایانگر iteration
-d 1 : به روز رسانی به طور یکثانیه یکبار
"> /home/ali/file1 : خروجی خود را به فایل یک می دهد."
# free [options]````
نمایش مقدار حافظه خالی و استفاده شده در سیستم
آپشن های پرکاربرد :
-b : نمایش طریقه استفاده حافظه به صورت byte
-k : نمایش طریقه استفاده حافظه به صورت kilobyte
-m : نمایش طریقه استفاده حافظه به صورت megabyte
-t : نمایش یک خط که در حال نشان دادن total ها می باشد.
-sx : ادامه دادن این فعالیت در فواصل زمانی x ثانیه ای
تمرین : خروجی دستور زیر را در محیط خط فرمان مشاهده کنید :