صفحه اصلی arrow مقالات arrow استفاده موثر از دستور top
استفاده موثر از دستور top چاپ ارسال به دوست
رای کاربران: / 1
ضعیفعالی 
مقالات - مقالات
نویسنده خانم شكيباپور   
۱۶ تير ۱۳۸۷

مونیتور کردن میزان استفاده از منابع، کاری مهم برای کاربران محسوب می شود. با انجام این کار، ما می توانیم گلوگاهای سیستممان را پیدا کنیم، راهکارهای بهینه کردن سیستممان را طرح ریزی کنیم، نشت های حافظه را مشخص کنیم و ... .مسأله این است که شخص از چه نرم افزاری استفاده کند و از آن چگونه استفاده کند تا نیازهایش را برآورده سازد.

از بین ابزارهای مونیتورینگ موجود، بیشتر مردم از "top" (بخشی از بسته procps) استفاده می کنند.top تقریباً هر چیزی را که ما برای مونیتور کردن استفاده منابع سیستممان در یک نگاه نیاز داریم، برای ما فراهم می کند.در این مقاله، همه اطلاعات بر پایه procps ورژن 3.2.5  در حال اجرا روی کرنل 2.6.x است. فرض می کنیم بسته procps قبلاً بر روی سیستم ما نصب شده است و به خوبی هم کار می کند.

 

حالت interactive یا batch ؟

 به طور پیش فرض top در حالت interactive صدا زده می شود.در این حالت، top به طور نامحدود اجرا می شود و برای دوباره تعریف کردن چگونگی کارکرد top، فشرده شدن کلیدها را می پذیرد.اما بعضی وقتها احتیاج دارید که خروجی top را پردازش کنید و در این حالت این کار به سختی امکان پذیر است.راه حل؟ استفاده از حالت batch.

$ top –b

 

خروجی زیر را مشاهده خواهید کرد:

Image

صبر کنید، این روش هم به طور مکرر اجرا می شود، درست مانند حالت interactive .نگران نباشید، تکرار را با –n محدود کنید.بنابراین اگر می خواهید تنها یکبار اجرا شود ، تایپ کنید:

$ top -b -n 1

مزیت اصلی این حالت این است که می تواند به سادگی با at یا cron ترکیب شود.در این وضعیت، top می تواند snapshot استفاده از منابع را در یک زمان مشخص بگیرد.برای مثال، با استفاده از at، می توانید اجرای top  را برای 1 دقیقه بعد زمانبندی کنید.

$ cat ./test.at

TERM=linux top -b -n 1 >/tmp/top-report.txt

$ at -f ./test.at now+1minutes


خوانندگان با دقت ممکن است بپرسند "چرا لازم داریم متغیر محیطی TERM را قبل از اجرای top به هنگام ایجاد یک job جدید at مقداردهی کنیم؟". پاسخ این است، top احتیاج دارد که این متغیر مقداردهی شده باشد اما متأسفانه در لحظه اجرا at آن را نگه نمی دارد.به سادگی با روش بالا آن را مقداردهی می کنیم و top به خوبی عمل خواهد کرد.


چگونه تنها پروسسهای خاصی را مونیتور کنیم؟

 بعضی وقتها می خواهیم تنها یک یا چند پروسس را مونیتور کنیم که ممکن است 4 یا 5 تا از کل پردازشها باشد.

برای مثال، اگر بخواهید پروسسها با PID 4360 و 4358 را مونیتور کنید، تایپ کنید:

$ top -p 4360,4358

یا

$ top -p 4360 -p 4358

احتمال دیگر این است که تنها بخواهید پروسسها با شناسه کاربری (UID) مشخص را مونیتور کنید. برای این کار باید از option های –u یا –U استفاده کنید. فرض کنید کاربر "johndoe" UID 500 را دارد. می توانید تایپ کنید:

$ top -u johndoe

یا

$ top -u 500

یا

$ top -U johndoe

 

