Init គឺជាមាតាបិតានៃដំណើរការទាំងអស់។ តួនាទីចម្បងរបស់វាគឺបង្កើតដំណើរការពីស្គ្រីបដែលផ្ទុកនៅក្នុងឯកសារ / etc / inittab (សូមមើល inittab (5)) ។ ឯកសារនេះជាទូទៅមានធាតុដែលបណ្តាលឱ្យ ផ្តេសផ្តា សលើបន្ទាត់នីមួយៗដែលអ្នកប្រើប្រាស់អាចចូលបាន។ វាក៏គ្រប់គ្រងដំណើរការស្វយ័តដែលតម្រូវដោយប្រព័ន្ធពិសេសណាមួយ។
កម្រិតរត់
កម្រិតរត់ គឺជាការកំណត់រចនាសម្ព័ន្ធកម្មវិធីនៃប្រព័ន្ធដែលអនុញ្ញាតឱ្យមានក្រុមដំណើរការដែលបានជ្រើសប៉ុណ្ណោះ។ ដំណើរការដែលបង្កើតដោយ init សម្រាប់កម្រិតរត់ទាំងនេះនីមួយៗត្រូវបានកំណត់ក្នុងឯកសារ / etc / inittab ។ Init អាចស្ថិតក្នុង ដំណាក់កាល មួយនៃ 8 កម្រិតរត់: 0-6 និង S ឬ s ។ កម្រិតរត់ត្រូវបានផ្លាស់ប្តូរដោយមានអ្នកប្រើពិសេសដែលរត់ telinit ដែលផ្ញើសញ្ញាត្រឹមត្រូវទៅ init ហើយប្រាប់វាថាកម្រិតកម្រិតណាដើម្បីផ្លាស់ប្តូរ។
កម្រិតរត់ 0 , 1 និង 6 ត្រូវបានរក្សា។ កម្រិតរត់ទី 0 ត្រូវបានប្រើដើម្បីផ្អាកប្រព័ន្ធកម្រិតរត់ទី 6 ត្រូវបានប្រើដើម្បីចាប់ផ្តើមប្រព័ន្ធឡើងវិញហើយកម្រិតរត់ទី 1 ត្រូវបានប្រើដើម្បីឱ្យប្រព័ន្ធធ្លាក់ចុះទៅជារបៀបអ្នកប្រើតែមួយ។ Runlevel S មិនមានន័យថាត្រូវប្រើដោយផ្ទាល់នោះទេប៉ុន្តែបន្ថែមទៀតសម្រាប់ស្គ្រីបដែលត្រូវបានប្រតិបត្តិនៅពេលចូលទៅកាន់កម្រិតរត់ 1. សម្រាប់ព័ត៌មានបន្ថែមសូមមើលទំព័រមុខសម្រាប់ បិទ (8) និង inittab (5) ។
កម្រិតរត់ 7-9 ក៏មានសុពលភាពផងដែរទោះបីជាមិនមានឯកសារច្បាស់លាស់ក៏ដោយ។ នេះដោយសារតែ "ប្រពៃណី" យូនីកធម្មតាមិនប្រើវា។ ក្នុងករណីដែលអ្នកចង់ដឹងចង់ឃើញកម្រិតរត់និង S មានកម្រិតដូចគ្នា។ នៅខាងក្នុងពួកគេគឺជាឈ្មោះក្លែងក្លាយសម្រាប់កម្រិតរត់ដូចគ្នា។
ចាប់ផ្ដើម
បន្ទាប់ពី init ត្រូវបានគេចាត់ទុកថាជាជំហានចុងក្រោយនៃលំដាប់ចាប់ផ្ដើមខឺណែលវារកមើលឯកសារ / etc / inittab ដើម្បីមើលថាតើមានធាតុរបស់ initdefault ប្រភេទណា (សូមមើល inittab (5)) ។ ធាតុ initdefault កំណត់កម្រិតរត់ដំបូងរបស់ប្រព័ន្ធ។ ប្រសិនបើគ្មានធាតុបែបនេះទេ (ឬគ្មាន / etc / inittab ទាំងអស់) កម្រិតរត់ត្រូវបានបញ្ចូលនៅកុងសូលប្រព័ន្ធ។
Runlevel S ឬ S នាំយកប្រព័ន្ធទៅជារបៀបអ្នកប្រើតែម្នាក់ហើយមិនត្រូវការឯកសារ / etc / inittab ។ ក្នុងរបៀបអ្នកប្រើតែមួយសែល root ត្រូវបានបើកនៅលើ / dev / console ។
នៅពេលបញ្ចូលរបៀបអ្នកប្រើទោលនោះ init នឹង អានសឺមី ioctl (2) របស់កុងសូលពី /etc/ioctl.save ។ ប្រសិនបើឯកសារនេះមិនមានទេនោះ init ចាប់ផ្តើមបន្ទាត់នៅ 9600 baud និងជាមួយការកំណត់ CLOCAL ។ នៅពេល init ចាកចេញពីរបៀបអ្នកប្រើតែមួយនោះវានឹងផ្ទុកការកំណត់ ioctl របស់កុងសូលនៅក្នុងឯកសារនេះដូច្នេះវាអាចប្រើពួកវាឡើងវិញសម្រាប់សម័យអ្នកប្រើតែមួយបាន។
នៅពេលបញ្ចូលរបៀបអ្នកប្រើច្រើនលើកដំបូង init ធ្វើធាតុ ចាប់ផ្ដើម និង bootwait ដើម្បីអនុញ្ញាតឱ្យប្រព័ន្ធឯកសារត្រូវបានម៉ោនមុនពេលអ្នកប្រើអាចចូលបាន។ បន្ទាប់មកធាតុទាំងអស់ដែលផ្គូផ្គងកម្រិតរត់ត្រូវបានដំណើរការ។
ពេលចាប់ផ្តើមដំណើរការថ្មីមួយ init ពិនិត្យមើលថាតើឯកសារ / etc / initscript មាន។ ប្រសិនបើវាដំណើរការវាប្រើស្គ្រីបនេះដើម្បីចាប់ផ្តើមដំណើរការ។
រាល់ពេលដែលកូនបញ្ចប់វា init កត់ត្រាការពិតនិងមូលហេតុដែលវាបានស្លាប់នៅក្នុង / var / run / utmp និង / var / log / wtmp ប្រសិនបើឯកសារទាំងនោះមាន។
ការផ្លាស់ប្តូរកម្រិតរត់
បន្ទាប់ពីវាបង្កើតដំណើរការទាំងអស់ដែលបានបញ្ជាក់ init ទន្ទឹងរង់ចាំមួយក្នុងចំណោមកូនចៅរបស់វាដំណើរការដើម្បីស្លាប់សញ្ញាភ្លើងបំភ្លឺឬរហូតដល់វាត្រូវបានបង្ហាញដោយ telinit ដើម្បីផ្លាស់ប្តូរកម្រិតរត់របស់ប្រព័ន្ធ។ នៅពេលដែលលក្ខខណ្ឌមួយក្នុងចំណោមលក្ខខណ្ឌបីខាងលើកើតមានឡើងវាពិនិត្យឯកសារ / etc / inittab ម្តងទៀត ។ ធាតុថ្មីអាចត្រូវបានបន្ថែមទៅឯកសារនេះនៅពេលណាមួយក៏បាន។ ទោះជាយ៉ាងណាក៏ដោយនៅតែនៅតែរង់ចាំលក្ខខណ្ឌមួយក្នុងចំណោមលក្ខខណ្ឌទាំងបីខាងលើ។ ដើម្បីផ្ដល់ការឆ្លើយតបភ្លាមៗពាក្យបញ្ជា q ឬ q telinit អាចភ្ញាក់ឡើងដើម្បីពិនិត្យឯកសារ / etc / inittab ឡើងវិញ។
ប្រសិនបើ init មិនមែននៅក្នុងរបៀបអ្នកប្រើតែមួយហើយទទួលសញ្ញាបន្ទុកថាមពល (SIGPWR) វាអានឯកសារ / etc / powerstatus ។ បន្ទាប់មកវាចាប់ផ្តើមពាក្យបញ្ជាដែលមានមូលដ្ឋានលើមាតិកានៃឯកសារនេះ:
F (AIL)
ថាមពលបានបរាជ័យ UPS កំពុងផ្តល់ថាមពល។ ប្រតិបត្តិធាតុ powerwait និង powerfail ។
យល់ព្រម)
ថាមពលត្រូវបានស្តារឡើងវិញ, ដំណើរការធាតុ powerokwait ។
L (OW)
ថាមពលខូចហើយ UPS មានថ្មតិច។ ប្រតិបត្តិធាតុ powerfailnow ។
ប្រសិនបើ / etc / powerstatus មិនមានឬមានអ្វីផ្សេងទេនោះអក្សរ F , O ឬ L , init នឹងមានឥរិយាបទដូចជាប្រសិនបើវាបានអានអក្សរ F ។
ការប្រើ SIGPWR និង / etc / powerstatus ត្រូវបានលើកទឹកចិត្ត។ នរណាម្នាក់ដែលចង់ធ្វើអន្តរកម្មជាមួយ init គួរតែប្រើប៉ុស្តិ៍ត្រួតពិនិត្យ / dev / initctl - សូមមើលកូដប្រភពរបស់កញ្ចប់ sysvinit សម្រាប់ឯកសារបន្ថែមអំពីវា។
នៅពេល init ត្រូវបានស្នើឱ្យផ្លាស់ប្តូរកម្រិតរត់វានឹងបញ្ជូនសញ្ញាព្រមាន SIGTERM ទៅគ្រប់ដំណើរការទាំងអស់ដែលមិនបានកំណត់នៅក្នុងកម្រិតរត់ថ្មី។ បន្ទាប់មកវារង់ចាំរយៈពេល 5 វិនាទីមុនពេលបញ្ចប់ដំណើរការទាំងនេះតាមរយៈសញ្ញា SIGKILL ។ ចំណាំថា init សន្មតថាដំណើរការទាំងអស់នេះ (និងកូនចៅរបស់ពួកគេ) នៅតែមាននៅក្នុងក្រុមដំណើរការដូចគ្នាដែល init បង្កើតពីដើមមកសម្រាប់ពួកគេ។ ប្រសិនបើដំណើរការណាមួយផ្លាស់ប្តូរសមាជិកក្រុមដំណើរការនោះវានឹងមិនទទួលសញ្ញាទាំងនេះទេ។ ដំណើរការបែបនេះចាំបាច់ត្រូវបញ្ចប់ដោយឡែកពីគ្នា។
Telinit
/ sbin / telinit ត្រូវបានតភ្ជាប់ទៅ / sbin / init ។ វាត្រូវការអំណះអំណាងមួយតួអក្សរនិងសញ្ញា init ដើម្បីអនុវត្តសកម្មភាពសមរម្យ។ អាគុយម៉ង់ដូចខាងក្រោមនេះជាការណែនាំដល់ telinit :
0 , 1 , 2 , 3 , 4 , 5 ឬ 6
ប្រាប់ init ដើម្បីប្តូរទៅកម្រិតរត់ជាក់លាក់។
a , b , c
ប្រាប់ init ឱ្យដំណើរការតែធាតុ / etc / inittab ដែលមានកម្រិតរត់ a , b ឬ c ប៉ុណ្ណោះ។
Q ឬ q
ប្រាប់ init ដើម្បីត្រួតពិនិត្យឯកសារ / etc / inittab ។
S ឬ s
ប្រាប់ init ដើម្បីប្តូរទៅកាន់របៀបអ្នកប្រើតែម្នាក់។
U ឬ u
ប្រាប់ init ដើម្បីប្រតិបត្តិម្តងទៀត (ថែរក្សារដ្ឋ) ។ គ្មានការពិនិត្យឡើងវិញនៃឯកសារ / etc / inittab កើតឡើងទេ។ កម្រិតរត់គួរតែជាផ្នែកមួយនៃ Ss12345 បើមិនដូច្នោះទេសំណើនឹងត្រូវបានអើពើដោយស្ងៀមស្ងាត់។
telinit ក៏អាចប្រាប់ init នូវរយៈពេលដែលវាគួររង់ចាំរវាងការបញ្ជូន SIGTERM និង SIGKILL signals ។ លំនាំដើមគឺ 5 វិនាទីប៉ុន្តែវាអាចត្រូវបានប្តូរជាមួយជម្រើស -t វិនាទី ។
telinit អាចត្រូវបានហៅតែប៉ុណ្ណោះដោយអ្នកប្រើប្រាស់ដែលមានសិទ្ធិសមស្រប។
ប្រទិ ន្ទឃធី ពិនិត្យប្រសិនបើវាជា init ឬ telinit ដោយសម្លឹងមើល លេខកូដដំណើរការ របស់វា។ លេខសម្គាល់ដំណើរការពិតរបស់ init គឺជានិច្ច 1 ។ ពីនេះវាដូចខាងក្រោមថាជំនួសឱ្យការហៅ telinit អ្នកក៏អាចប្រើ init ជំនួសវិញដែរជា shortcut ។