1 / 74

Linux راهبري

فرا ي ندها در ل ي نوکس. Linux راهبري. محمود تق ي زاده taghi@imenafzar.net. مرداد 1383. training@farsilinux.org. فرا ي ندها در ل ي نوکس. كليه حقوق، متعلق به شوراي عالي انفورماتيك و مركزفن آوري شريف بوده و هرگونه دخل و تصرف منوط به اجازه كتبي مي باشد. فرا ي ندها در ل ي نوکس. مركز فناوري

Download Presentation

Linux راهبري

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. فرايندها در لينوکس Linux راهبري محمود تقي زاده taghi@imenafzar.net مرداد 1383 training@farsilinux.org

  2. فرايندها در لينوکس كليه حقوق، متعلق به شوراي عالي انفورماتيك و مركزفن آوري شريف بوده و هرگونه دخل و تصرف منوط به اجازه كتبي مي باشد.

  3. فرايندها در لينوکس مركز فناوري اطلاعات و ارتباطات پيشرفته شريف با حمايت شوراي عالي انفورماتيك تقديم مي كند

  4. فرايندها در لينوکس با تشكر فراوان از جناب آقاي دكتر ربيعي و جناب آقاي دكتر خوانساري كه همواره براي پيشبرد لينوكس فارسي تلاش نموده و از هيج حمايتي دريغ ننموده اند محمود تقي زاده

  5. فرايند در لينوکس

  6. فرايند هاي لينوکس- قسمت اول • مفهوم فرايند • اجراييک فرايند در پيش‌زمينه يا پس‌زمينه • مد کاربر/هسته در اجراي برنامه • دستورات اصلي • دستورات پيشرفته • دستورات کاربردي

  7. فرايندها (1) • منظور از فرايند يک برنامه يا کد در حال اجرا در سيستم مي باشد. • قسمتي از کدهاييک فرايند در مود کاربر و قسمتي در مود کرنل (هسته) اجرا مي شود.

  8. فرايندها (2) • رابطه فرايند ها به صورت سلسله مراتبي است. به اين معني که يک فرايند مي تواند يک يا چند فرايند ايجاد کرده و هر کدام از فرايند هاي جديد نيز به همين منوال مي توانند فرايند جديد ايجاد کنند. • يک فرايند رويفرايند‌هايي که ايجاد کرده است کنترل کامل دارد و حتي مي تواند اجراي آنها را متوقف کند. • توقف يک فرايند مي تواند باعث توقف فرايند‌هاي توليد شده توسط آن فرايند شود. • در لينوکس به هر کدام از فرايندها يک PID نسبت داده مي شود.

  9. فرايندها (3) • Foreground • موقعي که يک دستور را از اعلان اجرامي کنيم و منتظر مي‌مانيم تا پس از پايان اجراي آن دوباره شکل اعلان ظاهر شود مي گوييم فرايند به صورت پيش زمينه اجرا شده است. • Background • موقعي که بعد از دستور علامت & را قرار مي دهيم و دستور را اجرا مي کنيم فرايند به صورت پس زمينه اجرا مي شود به اين معني که بلافاصله شکل اعلان ظاهر مي شود در حاليکه اجراي برنامه هنوز ادامه دارد.

  10. فرايندها (4) • دستور jobs ليست برنامه‌هايي که در پس‌زمينه در حال اجراست را نشان مي دهد. • براي اينکه يک فرايند را به صورت پس‌زمينه اجرا کنيم، در حين اجراي برنامه ctrl+z را زده و سپس دستور bg را اجرا مي‌کنيم. • دستور fg، برنامه اي که در پس زمينه است را به صورت پيش‌زمينه اجرا مي کند.

  11. اجراي دستور به صورت پيش زمينه 2 1 3 4 کليد ctr+z را بزنيد اين دستور فرايند را پس زمينه مي کند اين دستور مجددا فرايند را به صورت پيش زمينه در مي آورد. فرايندها (5) [taghi@linuxserver behnami]$ cat > a [1]+ Stopped cat >a [taghi@linuxserver behnami]$ bg [taghi@linuxserver behnami]$ fg cat >a

  12. فرايندها (6) • Daemons • فرايندهاي پس زمينه سيستمي را Daemon مي‌گوييم • اين فرايندها معمولاً در حين بوت شدن دستگاه اجرا مي شوند. • معمولاً اين نوع فرايندها با ترمينال کاري ندارند. UID PID PPID C STIME TTY TIME CMD root 5 1 0 1999 ? 00:00:14 [kswapd] bin 254 1 0 1999 ? 00:00:00 [portmap] root 307 1 0 1999 ? 00:00:23 syslogd -m 0 root 350 1 0 1999 ? 00:00:34 httpd در قسمت ترمينال ؟ آمده است. به اين معني که اين فرايند ترمينال ندارد.

  13. اين علامت باعث مي شود فرايند به صورت پس زمينه اجرا شود. شماره فرايند يا PID [root@penguinvm log]# sleep 10h & [1]6718 [root@penguinvm log]# ps -ef UID PID PPID C STIME TTY TIME CMD root 6718 6692 0 14:49 ttyp0 00:00:00 sleep 10h شمار کار يا job شمار فرايند پدر يا PPID ترمينالي که فرايند روي آن در حال اجرا است کسي که فرايند را ايجاد کرده است. فرايندها (7)

  14. فرايندها (8) • Real UID • در زمان ايجاد فرايند اين فيلد نشان دهنده نام کاربري است که اين فرايند را ايجاد کرده است. • Real GID • در زمان ايجاد فرايند اين فيلد نشان دهنده نام گروه اصلي است‌که ايجادكننده فرايند در آن عضويت دارد.

  15. فرايندها (9) • با دستور زير مي توانيد فيلدهايuid, gid فرايند جاري که همان شل است را مشاهده کنيد. $id uid=522(karamoz) gid=522(karamoz) groups=522(karamoz)

  16. فرايندها (10) • Effective UID • اين فيلد نشان دهنده کاربري است که فرايند با استفاده از اجازه‌هاي دسترسي آن به فايلها دستيابي انجام مي دهد. • اين فيلد به طور معمول همان مقدار Real UID را دارد. يعني همان کاربري که اين فرايند را ايجاد کرده است. • در صورتي که فايل داراي اجازه Setuid باشد مقدار اين فيلد برابر با UID صاحب فايل خواهد شد. • اين حالت در مورد برنامه‌هاي خاصي نظير passwd رخ مي دهد. • کاربري که اين فايل را اجرا مي کند فرايندي ايجاد مي‌کند فيلد effective uid آن برابر uid صاحب فايل (يعنيroot) خواهد شد و بدين وسيله اجازه دسترسي کاربر root را خواهد داشت.

  17. فرايندها (11) • Effective GID • اين فيلد نشان دهنده گروه کاربري است که فرايند با استفاده از اجازه‌هاي دسترسي آن به فايلها دستيابي انجام مي دهد. • اين فيلد به طور معمول همان مقدار Real GID را دارد. يعني گروه همان کاربري که اين فرايند را ايجاد کرده است. • در صورتي که فايل داراي اجازه Setgid باشد مقدار اين فيلد برابر با GID گروه فايل خواهد شد.

  18. فرايندها (12) • PID • اين فيلد يک شناسه منحصر به فرد است که در حين اجراييک فرايند به آن نسبت داده مي شود. • با اجراي هر فرايند جديد در سيستم اين فيلد افزايش مييابد • با دانستن شماره يک فرايند يا فيلد PID مي توانيم اطلاعات مختلفي راجع به فرايند استخراج کنيم از طريق دستورهايي مثل ps, pstree, jobs

  19. فرايندها (13) • PPID • فرايندي که يک فرايند جديد ايجاد مي کند پدر و فرايند جديد فرزند ناميده مي شود. فرايند پدر از طريق فيلد ppid شناخته مي شود.

  20. مد کاربر/هسته (1) • تمامي سيستم هاي عامل چند کاره و چند کاربره براي اجراي صحيح نياز به استفاده ازمود محافظت شده پردازنده‌هاي اينتل دارند. • کرنل يا هسته سيستم عامل در مود ممتاز اجرا مي شود • بقيه اجزاء سيستم عامل که همان برنامه ها يا فرايندها هستند در مود کاربر اجرا مي شوند. • برنامه‌هايي که در مود کاربر اجرا مي‌شوند براي انجام بعضي کارهاي سيستمي از طريق system call کد را در مود کرنل اجرا مي کنند.

  21. فرايند شماره 1 فرايند شماره 2 فرايند شماره 3 هاي مشخص‌شده system call فرايند شماره 1 فرايند شماره 2 فرايند شماره 3 مد کاربر/هسته (2) مود کاربر مود هسته

  22. مود کاربر/هسته (3) • در مود کاربر بعضي از دستورهاي پردازنده را نمي توان اجرا کرد. • مود کاربر به گونه‌اي است که هيچکدام از فرايندها نمي توانند در حوزه کار ديگري دخالت کند • در مود هسته تمامي دستورهاي پردازنده را مي توان اجرا کرد • در مود هسته برنامه در حال اجرا به تمامي اجزاء سيستم دسترسي دارد. ولي چون هسته به صورت امن نوشته شده است مشکلي براي بقيه به وجود نمي آيد.

  23. ps, pstree • ps: اين دستور گزارشي از وضعيت پردازش در سيستم شما مي‌دهد. • pstree: اين دستور نمودار درختي وضعيت پردازش در سيستم را نمايش مي دهد.

  24. [behnami@linuxserver behnami]$ ps PID TTY TIME CMD 5740 pts/2 00:00:00 bash 5784 pts/2 00:00:00 cat 5786 pts/2 00:00:00 top 5788 pts/2 00:00:00 ps [behnami@linuxserver behnami]$ اين دستور فرايندها را ليست کرده و وضعيت آن را به ما نشان مي دهد. ps

  25. ps • ps -ax: اين دستور ليست تمام فرايندهاي در حال اجراي سيستم را به ما نشان مي دهد. • ps -axl: با اين گزينه اطلاعات کاملتري در مورد هر فرايند به ما داده مي شود • ps -xf: گزينه f رابطه پدر-فرزندي بين فرايندها را مشخص مي کند.

  26. مدت زمان مصرف CPU فرايند در حال حاضر در اين تابع قرار دارد ايجاد کننده فرايند شماره فرايند پدر شماره فرايند وضعيت فرايند ميزان مصر ف حافظه اولويت ديناميک فرايند ميزان مصرف فضاي آدرس ps

  27. ps وضعيت يک فرايند • R: يعني در حال اجرا • S: يعني منتظر دريافت CPU • T: يعني متوقف شده است • W: نمي توان آن را به حافظه SWAP منتقل کرد • Z: پدر اين فرايند قبل از خود فرايند از بين رفته است. • N: فرايند اولويت پاييني دارد.

  28. pstree

  29. kill, killall • kill: از طريق اين دستور و دادن شماره يک process به آن فرايند، يک سيگنال ارسال مي کنيم. • براي ديدن ليست سيگنالهايي که مي توان به يک فرايند ارسال کرد دستور Kill -l را اجرا کنيد. • killall: با اين دستور مي توانيم به يک process از طريق نام آن سيگنال ارسال کنيم.

  30. free, top • free: اين دستور اطلاعاتي درباره حافظه استفاده شده و دست نخورده دستگاه شما مي دهد. • top: اين دستور ليست فرايندها را نشان مي دهد. اين دستور فرايندها را بر اساس ميزان مصرف منابعي چون حافظه و پردازنده مرتب مي کند.

  31. free کل حافظه موجود حافظه آزاد حافظه مصرف شده

  32. Top حافظه آزاد ايجاد کننده فرايند اولويت فرايند

  33. Top

  34. vmstat • vmstat: با اجراي اين دستور مي توانيم اطلاعات آماري در رابطه با حافظه، پردازنده و تعداد فرايندهاي دستگاه دريافت کنيم.

  35. تعداد وقفه ها و تعداد تعويض متن vmstat [behnami@linuxserver taghi]$ vmstat procs memory swap io system cpu r b swpd free buff cache si so bi bo in cs us sy wa id 1 0 1704 35900 105344 83724 0 0 7 5 109 228 14 0 0 86 [behnami@linuxserver behnami]$ وضعيت فرايندها وضعيت حافظه تعداد عمليات خواندن و نوشتن روي ديسک وضعيت مصرف پردازنده يعني هر يک ثانيه اطلاعات جديد را نشان بده

  36. id, w, uname, last • id: براي دريافت UIDها و GID کاربر جاري در سيستم از اين دستور استفاده مي شود. • w: اين دستور نشان مي دهد که چه کساني داخل سيستم شده اند و چه کاري انجام مي دهند. • who: نشان مي دهد که چه کساني وارد سيستم شده اند. • uname: اطلاعاتي درباره سيستم به کاربر مي دهد مثلا” از طريق پارامتر –sکاربر ميتواند از نسخه kernel آگاه شود. • last: اين دستور ليستي از اسامي کاربراني که وارد سيستم شده اند در اختيار شما قرار مي دهد.

  37. id • $id • uid=522(karamoz) gid=522(karamoz) groups=522(karamoz)

  38. who ترمينال از کجا وارد شده نام فرمان نام کاربر

  39. uname اين دستور اطلاعاتي در مورد کرنل سيستم به ما مي دهد

  40. last • اين دستور آخرين کساني را که روي سيستم وارد شده اند را نشان مي دهد. • علاوه بر نام افراد ساعت ورود و خروج آنها از سيستم نيز مشخص مي باشد.

  41. last ترمينال مورد استفاده وضعيت فعلي نام کاربر زمان وارد شدن به سيستم مدت زمان اتصال

  42. which, whereis, alias • which: براي بدست آوردن آدرس دقيق محل دستورات شل. • locate, whereis: براي بدست آوردن آدرس دقيق يک فايل • alias: اين دستور امکان تعريف دستورهاي کوتاه را به ما مي‌دهد. استفاده از اين دستور بدون پارامتر، alias هايي که از قبل ساخته شده است (مانند ll) را نمايش مي دهد.

  43. which اين دستور کمک مي‌کند تا مسير کامل يک فرمان را پيدا کنيم.

  44. locate, whereis • اين دو دستور کمک مي کند تا مسير کامل يک فايل را در سيستم پيدا کنيم. • اين دو دستور از پايگاه داده اي که توسط دستورهايupdatedb makewhatis ساخته شده است استفاده مي کنند.

  45. locate, whereis

  46. alias اين دستور امکان تعريف دستورهاي کوتاه را به ما مي دهد. در شکل زير نمونه اي از فرمانهاي تعريف شده را مشاهده مي کنيد.

  47. unalias, uptime • unalias: براي از بين بردن aliasهايي که از پيش ساخته ايم استفاده مي شود. • uptime: اين دستور نشان مي دهد که سيستم چه مدت است که روشن بوده است.

  48. فرايند هاي لينوکس - قسمت دوم • فرايند بوت شدن سيستم • Run level (آغازگر سيستم) • /etc/inittab چيست؟ • /etc/rc.d/rc#.d/ • /etc/rc.d/init.d/ • ntsysv, setup, chkconfig, tksysv • /proc

  49. فرايند بوت شدن سيستم • روشن کردن دستگاه • اجرايPOST • اجرايMBR • اجرايLoader • لود شدن سيستم عامل • اجرا شدن سيستم عامل • اجرا شدن اولين فرايند ( برنامه init) توسط کرنل • خوانده شدن /etc/inittab توسط برنامه init و اجراي دستورات مطابق runlevel پيش فرض

  50. runlevel (1) • اين فايل حاوي پيکربنديrunlevelهاي مختلف سيستم‌عامل لينوکس مي باشد. • Runlevel رفتار يا حالت سيستم عامل موقع بوت شدن را معرفي مي کند. اين رفتار را مي توان از طريق فايل /etc/inittab تغيير داد.

More Related