در نتیجه هم می توانید از نام کاربری و هم UID عددی استفاده کنید." -u و –U؟ آیا با هم متفاوتند؟" بله .مثل اغلب ابزارهای GNU، option ها case sensitive هستند.-U به این معنی است که top ، UID های مؤثر(effective) ، حقیقی (real) ، ذخیره شده (saved) و سیستم فایل (filesystem) را که جور می شوند (match) را پیدا می کند در صورتی که –u تنها شناسه کاربری مؤثر (effective user id) جور شده را پیدا می کند. به عنوان یادآوری ، هر پروسس *nix ی با استفاده از UID مؤثر اجرا می شود که بعضی وقتها با شناسه کاربری حقیقی (real user id) برابر نیست.ممکن است توجه یک شخص به effective user id باشد (چون مجوزهای فایل سیستم و قابلیتهای سیستم عامل با آن چک می شوند) تا real user id.

 

در حالی که –p تنها option خط فرمان است، -u و  -U در حالت interactive هم استفاده می شوند.اگر’U’  یا ‘u’ را فشار دهید، پروسس ها بر اساس نام کاربریشان فیلتر می شوند.u برای effective user id وU  برای نام کاربری real/effective/saved/filesystem . البته از شما خواسته می شود تا نام کاربری یا UID عددی را وارد کنید.


 به روز شدن سریع یا کند؟

 قبل از اینکه به این پرسش پاسخ دهیم ، بیایید نگاهی به چگونگی عملکرد top بیندازیم.strace در اینجا دوست شماست:

$ strace -o /tmp/trace.txt top -b -n 1

 

از ویرایشگر متنی دلخواه خود استفاده کرده و /tmp/trace.txt را بارگذاری کنید.چه فکر می کنید؟تعداد زیادی job برای یک درخواست کوچک، این چیزی است که من فکر می کنم و احتمالاً شما هم با آن موافقید.یکی از job هایی که top باید در هر تکرارانجام دهد، باز کردن تعداد زیادی فایل و پویش محتوی آنها است که با عدد زیر نمایش داده می شود:

