LINUX

آموزش لینوکس

LINUX

آموزش لینوکس

LINUX

این وبلاگ به بحث پیرامون لینوکس و امنیت و زبان برنامه نویسی تحت لینوکس می پردازد.

طبقه بندی موضوعی

پروسه ها در لینوکس

جمعه, ۳۰ خرداد ۱۳۹۳، ۰۳:۴۷ ب.ظ

وقتی شما یک برنامه رو روی یونیکس یا لینوکس اجرا میکنید سیستم عامل شما یک محیط خاص رو برای اون برنامه اختصاص میده. تون محیط همه اون چیزی رو که برنامه شما برای اجرا شدن بهش احتیاج داره رو در اختیارش قرار میده. 

وقتی شما یک دستوری رو توی سیستم اجرا میکنید یا چیزی رو ایجاد میکنید و ... سیستم برای شما یک پراسه ایجاد میکنه. 

هر پراسه یک آی دی داره که به اصطلاح بهش Process ID یا pid گفته میشه. همچنین هیچ دو پراسه های با آی دی های یکسان ذر سیستم وجود نخواهند داشت.


شروع پراسه

برای به اجرا در آوردن ی پراسه شما دو راه دارید:

 - Foreground Processes

- Background Processes


پراسه های Foreground

هر پراسه ای که در foreground اجرا میشه یک خروجی رو برای شما به نمایش میذاره. معمولا دستور ها در حالت عادی به این حالت اجرا میشن. به عنوان مثال:

$ ls ch*.doc
ch01-1.doc   ch010.doc  ch02.doc    ch03-2.doc 
ch04-1.doc   ch040.doc  ch05.doc    ch06-2.doc
ch01-2.doc   ch02-1.doc


همونطور که شما میبینید خروجی دستور ls در صفحه نشون داده شده است.

پراسه های Background

اگر دستوری رو در یونیکس یا لینوکس با عبارت & وارد کنید این دستور به شما خروجی نشون نمیده و به اصطلاح در background اجرا میشه. بعنوان مثال:


$ ls ch*.doc &
[1]   +   Done                 ls ch*.doc &
$

لیست پراسه های در حال اجرا

شما میتونید برای اینکه متوجه بشید چه برنامه هایی با چه pid ای روی سیستم شما در حال اجراست رو ببینید از دستور زیر استفاده کنید:

$ ps
PID       TTY      TIME        CMD
18358     ttyp3    00:00:00    sh
18361     ttyp3    00:01:31    abiword
18789     ttyp3    00:00:00    ps


یکی از امکاناتی که این دستور به شما میده اینه که بتونید از f- برای دیدن جزئیات بیشتر استفاده کنید:

$ ps -f
UID      PID  PPID C STIME    TTY   TIME CMD
amrood   6738 3662 0 10:23:03 pts/6 0:00 first_one
amrood   6739 3662 0 10:22:54 pts/6 0:00 second_one
amrood   3662 3657 0 08:10:53 pts/6 0:00 -ksh
amrood   6892 3662 4 10:51:50 pts/6 0:00 ps -f


حالا به ی توضیح مختصر در باره فیلدهایی که نمایش داده شده میدم؛

- UID : این بخش نام کاربری که پراسه رو ایجاد کرده میده.

- PID : آی دی پراسه

- PPID : آی دی پراسه پدر رو میده. چون ممکنه اون پراسه خودش توسط پراسه ای دیگه بوجود اومده باشه.

- C : استفاده cpu از اون پراسه رو نشون میده

- STIME : زمان شروع پراسه

- TTY : ترمینالی که پراسه داره ازش استفاده میکنه

- TIME : زمان cpu که توسط پراسه گرفته شده است

- CMD : دستوری که باعث بوجود آمدن پراسه شده است.


به جز f- چیزهای دیگه ای که شما میتونید با ps همراه کنید:

a- : اطلاعات در باره همه کاربرها رو نمایش میده

x- : اطلاعاتی که پراسه های به اجرا در آمده خارج از ترمینال هستند را نشان میدهد.

u- : اطلاعات اضافی را نمایش میدهد. مانند f-

e- : اطلاعات گسترده تری را نمایش میدهد.


خاتمه دادن به پراسه

شما میتونید به یک پراسه به روش های مختلفی خاتمه بدید. یکی از راه های معمول برای این کار اینه که شما از طریق ترمینال یک سیگنال توقف بوسیله cntrl + c  ارسال کنید. این حالت وقتی امکان پذیره که دستور داره در حالت foreground به اجرا در میاد.


اگر یک پراسه ای در حالت background در حال اجراست شما میتونید با دستور kill اون رو از بین ببرید.

به مثال زیر دقت کنید:

$ ps -f
UID      PID  PPID C STIME    TTY   TIME CMD
amrood   6738 3662 0 10:23:03 pts/6 0:00 first_one
amrood   6739 3662 0 10:22:54 pts/6 0:00 second_one
amrood   3662 3657 0 08:10:53 pts/6 0:00 -ksh
amrood   6892 3662 4 10:51:50 pts/6 0:00 ps -f
$ kill 6738
Terminated


اگر به هر علتی شما از دستور بالا استفاده کردید و دیدید که پراسه مورد نظر از بین نرفته میتونید به صورت زیر اقدام کنید:

$ kill -9 6738
Terminated


پراسه های پدر و بچه

هر پراسه ای دو مقدار داره یکی pid ودیگری ppid. بیشتر دستور هایی که شما در لینوکس اجرا میکنید از این دست هستند.


پراسه های Zombie و Orphan

گاهی اوقات پراسه بچه از بین میره که در این حالت پراسه پدر میتونه تصمیم مورد نظر رو مبنی برا ایجاد پراسه بچه جدید و یا ... بگیرد که این حالت همان zombie است. اما گاهی پراسه پدر از بین میرود و پراسه بچه باقی میماند که این حالت را orphan میگویند.


پراسه های Daemon

این پراسه ها پراسه های background سیستمی هستند که گاها با سطح دسترسی root و یا توسط سرویس ها ایجاد میشوند. این پراسه ها قابلیت کنترل شدن در ترمینال را ندارند و نمیتوانند dev/tty/ را باز کنند.اگر شما دستور ps -ef را وارد کنید میتوانید تعداد زیادی از آن ها را ببینید که با علامت ؟ مشخص شده اند.


در اصل این پراسه ها پراسه های background  هستند. مثلا شما پراسه پرینتری که منتظر درخواست پرینت می باشد را در نظر بگیرید. این پراسه را daemon می گویند. اگر شما برنامه ای دارید که نیاز است مدت طولانی به اجرا در بیاید بهتر است آن را به حالت daemon در آورده و در background اجرا کنید.


دستور top

این یک دستور بسیار مفید می باشد که به شما اجازه میدهد خیلی سریع و بر طبق ضوابطی خاص بتونید اطلاعات مربوط به پراسه ها رو ببینید. این دستور به شما اجازه دیدن وضعیت cpu و ram  و... رو در یک قالب خیلی خوب میده.



Job ID و Process ID

پراسه های معلق و background معمولا با Job ID نیز نمایش داده میشود. این عدد با عدد pid متفاوت است و چون کوتاه تر می باشد از آن استفاده میشود. همچنین از job میتونید برای پراسه های سری که در یک زمان در حال اجرا هستند استفاده کنید.



نظرات  (۱)

سلام
والا من که خیلی سر در نمیارم...
اومدم بگم که ممنون که اومدید وبلاگم...
پاسخ:
سلام. خواهش میکنم....
اشکال نداره. اگر دیدید کسی میخواد یاد بگیره معرفی کنید :)

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی