معرفی init process و runlevel ها در لینوکس – قسمت دوم

همانطور که در قسمت قبلی مشاهده کردید بعد از اینکه کرنل Boot می شود همیشه یک برنامه به نام init را اجرا می کند. بعد از اجرای init این برنامه تنظیماتی که باید انجام دهد را از داخل یک فایل به نام inittab می خواند و اجرا می کند که این فایل در مسیر //etc//inittab قرار گرفته است. شما به عنوان شخصی که می خواهید وارد دنیای لینوکس شوید باید با ساختار داخلی و نحوه کاری تنظیمات این فایل آشنا شوید به همین دلیل می توانید در ادامه مثالی از محتویات یک فایل inittab که از سیستم عامل لینوکس توزیع Debian گرفته شده است را می توانید مشاهده کنید ، توجه کنید که در فایل های پیکربندی سیستم عامل لینوکس هر جا ابتدای خط علامت # مشاهده کردید یعنی خط مورد نظر فقط توضیحات است و اجرا نمی شود :


root@cdn-bov1:~# cat /etc/debian_version 
6.0.3
root@cdn-bov1:~# cat /etc/inittab 
# /etc/inittab: init(8) configuration.
# $Id: inittab,v 1.91 2002/01/25 13:35:21 miquels Exp $

# The default runlevel.
id:2:initdefault:

# Boot-time system configuration/initialization script.
# This is run first except when booting in emergency (-b) mode.
si::sysinit:/etc/init.d/rcS

# What to do in single-user mode.
~~:S:wait:/sbin/sulogin

# /etc/init.d executes the S and K scripts upon change
# of runlevel.
#
# Runlevel 0 is halt.
# Runlevel 1 is single-user.
# Runlevels 2-5 are multi-user.
# Runlevel 6 is reboot.

l0:0:wait:/etc/init.d/rc 0
l1:1:wait:/etc/init.d/rc 1
l2:2:wait:/etc/init.d/rc 2
l3:3:wait:/etc/init.d/rc 3
l4:4:wait:/etc/init.d/rc 4
l5:5:wait:/etc/init.d/rc 5
l6:6:wait:/etc/init.d/rc 6

# Normally not reached, but fallthrough in case of emergency.
z6:6:respawn:/sbin/sulogin

# What to do when CTRL-ALT-DEL is pressed.
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now

# Action on special keypress (ALT-UpArrow).
#kb::kbrequest:/bin/echo "Keyboard Request--edit /etc/inittab to let this work."

# What to do when the power fails/returns.
pf::powerwait:/etc/init.d/powerfail start
pn::powerfailnow:/etc/init.d/powerfail now
po::powerokwait:/etc/init.d/powerfail stop

# /sbin/getty invocations for the runlevels.
#
# The "id" field MUST be the same as the last
# characters of the device (after "tty").
#
# Format:
#  :::
#
# Note that on most Debian systems tty7 is used by the X Window System,
# so if you want to add more getty's go ahead but skip tty7 if you run X.
#
1:2345:respawn:/sbin/getty 38400 tty1
2:23:respawn:/sbin/getty 38400 tty2
3:23:respawn:/sbin/getty 38400 tty3
4:23:respawn:/sbin/getty 38400 tty4
5:23:respawn:/sbin/getty 38400 tty5
6:23:respawn:/sbin/getty 38400 tty6

# Example how to put a getty on a serial line (for a terminal)
#
#T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100
#T1:23:respawn:/sbin/getty -L ttyS1 9600 vt100

# Example how to put a getty on a modem line.
#
#T3:23:respawn:/sbin/mgetty -x0 -s 57600 ttyS3


شاید با دیدن خطوط بالا کمی هول شده باشد اما توجه کنید که همه این خطوط معنا و مفهوم و صد البته قالب مشخصی دارند که با شناسایی این نحوه نوشتار متوجه می شوید که هر خط چه کاری انجام می دهد ، اکثر موجودیت ها یا entry هایی که در inittab وجود دارد از یک قالب و ساختار مشخص مشابه زیر استفاده می کنند :
id:runlevels:action:process
تمامی خطوطی که در فایل مثال بالا مشاهده می کنید و با علامت # در ابتدای آنها مشخص شده اند به هیچ عنوان اجرا نمی شوند و به عنوان توضیحات فایل در نظر گرفته می شوند اما در خصوص ساختار و قالبی که در خط بالا عنوان کردیم هر کدام معنی و مفهوم خاصی را می رسانند که به صورت زیر تشریح می شوند :

  1. Id یا شناسه : یک موجودیت منحصر به فرد و ترتیبی است که در inittab است و می تواند بین 1 تا 4 کاراکتر باشد
  2. runleveles : سطح runlevel ای را مشخص می کند که action یا فعالیت مورد نظر ما باید در آن انجام شود
  3. action : مشخص کننده عملیات یا فرآیند هایی است که قرار است انجام شود
  4. process : همانطور که از نامش هم پیداست مشخص کننده process ای هست که قرار است اجرا شود ، اگر فیلد process با استفاده از یک کاراکتر + شروع شود init برای آن process فرآیند های utmp و wtmp را انجام نخواهد داد. در خصوص این فرآیندها بعدا بصورت مفصل صحبت خواهیم کرد.

فیلد runleveles می تواند شامل چندین کاراکتر مختلف به عنوان runlevel های مختلف باشد برای مثال اگر شما 123 را در این فیلد مشاهده کردید به این معنا است که process مورد نظر در runlevel های 1 و 2 و 3 می تواند شروع شود . runlevel هایی که بصورت موجودیت های ondemand مشخص شده اند با استفاده از کاراکترهای A ، B و C مشخص می شوند. Runlevel هایی که در فیلد sysinit ، boot و bootwait وجود دارند صرف نظر می شوند. توجه کنید که زمانیکه system runlevel تغییر کند تمامی process هایی که رای runlevel جدید تعریف نشده اند توسط سیستم kill می شوند و از روند پردازشی خارج می شوند. اما مهمترین فیلد و البته پیچیده ترین فیلدی که در ساختار فایر inittab وجود دارد فیلد action است که Action های معتبری که می توانند در این قسمت قرار بگیرند به شکل زیر می باشند :

  1. respawn : پردازش مورد نظر بعد از اینکه به پایان رسید restart می شود
  2. wait : پردازش مورد نظر یکبار با اجرای runlevel مورد نظر start می شود و init تا زمانیکه process تمام شود صبر می کند
  3. once : پردازش به محض اینکه runlevel مورد نظر وارد شود یکبار اجرا می شود
  4. boot : پردازش در زمان بوت سیستم اجرا می شود و به فیلد runlevel اهمیتی داده نمی شود
  5. bootwait : پردازش در زمان بوت سیستم اجرا می شود و init منتظر پایان یافتن process مورد نظر باقی می ماند ، فیلد runlevel هم اهمیتی داده نمی شود
  6. off : این هیچ کاری نمی کند ( همینجوری واسه قشنگیه )
  7. ondemand : پردازش ای که بصورت ondemand مشخص م ود زمانی اجرا می شوند که runlevel بصورت ondeman اجرا شود.
  8. initdefault : ای قسمت تعریف کننده runlevel ای است که در همگام بوت سیستم بایستی وارد شود ، اگر هیچ موجودیتی در این قسمت وارد نشود init بصورت خودکار از شما در این خصوص سئوال می کند ، در این حالت فیلد process در نظر گرفته نمی شود.
  9. sysinit : پردازش مورد نظر در زمان بوت سیستم اجرا می شود ، sysinit قبل از boot و bootwait اجرا می شود و runlevel هم در این حالت نادیده گرفته می شود
  10. powerwait : پردازش زمانی اجرا می شود که برق از سیستم گرفته می شود ، init از این process به عنوان process ای یاد می کند که با دستگاه UPS ارتباط برقرار می کند. Init منتظر این process می ماند تا اینکه بصورت کامل تمام شود.
  11. powerfail : همانند powerwait است با این تفاوت که init منظر تمام شدن این process نمی ماند
  12. powerokwait : این process زمانی اجرا می شود که init اعلام کند که power یا برق به سیستم برگشته است
  13. powerfail : این process زمانی اجرا می شود که init اعلام کند که برق UPS در حال تمام شدن است یا UPS خالی شده است البته توجه کنید که اینگونه entry ها نیازمند سیستم مانیتورینگی هستند که وضعیت UPS ها را اطلاع دهند.
  14. ctrlaltdel : این process زمانی اجرا می شود که init سیگنال SIGINT را دریافت کند. به این معنی که یک نفر که بصورت کنسولی از سیستم در حال استفاده است همزمان کلیدهای CTRL و ALT و DEL را فشرده است.
  15. kbrequest : این process زمانی اجرا می شود که init متوجه شود که از طرف کیبورد کلید های ترکیبی وارد شده است.

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

نویسنده : محمد نصیری
منبع : انجمن تخصصی فناوری اطلاعات ایران
هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد

#init_process_در_لینوکس #معرفی_انواع_runlevel_در_لینوکس #init_چیست #inittab_چیست #runlevel_در_لینوکس_چیست
عنوان
1 معرفی init process و runlevel ها در لینوکس – قسمت اول رایگان
2 معرفی init process و runlevel ها در لینوکس – قسمت دوم رایگان
زمان و قیمت کل 0″ 0
7 نظر
قدیر یُلمه

با سلام.در خط ۳ نحوه را به اشتباه (تحوه) نوشتین! ممنون میشم ادیتش کنین تا بقیه دوستان راحت تر متوجه بشن

محمد نصیری

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

قدیر یُلمه

والا مهندس من اولا خودم چیز زیادی بلد نیستم..اون حرفم زدم بابت این بود که مقاله تون مثل همیشه بی عیب و نقص باشه..وگرنه که ما همیشه مدیون شما هستیم بزرگوار..و راضی هستم ازتون خدا خیرتون بده 

قدیر یُلمه

بنده اگر در زمینه شبکه یا لینوکس چیزی بدونم همه اش بخاطر شما و اساتید دیگست..ببخشید اگر لحن گفتار من کمی کج بوده.منظوری نداشتم..فقط میخواستم مطالبتون مثل خودتون همه چیش اوکی باشه

محمد نصیری

سپاسگزارم ، مطلب ویرایش شد

قدیر یُلمه

ممنون از اهمیت شما بزرگوار به حرف بنده احقر..ان شاءالله همه بتونیم به حوزه ای تی کشور کمک کنیم!


محمد عابدینی

سلام و عرض ادب


واقعا باید تبریک گفت به این همه زیر بینی،

نظر شما
برای ارسال نظر باید وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر
×

تو می تونی بهترین نتیجه رو تضمینی با بهترین های ایران بدست بیاری ، پس مقایسه کن و بعد خرید کن : فقط توی جشنواره تابستانه می تونی امروز ارزونتر از فردا خرید کنی ....