PDA

View Full Version : دیمون چیست؟



whitehat
یک شنبه 18 مرداد 1383, 12:04 عصر
با اجازه استاد خوبم آقای حسین زاده سوال دوم را من مطرح می کنم.
1) دیمون ها چیستند ؟
2) برای راه اندازی و توقف آن باید از چه دستوری استفاده کرد؟
3) برای اجرا شدن خودکار آن در ابتدای بوت باید چه فایلی را ویرایش کرد؟
(آقای حسین زاده در صورت لزوم آنرا ویرایش کنید)

whitehat
شنبه 24 مرداد 1383, 11:09 صبح
سلام
با اینکه این تاپیک را 20 نفر خوانده اند ولی هیچ کس جواب نداد .امیدوارم فعالیت در این بخش بیشتر بشود :)
دیمون مخفف Disk And Execution MONitor است .در سیستم عامل لینوکس و یونیکس پروسه ایی از سیستم عامل در پس زمینه (background) اجرا می شوند. که نقشهای کلیدی برای عملکرد سیستم دارند .این پروسه های پس زمینه که در اصل بخشی از سیستم عامل محسوب می شوند ولی خودشان به عنوان یک پروسه از سیستم عامل استفاد می کنند دیمون نامیده می شوند.
دیمون ها معمولا بر اساس سرویسی ک ارائه می دهند نام گزاری می شوند و در انتهای آن یک d به معنی دیمون قرار می گیرد .مانند ftpd و httpd و initd ....
امیدوارم سوال ای دیگر را دوستان جواب بدند . و این بخش از سوت و کوری در بیاید :wink:
موفق باشید

hosseinzadeh
شنبه 24 مرداد 1383, 19:36 عصر
دیمونها در حقیقت در ابتدای بوت سیستم اجرا می شوند و به صورت نیمه فعال در می آیند(در حقیقت چرت می زنند!)اما به محض این که برنامه ای آن ها را درخواست کرد،به حالت فعال در می آیند و کار کردن را آغاز می کنند.

hosseinzadeh
پنج شنبه 26 شهریور 1383, 18:22 عصر
به قول داریوش؛من از این همکاری گرم شما متشکرم!
به هر حال ،جواب سوالات بعد البته در زوزه*:
من این قضیه رو توی زوزه توضیح می دم:
اسکریپتهایی که سیستم را کنترل می کنند در /etc/init.d وجود دارند.اینها توسط /sbin/init (به طور مستقیم یا غیر مستقیم) اجرا می شوند.(این پراسس پدر تمامی پراسسهاست!)تنظیمات این پراسس همان طور که گفته شد در فایل /etc/inittab موجود است.(ر.ک:RunLevel)
در زمان بوت،فایل /etc/int.d/boot اجرا می شود که وظیفه آن آغاز به کار سیستم است.این فایل تعدادی از وظایف اولیه را انجام می دهد (مانند چک کردن فایل سیستم)وهمچنین اسکریپتهای اجرایی تعدادی از سخت افزارها را هم که در /etc/init.d/boot.d وجود دارند اجرا می کنند.بعد از این نوبت به اسکرپتهای محلی می رسد که در /etc/init.d/boot.local موجودند(ممکن است هیچ اسکرپتی وجود نداشته باشد)،
لیست فایلهای عمومی init.d

