سرويس ها در لينوکس
لينوکس به هنگام بوت، تعدادي سرويس (Service) سيستمي را راه اندازي مي کند که کارهاي گوناگوني را انجام مي دهند. اين پراسس ها (1) تقريباً معادل سرويس هاي ويندوز هستند، اما عمليات آنها در لينوکس متفاوت است. در لينوکس، زمان کل گروه هاي سرويس ها - که در عمليات راه اندازي بار مي شوند- و حتي ترتيب دقيق به اجرا در آمدن آنها را مي توانيد کنترل کنيد. تحت شرايط ويژه، بعضي از نگارش هاي لينوکس به شما امکان مي دهند که مشخص کنيد که کدام پراسس ها به اجرا در آيند. رفتار هر نوع پراسس مربوط به استارت آپ (2) را به آساني مي توانيد تغيير بدهيد، يا پراسس ها را به آساني مي توانيد اضافه يا حذف کنيد.
فايل inittab به init مي گويد که تنظيم هاي پايه سيستمي، مانند runlevel پيش فرض را چگونه برپا کند. يک runlevel با عدد جلوي خود به لينوکس مي گويد که کدام گروه از سرويس ها بايد به اجرا در آيد و چگونه بايد رفتار کند. runlevel ها معمولاً از 0 ( خاموش سازي) تا 6 ( بازبوت کردن سيستم) شماره گذاري مي شوند. اکثر نگارش هاي لينوکس runlevel را روي 3 يا 5 ميزان مي کنند. runlevel 3 و runlevel 5 هر دو به کاربران ديگر امکان مي دهند که به حساب خود وارد شوند، و هر دو شبکه را فعال مي کنند؛ runlevel 3 يک ارتباط متني با سيستم عامل را فراهم مي کند، در حالي که runlevel 5 يک ارتباط گرافيکي با سيستم عامل را فراهم مي کند. runlevel 1، که به حالت تک کاربري مشهور است، همه سرويس ها، و شبکه را غير فعال مي کند، و به کاربران ديگر اجازه نمي دهد که وارد حساب خود شوند. در نتيجه، براي بازسازي و تعمير سيستم عامل اغلب از اين runlevel بهره گرفته مي شود.
اگر به داخل هريک از ديرکتوري هاي rc نگاه کنيد، متوجه اسکريپت هايي (4) خواهيد شد که لينک هايي به اسکريپت هاي واقع در etc/init.d/ هستند. اگر يک اسکريپت يک سرويس را انجام بدهد عمليات آسان تر مي شود، چون هرگاه به آن سرويس ويژه نياز داشته باشيد به آن لينک خواهيد کرد. به عنوان مثال، نظر به اين که در بسياري از مواقع دستيابي شبکه لازم است، يک اسکريپت براي دستيابي به شبکه وجود دارد. در نتيجه، براي runlevelهاي مختلفي که در آنها مي خواهيد بتوانيد از شبکه استفاده کنيد کافي است به آن اسکريپت لينک کنيد. فرض کنيد اسکريپت استارت آپ اختصاصي خودتان را با نام «myscript» در ديرکتوري etc/init.d/ ساخته ايد. اگر بخواهيد myscript در runlevel 5 به اجرا در آيد، بايد به ديرکتوري etc/init.d/rc5.d/ برويد و عبارت زير را تايپ کنيد:
In-s../myscript./S99myscript
اين فرمان، myscript را پس از اسکريپت هاي ديگر در runlevel5 اجرا مي کند.
اما هنگامي که لينوکس وارد يک runlevel مي شود اين اسکريپت ها چگونه در مي يابند که بايد اجرا شوند يا نبايد کاري کنند؟ هنگامي که init هر يک از اسکريپت هاي استارت آپ را پردازش مي کند، يک فرمان start يا stop مي فرستد. به عنوان مثال، اگر به اسکريپت استارت آپ etc/init.d/ خود نگاه کنيد، کد جستجو کننده فرمان هاي start و stop را در آن خواهيد ديد.هرگاه يک اسکريپت استارت آپ، فرمان مربوط به خود را از init دريافت کند اين بخش فرمان هاي start و stop از کد دقيقاً آنچه را بايد رخ دهد مي گويد.
در اين نگارش ها، يک استارت آپ اضافي، etc/rc.local/ ، وجود دارد که در اواخر عمليات بوت اجرا مي شود. هدف rc.local راه اندازي سرويس هايي در يک سيستم است که فقط براي آن سيستم خاص بومي هستند. در نتيجه، در جايي که اسکريپت هاي rc ممکن است در ميان چند ماشين در يک محيط خاص مشترک باشند، rc.local بايد «سيستم- ويژه» يا وابسته به سيستم باشد.
امکان رفتن از يک runlevel به runlevel ديگر خصوصيتي است که کاربران ويندوز اصلاً در اختيار ندارند. در ويندوز مي توانيد در چند حالت مختلف بوت کنيد، که حالت هاي Safe Mode و normal Windows دو حالت متداول هستند. اما هرگاه به يکي از اين حالت ها بوت کنيد، ديگر نمي توانيد به حالتي ديگر برويد. در runlevelهاي لينوکس، مي توانيد با يکي از حالت هاي چند کاربري معمول، با امکانات شبکه، و GUI بوت کنيد، و هنگامي که لازم باشد، مي توانيد به حالت تک کاربري برويد.
يکي از دلايل مشکل تر بودن آلوده سازي يک کامپيوتر لينوکس در مقايسه با يک کامپيوتر ويندوز همين امکان رفتن از يک runlevel به runlevel ديگر است. حتي در Safe Mode ويندوز، تعدادي سرويس سطح پايين، مانند سرويس Event Viewer وجود دارد که باز هم اجرا مي شوند. اما هنگامي که در لينوکس به حالت تک کاربري مي رويد، فقط شما هستيد و کِرنِل يا هسته لينوکس. هيچ چيز ديگري در حال اجرا نيست. بدين معني که يک سرويس ويندوز مي تواند تعداد زيادي از پراسس ها را آلوده کند و در هر حالتي که شما بوت کنيد باز هم به اجرا در بيايد. اما براي اين که آلودگي يک سيستم لينوکس دائمي شود بايد خود کِرنِل آلوده شود.
براي مشخص کردن runlevel جاري سيستم خود، يک پنجره ترمينال را باز کنيد و
فرمان who-r را تايپ کنيد.
بنابراين، درک چگونگي اجرا شدن سرويس هاي سيستمي لينوکس نبايد دشوار باشد.
پي نوشتها:
1)process
2)startup
3)kernel
4)script
5)driver
6)server
منبع:ريزپردازنده، شماره 188
/ج
در خدمت شما
فايل inittab به init مي گويد که تنظيم هاي پايه سيستمي، مانند runlevel پيش فرض را چگونه برپا کند. يک runlevel با عدد جلوي خود به لينوکس مي گويد که کدام گروه از سرويس ها بايد به اجرا در آيد و چگونه بايد رفتار کند. runlevel ها معمولاً از 0 ( خاموش سازي) تا 6 ( بازبوت کردن سيستم) شماره گذاري مي شوند. اکثر نگارش هاي لينوکس runlevel را روي 3 يا 5 ميزان مي کنند. runlevel 3 و runlevel 5 هر دو به کاربران ديگر امکان مي دهند که به حساب خود وارد شوند، و هر دو شبکه را فعال مي کنند؛ runlevel 3 يک ارتباط متني با سيستم عامل را فراهم مي کند، در حالي که runlevel 5 يک ارتباط گرافيکي با سيستم عامل را فراهم مي کند. runlevel 1، که به حالت تک کاربري مشهور است، همه سرويس ها، و شبکه را غير فعال مي کند، و به کاربران ديگر اجازه نمي دهد که وارد حساب خود شوند. در نتيجه، براي بازسازي و تعمير سيستم عامل اغلب از اين runlevel بهره گرفته مي شود.
اگر به داخل هريک از ديرکتوري هاي rc نگاه کنيد، متوجه اسکريپت هايي (4) خواهيد شد که لينک هايي به اسکريپت هاي واقع در etc/init.d/ هستند. اگر يک اسکريپت يک سرويس را انجام بدهد عمليات آسان تر مي شود، چون هرگاه به آن سرويس ويژه نياز داشته باشيد به آن لينک خواهيد کرد. به عنوان مثال، نظر به اين که در بسياري از مواقع دستيابي شبکه لازم است، يک اسکريپت براي دستيابي به شبکه وجود دارد. در نتيجه، براي runlevelهاي مختلفي که در آنها مي خواهيد بتوانيد از شبکه استفاده کنيد کافي است به آن اسکريپت لينک کنيد. فرض کنيد اسکريپت استارت آپ اختصاصي خودتان را با نام «myscript» در ديرکتوري etc/init.d/ ساخته ايد. اگر بخواهيد myscript در runlevel 5 به اجرا در آيد، بايد به ديرکتوري etc/init.d/rc5.d/ برويد و عبارت زير را تايپ کنيد:
In-s../myscript./S99myscript
اين فرمان، myscript را پس از اسکريپت هاي ديگر در runlevel5 اجرا مي کند.
اما هنگامي که لينوکس وارد يک runlevel مي شود اين اسکريپت ها چگونه در مي يابند که بايد اجرا شوند يا نبايد کاري کنند؟ هنگامي که init هر يک از اسکريپت هاي استارت آپ را پردازش مي کند، يک فرمان start يا stop مي فرستد. به عنوان مثال، اگر به اسکريپت استارت آپ etc/init.d/ خود نگاه کنيد، کد جستجو کننده فرمان هاي start و stop را در آن خواهيد ديد.هرگاه يک اسکريپت استارت آپ، فرمان مربوط به خود را از init دريافت کند اين بخش فرمان هاي start و stop از کد دقيقاً آنچه را بايد رخ دهد مي گويد.
در اين نگارش ها، يک استارت آپ اضافي، etc/rc.local/ ، وجود دارد که در اواخر عمليات بوت اجرا مي شود. هدف rc.local راه اندازي سرويس هايي در يک سيستم است که فقط براي آن سيستم خاص بومي هستند. در نتيجه، در جايي که اسکريپت هاي rc ممکن است در ميان چند ماشين در يک محيط خاص مشترک باشند، rc.local بايد «سيستم- ويژه» يا وابسته به سيستم باشد.
اجراي سرويس ها پس از بوت شدن لينوکس
امکان رفتن از يک runlevel به runlevel ديگر خصوصيتي است که کاربران ويندوز اصلاً در اختيار ندارند. در ويندوز مي توانيد در چند حالت مختلف بوت کنيد، که حالت هاي Safe Mode و normal Windows دو حالت متداول هستند. اما هرگاه به يکي از اين حالت ها بوت کنيد، ديگر نمي توانيد به حالتي ديگر برويد. در runlevelهاي لينوکس، مي توانيد با يکي از حالت هاي چند کاربري معمول، با امکانات شبکه، و GUI بوت کنيد، و هنگامي که لازم باشد، مي توانيد به حالت تک کاربري برويد.
يکي از دلايل مشکل تر بودن آلوده سازي يک کامپيوتر لينوکس در مقايسه با يک کامپيوتر ويندوز همين امکان رفتن از يک runlevel به runlevel ديگر است. حتي در Safe Mode ويندوز، تعدادي سرويس سطح پايين، مانند سرويس Event Viewer وجود دارد که باز هم اجرا مي شوند. اما هنگامي که در لينوکس به حالت تک کاربري مي رويد، فقط شما هستيد و کِرنِل يا هسته لينوکس. هيچ چيز ديگري در حال اجرا نيست. بدين معني که يک سرويس ويندوز مي تواند تعداد زيادي از پراسس ها را آلوده کند و در هر حالتي که شما بوت کنيد باز هم به اجرا در بيايد. اما براي اين که آلودگي يک سيستم لينوکس دائمي شود بايد خود کِرنِل آلوده شود.
براي مشخص کردن runlevel جاري سيستم خود، يک پنجره ترمينال را باز کنيد و
فرمان who-r را تايپ کنيد.
بنابراين، درک چگونگي اجرا شدن سرويس هاي سيستمي لينوکس نبايد دشوار باشد.
پي نوشتها:
1)process
2)startup
3)kernel
4)script
5)driver
6)server
منبع:ريزپردازنده، شماره 188
/ج