$ grep open\( /tmp/trace.txt | wc –l

 

در سیستم لینوکسی من این عدد برابر 304 شده است.یک نگاه نزدیکتر آشکار می کند که top داخل دایرکتوری /proc حرکت می کند تا اطلاعات مورد نیاز خود را به دست بیاورد. /proc یک شبه فایل سیستم است، به این معنی که روی دیسک موجود نیست اما توسط کرنل ایجاد شده و به طور زنده در RAM وجود دارد.داخل دایرکتوری مانند /proc/2049 (2049 یک  PIDاست)  کرنل لینوکس اطلاعات راجع به پروسس مربوطه را قرار می دهد و اینجا جایی است که top اطلاعات مربوط به پروسس ها و میزان استفاده از منابع را جمع آوری می کند.

 

همچنین دستور زیر را امتحان کنید:

$ time top -b -n 1

 

این دستور به شما نشان می دهد که top چقدر سریع در یک راند کار می کند.در سیستم من حدوداً 0.5-0.6 ثانیه طول کشید.به فیلد real نگاه کنید نه user یا system چون real کل زمانی که top برای کار کردن احتیاج دارد را نشان می دهد.بنابراین با درک این حقیقت، عاقلانه تر این است که از فاصله های زمانی به روزرسانی (update interval) میانه ای استفاده کنیم.گذار در فایل سیستم بر پایه RAM نیز زمان می برد، بنابراین باید آگاهانه عمل کنیم.با یک حساب سر انگشتی، فاصله زمانی (interval) 1 تا 3 ثانیه برای اغلب کاربران کافی به نظر می رسد.برای تنظیم این مقدار از –d در خط فرمان و فشار دادن s در حالت interactive استفاده کنید.از اعداد کسری نیز برای فاصله زمانی می توانید استفاده کنید:برای مثال 2.5 و 4.1 و ... .

 

کی لازم است سریعتر از 1 ثانیه باشیم؟

شما به نمونه های بیشتری در یک دوره زمانی احتیاج دارید.به این خاطر بهتر است از حالت batch استفاده کنید و خروجی استاندارد را به یک فایل بفرستید تا بتوانید آن را بهتر تحلیل کنید.

سربار اضافه CPU که به خاطر top ایجاد شده برای شما مهم نیست .بله ،این مقدار کوچک است اما به هر حال سربار به حساب می آید.اگر سیستم لینوکسی شما اکثراً بیکار است،برای اینکه از فاصله های زمانی کوتاه استفاده کنید، شک نکنید، در غیر اینصورت بهتر است زمان CPU را برای کارهای مهمتر نگاه دارید.

 

یک راه برای کم کردن حجم کار top این است که تنها PID های خاصی را مونیتور کنیم.با این کار، top احتیاج ندارد که کل /proc را بپیماید. فیلتر کردن بر اساس نام کاربری چطور؟ فیلتر کردن بر اساس نام کاربری کار اضافه تری برای top به ارمغان می آورد ، بنابراین ترکیب کردن آن با فاصله های زمانی کوتاه ، بار CPU را بالاتر خواهد برد.

 

البته هرگاه احتیاج دارید که خروجی حتماً به روزرسانی شود، Space bar را فشار دهید و top آمار را در همان لحظه به روزرسانی می کند.


فیلدهایی که نیاز داریم

 به طور پیش فرض، top با نمایش خصوصیات روبرو از task ها آغاز می شود:

 

فیلد

شرح

PID

Process ID

USER

Effective User ID

PR

اولویت پویا

NI

مقدار Nice، اولویت پایه نیز نامیده می شود.

VIRT

سایز مجازی task که شامل سایز باینری اجرا پذیر پروسس ، محدوده داده و تمام shared library های بارگذاری شده است.

RES

سایز RAM که در حال حاضر توسط task مصرف شده است.بخش swapped out از task در نظر گرفته نشده است.

SHR

محدوده هایی از حافظه که می توانند بین دو یا چند task تسهیم (share)  شود، این فیلد محدوده تسهیم شده (shared) را مشخص می کند.نمونه هایی از محدوده تسهیم شده ،shared library و SysV shared memory هستند.

S

وضعیت task

%CPU

درصد زمان CPU که برای اجرای یک task از آخرین به روزرسانی صفحهtop اختصاص داده شده است.

%MEM

درصد RAM که در حال حاضر توسط task مصرف شده است.

TIME+

میزان کل زمان CPU که task از زمانی که آغاز شده ، مصرف کرده است.علامت ‘+’ به معنی این است که با یک صدم ثانیه نمایش داده شده است.به طور پیش فرض TIME/TIME+، زمان CPU را که توسط فرزندان خاتمه یافته task ، مصرف شده را در نظر نمی گیرد.

COMMAND

نام برنامه

 

البته فیلدهای بیشتری نیز وجود دارند.ما در اینجا تنها فیلدهایی که احتمالاً مورد توجه شما قرار می گیرند را توضیح می دهیم:

 

فیلد

شرح

nFLT(کلید u)

تعداد page fault بزرگ (major)  از زمانی که پروسس ایجاد شده است.از لحاظ فنی، page fault زمانی رخ می دهد که task بخواهد به page ی که در محدوده آدرسش نیست ، دسترسی داشته باشد.یک page fault به عنوان major نامیده می شود اگر کرنل برای موجود کردن آن مجبور باشد به دیسک رجوع کند.و برعکس page fault به عنوان minor نامیده می شود اگر کرنل تنها page هایی را در RAM اختصاص بدهد بدون اینکه مجبور باشد به دیسک رجوع کند.

 

برای روشن شدن موضوع، برنامه 8 کیلوبایتی  ABC را در نظر بگیرید و فرض کنید سایز page، 4 کیلوبایت است.وقتی برنامه به طور کامل در RAM بارگذاری شده است ،2 دفعه  page fault از نوع major رخ داده است.برنامه خودش 8 کیلوبایت برای ذخیره داده های موقتی در نظر می گیرد، بنابراین 2 دفعه هم page fault از نوع minor رخ می دهد.

 

تعداد زیاد nFLT به معنی :

 

1.      task بخشی از کد اجرایی یا library خود را به زور از دیسک بارگذاری می کند.

2.      task در حال دسترسی به page ی است که swapped out شده است.

 

تعداد زیاد  page fault از نوع major هنگامی که برنامه برای اولین بار اجرا می شود، طبیعی است.در اجراهای بعدی، بافر استفاده می شود و  شما تعداد 0 یا اندک nFLT را مشاهده می کنید.اما اگر برنامه به طور مداوم page fault از نوع major را موجب شود، به این معنی است که برنامه به میزان RAM بیشتری نسبت به آنچه هست، احتیاج دارد.

nDRT(کلید v)

تعداد page های dirty از زمانی که روی دیسک باز نویسی شده اند.

 

شاید بپرسید page های dirty دیگر چه هستند؟ ابتدا یک مقدار پیش زمینه.همانطور که می دانید،لینوکس از مکانیزم caching استفاده می کند ، بنابراین هر چیزی که از دیسک خوانده می شود در RAM نیز cache می شود.مزیت این عمل اینست که خواندن های متوالی از یک بلوک دیسک می تواند از RAM تامین شود.بنابراین عمل خواندن سریعتر انجام می شود.

 

البته این عمل هزینه هایی نیز دارد.اگر محتوی بافر تغییر پیدا کند، به منطبق سازی نیاز می شود.بنابراین دیر یا زود این بافر تغییر یافته (dirty page) باید بازنویسی شود.شکست در منطبق سازی ممکن است باعث ناسازگاری داده ها روی دیسک مربوطه گردد.

 

در بیشتر سیستمهای بیکار یا آنهایی که load شان کم است، nDRT معمولاً زیر 10 است (این یک فرض خام است) یا تقریباً 0.اگر بیشتر از آن باشد:

 

1.      task مقادیری را به زور در فایل(ها) می نویسد و به حدی است که I/O دیسک نمی تواند با آن پایداری کند.

2.      دیسک مشکل ازدحام I/O را دارد، بنابراین task تنها می تواند بخش کوچکی از فایل(ها) را تغییر دهد، و باید زمان بیشتری برای منطبق سازی صبر کند. ازدحام زمانی رخ می دهد که تعداد زیادی پروسس در یک زمان به دیسک دسترسی دارند و cache hit نیز پایین است.

 

امروزه (1) کمتر اتفاق می افتد چون سرعت I/O بسیار سریعتر شده است و کمتر به CPU احتیاج است (با تشکر از DMA) .بنابراین احتمال رخ دادن (2) بیشتر است.

 

توجه:در 2.6.x این فیلد همیشه صفر است،به دلایل ناشناخته.

 

P(کلید j)

آخرین CPU استفاده شده.این فیلد تنها در محیط SMP معنی پیدا می کند. SMP رجوع می کند به Hyperthread, multi core یا multi processor واقعی.اگر تنها یک پردازنده داشته باشید (نه multi core و نه HT) ، این فیلد همیشه 0 را نمایش می دهد.

 

تعجب نکنید  اگردر سیستم های SMP ، این فیلد بعضی مواقع عوض می شود.این بدان معنی است که کرنل لینوکس سعی می کند task شما را به CPU دیگر که به نظر load کمتری دارد، منتقل کند.

 CODE(کلید r) و DATA(کلید s)

CODE، سایز کد برنامه کاربردی شما را مشخص می کند، در حالی که DATA ،سایز قسمت داده (stack ،heap ، متغیرها البته نه shared library ها) را مشخص می کند.هر دو با کیلوبایت اندازه گیری می شوند.

 

DATA، برای نمایش اینکه چقدر برنامه شما حافظه اختصاص می دهد، مفید است.بعضی وقتها، نشت حافظه را نیز مشخص می کند.البته در صورتی که DATA به طور مداوم بالا می رود، شما به ابزارهای بهتری مانند valgrind احتیاج دارید تا بین اختصاص حافظه متوالی و نشت رو به رشد حافظه تفاوت قائل شوید.

 

توجه:DATA،CODE،SHR،SWAP،VIRT،RES همه بر اساس سایز page اندازه گیری می شوند(در معماری Intel 4 کیلوبایت).بخش داده فقط خواندنی نیز با سایز CODE حساب می شود، بنابراین بعضی وقتها از بخش text (executable) واقعی بیشتر است.

SWAP(کلید p)

سایز قسمت swapped out شده تصویر حافظه مجازی یک task.این فیلد بعضی مواقع گیج کننده است.دلیل این است که:

 

شما منطقاً انتظار دارید که این فیلد اینکه آیا بخشی از برنامه شما swapped out شده و اگر شده به چه میزان را نشان دهد.اما واقعیت چیز دیگری را نشان می دهد.حتی اگر فیلد swap used مقدار 0 را نشان دهد، شما وقتی می بینید فیلد SWAP هر پروسس مقدار بزرگتر از 0 را نشان می دهد، متعجب خواهید شد.بنابراین کجا خطا رخ داده است؟

 

علت این است که top از فرمول زیر استفاده می کند:

 

VIRT = SWAP + RES or equal

SWAP = VIRT – RES

 

همانطور که قبلاً توضیح داده شد، VIRT حاوی هرچیزی در محدوده آدرس task است ، حال فرقی ندارد که در RAM باشد، swapped out شده باشد یا اینکه هنوز از دیسک بارگذاری نشده باشد.در حالی که RES میزان RAM ی را که توسط task مصرف شده را نمایش می دهد.بنابراین SWAP برابر کل میزان داده ای است که swapped out شده یا هنوز از دیسک بارگذاری نشده است.فریب نامش را نخورید، آن تنها میزان داده swapped out را نمایش نمی دهد.

 

 

برای اینکه فیلدهای بالا را ببینید در حالت interactive کلید f را بزنید.سپس کلید مربوطه (که داخل پرانتز ذکر شده) را بزنید.آن کلید های فیلد مربوطه را برای نمایش نشاندار می کنند و اگر دوباره آنها را بزنید آن فیلد را پنهان می کنند.برای اینکه بفهمید چه فیلدهایی نمایش داده می شوند و چه فیلدهایی پنهان هستند، پس از زدن کلید f در لیست حروفی که بزرگ هستند یعنی فیلد مربوطه شان نمایش داده می شود و حروفی که کوچک هستند یعنی فیلد مربوطه شان نمایش داده نمی شود.اگر با وضعیت فعلی موافق هستید Enter را بزنید.

 

مرتب کردن (sort) نیز به همین ترتیب است.’O’ (بزرگ) را فشار دهید و به دنبال آن کلیدی که نشان دهنده آن فیلد است.نگران نباشید اگر کلید فیلدها را به خاطر نمی آورید، top آنها را به شما نمایش خواهد داد.کلید جدید sort ستاره دار نمایش داده می شود، بنابراین به سادگی مشخص می شود.در پایان Enter را بزنید.


آیا نمایش چند گانه بهتر از تکی است؟

 در بعضی از موقعیتها، می خواهید مشخصه های مختلفی از سیستم را مونیتور کنید.به عنوان مثال، یک وقت می خواهید %CPU و زمان مصرف شده CPU را برای کلیه task ها مونیتور کنید.در یک زمان دیگر، می خواهید سایز مقیم و page fault های کل task ها را مونیتور کنید.آیا مرتباً کلید f را قشار می دهید و فیلدهای قابل مشاهده را عوض می کنید؟ انتخاب هوشمندانه ای به نظر نمی رسد.

 

چرا از حالت چند پنجره ای استفاده نمی کنید؟ کلید ‘A’ (بزرگ) را فشار دهید تا به حالت چند پنجره ای جابجا شوید.به طور پیش فرض ، شما 4 مجموعه از گروه فیلدها  مشاهده می کنید.هر گروه فیلد یک نام یا برچسب دارد:

اولین گروه فیلد: Def

دومین گروه فیلد: Job

سومین گروه فیلد: Mem

چهارمین گروه فیلد: Usr

Image
اولین گروه فیلد، گروهی است که شما در نمایش تک پنجره ای می بینید، در حالی که بقیه گروهها پنهان هستند.در داخل حالت چند پنجره ای ،’a’ یا ‘w’ را برای چرخش بین تمام پنجره های موجود بزنید.دقت کنید،با جابجایی به پنجره دیگر، پنجره فعال نیز تغییر پیدا می کند(پنجره جاری نیز نامیده می شود).اگر مطمئن نیستید که کدام پنجره فعال است، به خط اول top (سمت چپ فیلد current time) نگاه کنید.راه دیگر برای تغییر پنجره فعال، زدن کلید ‘G’ و به دنبال آن شماره پنجره(1 تا 4).

 

پنجره فعال، پنجره ای است که به ورودیهای کاربر عکس العمل نشان می دهد، بنابراین قبل از انجام هر کاری ابتدا پنجره دلخواه را انتخاب کنید.بعد از آن، هر کاری که در حالت تک پنجره ای می توانستید انجام دهید، اینجا هم می توانید انجام دهید.معمولاً کاری که در اینجا می خواهید انجام دهید، خصوصی سازی فیلدهای نمایش داده شده است بنابراین کلید f را بزنید و خصوصی سازی را آغاز کنید.

 

اگر فکر می کنید 4 پنجره خیلی زیاد است، به آن گروه فیلد جابجا شوید و ‘-‘ را برای پنهان ساختن آن فشار دهید.لطفاً توجه کنید که پنهان سازی گروه فیلد جاری به معنی فعال سازی گروه فیلد دیگری نیست. اگر می خواهید دوباره آن گروه فیلد را نمایش دهید، کلید ‘-‘ را دوباره بزنید.

 

اگر کارتان با حالت چند پنجره ای تمام شده است، کلید ‘A’ را دوباره فشار دهید.اینکار گروه فعال را به گروه فعال حالت تک پنجره ای نیز تبدیل می کند.

 

چرا حافظه خالی روی لینوکس من اینقدر کم است؟

مهم نیست که شما چقدر RAM روی مادربورد خود گذاشته اید،بزودی متوجه می شوید که RAM آزاد به سرعت کم می شود.اشتباه محاسبه در RAM خالی؟ نه!

 

قبل از پاسخ دادن به این سؤال، ابتدا خلاصه گزارش حافظه که در بالای top قرار گرفته را چک کنید(ممکن است برای آشکار سازی آن مجبور باشید کلید ‘m’ را بزنید).در آنجا شما دو فیلد می بینید،buffers  و cached .Buffers می گوید که چه میزان از RAMبه بلوک دیسک cache اختصاص یافته است.cached  نیز شبیه buffers است، با این تفاوت که page ها را از خواندن فایل (file reading) cache می کند. Buffer ها توسط پروسس های مختلف اختصاص داده می شود تا از آنها به عنوان صفهای ورودی استفاده شود.بیشتر وقتها buffer ها خروجی بعضی از پروسسها هستند،به عنوان بافر فایل.یک توضیح ساده از buffer ها این است که آنها به پروسسها این امکان را می دهند تا به طور موقت ورودیهای خود را در حافظه ذخیره کنند تا پروسس راحتتر بتواند با آنها سر و کار داشته باشد.cache ، I/O دیسک که مکرراً درخواست می شود.اگر چندین پروسس به یک سری فایل مشخص دسترسی دارند، بیشتر آن فایلها برای بالا بردن کارایی cache می شوند.برای درک کامل این واژه ها به کتابهای Linux kernel book رجوع کنید.

 کافی است که بفهمید که هر دو buffers و  cached سایز cache سیستم را مشخص می کنند.که به درخواست مکانیزم داخلی کرنل لینوکس ، رشد می یابند یا کوچک می شوند.

RAM ،در کنار فضای مصرف شده توسط cache، حاوی بخش code و data از برنامه کاربردی نیز هست.بنابراین RAM آزاد به معنی RAM ی است که نه توسط cache و نه توسط بخش code و data از برنامه کاربردی اشغال نشده است.شما می توانید cache را RAM آزاد دیگری در نظر بگیرید که در صورت نیاز برنامه کاربردی به حافظه، کوچک می شود.

 

از نقطه نظر task، ممکن است از خود بپرسید که کدام فیلد حقیقتاً مصرف حافظه را نمایش می دهد.فیلد VIRT؟ نه! به خاطر بیاورید که این فیلد حاوی هر چیزی در محدوده آدرس task است حتی shared library ها.بعد از مطالعه کدهای منبع top و proc.txt (داخل پوشه Documentation/filesystem از کد منبع کرنل لینوکس) من به این نتیجه رسیده ام که فیلد RES بهترین فیلد برای فهمیدن میزان مصرف حافظه توسط task است.بهترین، چون شما باید تقریب را نیز در نظر بگیرید و همیشه 100%  دقیق نیست.


کار با تنظیمات ذخیره شده متعدد:

 آیا می خواهید تنظیمات متفاوتی از top داشته باشید تا بتوانید بین نمایشهای از پیش تنظیم شده جابجا شوید؟یک لینک symbolic به باینری top درست کنید و هر نامی که می خواهید به آن بدهید:

 # ln -s /usr/bin/top /usr/bin/top-a

 

حال اگر top-a جدید را اجرا کنید و تنظیمات خود را انجام داده و ‘W’ را برای ذخیره فشار دهید.

تحت ~/.top-arc ذخیره خواهد شد (فرمت، نام top شما + rc است).

 

حال اگر top اصلی را اجرا کنید،اولین نمایش شما را بارگذاری خواهد کرد و اگر top-a را اجرا کنید، دومی را بارگذاری خواهد کرد و به همین ترتیب.

 

منبع:سایت http://www.linuxforums.org

آخرین بروز رسانی ( ۱۶ تير ۱۳۸۷ )
<قبل   بعد>