/etc/init.d/*


/etc/init.d/boot


/etc/init.d/boot.local


/etc/init.d/halt
/etc/init.d/halt.local
/etc/init.d/rc
/etc/init.d/reboot
/etc/init.d/skeleton
/etc/init.d/single
/etc/init.d/boot.d/S[0-9][0-9]*
/etc/init.d/rc0.d/{K,S}[0-9][0-9]*
/etc/init.d/rc1.d/{K,S}[0-9][0-9]*
/etc/init.d/rc2.d/{K,S}[0-9][0-9]*
/etc/init.d/rc3.d/{K,S}[0-9][0-9]*
/etc/init.d/rc4.d/{K,S}[0-9][0-9]*
/etc/init.d/rc5.d/{K,S}[0-9][0-9]*
/etc/init.d/rc6.d/{K,S}[0-9][0-9]*
/etc/init.d/rcS.d/{K,S}[0-9][0-9]*
/etc/inittab
/etc/sysconfig
همچنین تعداد زیادی دیمون و پراسس هم وجود دارند مانند:

coldplug cron cups esound fbset gpm halt halt.local hotplug hwscan init.txt isdn
joystick kbd ksysguardd mdadmd microcode network nfs nfsboot nfslock nfsserver nscd openct pcscd portmap postfix powerfail powersaved ptal random raw rc rc0.d rpasswdd rpmconfigcheck sane saslauthd setseria skeleton slpd smbfs smpppd snmpd
بعد از این قضایا ،پراسس init به طور خودکار به یکی از سطوح اجرایی(RunLevel) می رود.این مطالب البته در تاپیک قبلی تا حدودی توضیح داده شده اند.
پراسس init فایلی به نام rc را که در/etc/init.d موجود است،اجرا می کند.این فایل وظیفه کنترل سطوح اجرایی را به عهده دارد.این پراسس ،با توجه به سطح اجرایی پیش فرض ، پراسسها و دیمونهای مربوطه را اجرا می کند.
این پراسسها به صورت لینک نمادین در دایرکتوریهایی به صورت rc<runlevelnumber>.d وجود دارند.دلیل لینک بودن این است که به برنامه های اصلی آسیبی نرسد.
مثلا لینکهای مربوط به سطح اجرایی 5(حالت گرافیکی) در /etc/init.d/rc5.d موجود است.
لیست فایلهای rc5.d

.
..
K07splash_late
K07xdm
K08cron
K08hwscan
K08nscd
K09cups
K09splash
K10alsasound
K10fbset
K10powersaved
K14portmap
K14resmgr
K14splash_early
K16syslog
K17network
K20coldplug
K21hotplug
K21random
S01hotplug
S01random
S02coldplug
S05network
S06syslog
S08resmgr
S08splash_early
S12alsasound
S12fbset
S12powersaved
S13kbd
S13splash
S14cron
S14hwscan
S14nscd
S15splash_late
S15xdm


در این دایرکتوریها دو نوع لینک وجود دارد:لینکهای آغاز و پایان.گروه اول هنگامی که وارد سطح اجرایی می شوید اجرا می شود و گروه دوم هنگامی که از سطح اجرایی خارج می شوید،خاتمه می یابد.
به منظور جلوگیری از شروع و پایان بیهوده پراسسها ،تنها پراسس هایی آغاز به کار می کنند که در سطح اجرایی قبلی اجرا نشده باشند،و تنها پراسسهایی پایان می یابند که لینکی برای پایان دادن به آنها،در سطح اجرایی جاری وجود نداشته باشد.
برای کنترل ساده این سیستم،آغاز هر لینک با S (Startup) یا K (Kill) آغاز می شود.که اولی به معنای آغاز و دومی به معنای پایان کار است.
بعد از S و K عددی را مشاهده می کنید.این عدد اولویت یا Priority را مشخص می کند.هر چقدر این عدد کمتر باشد پراسس یا دیمون زودتر اجرا و خاتمه می یابد.
همچنین تعدادی از متغیرها مربوط به موارد نصب شده در سیستم در /etc/sysconfig موجود اند که می توانید با YaST یا یک ادیتور معمولی آن را ویرایش کنید.فراموش نکنید که باید /sbin/SuSEconfig را اجرا کنید تا تغییراتتان عملی شود.

مثال عملی:
دیمون چاپ خطی در /etc/init.d/lpd وجود دارد.می توانید آن را به این صورت اجرا کنید,:
~:lpd start
و اینگونه به کارش پایان بدهید:
~:lpd stop
برای اجرای خودکار آن در سطح اجرایی 3 باید این لینکها وجود داشته باشند:

/etc/init.d/rc3.d/S20lpd -> ../lpd

/etc/init.d/rc3.d/K20lpd -> ../lpd
مشاهده میکنید که دو لینک با S و K وجود دارند،که برای آغاز و پایان دیمون به کار می روند.توجه داشته باشید که بهتر است عدد لینک آغازین،از عدد لینک مربوط به سرویس شبکه بیشتر باشد و عدد لینک پایانی،از عدد لینک مربوط به سرویس شبکه کمتر باشد تا بعد از آن اجرا و قبل از آن خاتمه بیابد.
نکات:
1-گرچه می توانید اطلاعات مربوط به دیمونها را به سادگی عوض کنید،اما از تعویض بدون دلیل آنها خودداری کنید.
2-اگر در کار یکی از سطوج اجرایی مشکلی پیش آمد،می توانید از سطح اجرایی دیگر وارد شوید و اطلاعات دیگر را تصحیح کنید.(نقطه قوت لینوکس)
3-در لینوکس زوزه می توانید بسیاری از این کارها با Yast انجام دهید.

<HR></HR>
*:این قضیه ممکن است در لینوکسهای دیگر من جمله اسلک و البته سیستم های مبتنی بر BSD متفاوت باشد.

mrheidari
جمعه 27 شهریور 1383, 20:35 عصر
معرکه بود

harvard
چهارشنبه 21 بهمن 1383, 13:52 عصر
سلام
inetd یکی از پروسس هایی میباشد که توسط init در شروع بوت کامپیوتر اجرا میشود این پروسس وظیفه گوش ایستادن بر روی پورتها و راه اندازی سرویس ها را هنگام نیاز به عهده دارد تفاوت این پروسس با init در این است که این برنامه ه بیشتر مربوط به سزویس های شبکه است در طول زمان روشن لبودن کامپیوتر اجرا میشود حال آنکه init با اتمام عمل boot کار خود را خاتمه میدهد
:sunglass: