Linux లో Init కమాండ్ను ఎలా ఉపయోగించాలి

Init అన్ని ప్రక్రియల పేరెంట్. దీని ప్రధాన పాత్ర ఫైల్ / etc / inittab లో నిల్వ చేయబడిన స్క్రిప్ట్ నుండి ప్రక్రియలను సృష్టించడం ( ఇన్విట్బ్ (5) చూడండి). ఈ ఫైల్ సాధారణంగా ఎంట్రీలను కలిగి ఉంటుంది, ఇది ప్రతి లైనులో ప్రవేశించే ప్రతి పంక్తిపై గెట్టీ s లకు దారి తీస్తుంది. ఇది ఏదైనా నిర్దిష్ట వ్యవస్థకు అవసరమైన స్వయంప్రతిపత్త ప్రక్రియలను కూడా నియంత్రిస్తుంది.

రన్లెవల్సును

ఒక రన్లెవల్ అనేది సిస్టమ్ యొక్క సాఫ్టువేరు ఆకృతీకరణ, ఇది యెంపికచేసిన ప్రాసెస్ల సమూహమును మాత్రమే కలిగివుంటుంది. / Etc / inittab ఫైలునందు ఈ రన్లెవల్సు యొక్క ప్రతిదానికి init చేత ప్రోసెస్ చేయబడినవి. ఎనిట్ ఎనిమిది రన్లెల్స్లో ఒకటి కావచ్చు: 0-6 మరియు S లేదా s . రన్లెవల్ ఒక విశేష వాడుకదారుడు రన్ టెలీనిట్ ద్వారా మార్చబడింది, ఇది init కు తగిన సిగ్నల్స్ పంపుతుంది, ఇది రన్లెవల్ ను మార్చటానికి ఇది చెబుతుంది.

రన్లెవెల్లు 0 , 1 మరియు 6 రిజర్వు చేయబడ్డాయి. సిస్టమ్ను ఆపటానికి రన్లెల్ 0 ఉపయోగించబడును, సిస్టమ్ పునఃప్రారంభించటానికి రన్లెవల్ 6 ఉపయోగించబడును, మరియు రన్లెవల్ 1 ను వ్యవస్థను సింగిల్ యూజర్ మోడ్ లోకి ఉపయోగించుటకు ఉపయోగిస్తారు. రన్లెవల్ S నిజంగా నేరుగా వినియోగించబడదు, కాని రన్లెవల్లోకి ప్రవేశించినప్పుడు అమలు చేయబడిన స్క్రిప్ట్లకు ఎక్కువ. దీనికి సంబంధించిన మరింత సమాచారం కోసం, shutdown (8) మరియు inittab (5) కు సంబంధించిన మ్యాప్పేజ్లను చూడండి.

రన్లెవల్స్ 7-9 కూడా చెల్లుబాటు అయ్యేవి, అయినప్పటికీ నిజంగా డాక్యుమెంట్ చేయబడలేదు. ఇది ఎందుకంటే "సాంప్రదాయ" యునిక్స్ రకాలు వాటిని ఉపయోగించవు. మీరు ఆసక్తిగా ఉంటే, రన్లెవల్స్ S మరియు s నిజానికి ఒకే విధంగా ఉంటాయి. అంతర్గతంగా వారు అదే రన్లెవల్ కోసం మారుపేర్లు.

బూటింగు

Init అనునది కెర్నల్ బూట్ సీక్వెన్సు యొక్క చివరి స్టెప్పుగా పిలువబడిన తరువాత, అది initdefault యొక్క ప్రవేశము ఉన్నట్లయితే ఫైలు చూడుము / etc / inittab చూస్తుంది (see inittab (5)). Initdefault ఎంట్రీ సిస్టమ్ యొక్క ప్రారంభ రన్లెవల్ను నిర్ణయిస్తుంది. అలాంటి ఎంట్రీ లేనట్లయితే (లేదా / etc / inittab అస్సలు లేదు), రన్లెవల్ తప్పక సిస్టమ్ కన్సోల్లో నమోదు చేయబడాలి.

రన్లెవల్ S లేదా s సిస్టమ్ను సింగిల్ యూజర్ రీతికి తీసుకురాండి మరియు / etc / inittab ఫైలు అవసరం లేదు. ఒకే వినియోగదారు రీతిలో, రూట్ షెల్ / dev / కన్సోలులో తెరవబడుతుంది.

సింగిల్ యూజర్ రీతిలో ప్రవేశించినప్పుడు, init కన్సోల్ యొక్క ioctl (2) రాష్ట్రాలను /etc/ioctl.save నుండి చదువుతుంది . ఈ ఫైలు ఉనికిలో లేకపోతే, init 9600 baud వద్ద మరియు CLOCAL సెట్టింగులతో లైన్ను ప్రారంభిస్తుంది. Init సింగిల్ యూజర్ మోడ్ను వదిలిపెట్టినప్పుడు, అది ఈ ఫైల్ లో కన్సోల్ యొక్క ioctl సెట్టింగులను నిల్వ చేస్తుంది, దీని వలన వాటిని తదుపరి సింగిల్-వినియోగదారు సెషన్కు తిరిగి ఉపయోగించుకోవచ్చు.

మొదటి సారి బహుళ-వినియోగదారుని రీతిలో ప్రవేశించినప్పుడు, వాడుకరి లాగిన్ కావడానికి ముందే ఫైల్ వ్యవస్థలు మౌంట్ చేయటానికి అనుమతిస్తుంది init బూట్ మరియు బూట్వేట్ ఎంట్రీలను నిర్వహిస్తుంది. అప్పుడు రన్లెవల్తో సరిపోయే అన్ని ఎంట్రీలు ప్రాసెస్ చేయబడతాయి.

ఒక కొత్త ప్రక్రియ ప్రారంభించినప్పుడు, init మొదటి ఫైలు / etc / initscript ఉందో లేదో తనిఖీ చేస్తుంది. అది చేస్తే, ఇది ప్రక్రియ ప్రారంభించడానికి ఈ లిపిని ఉపయోగిస్తుంది.

ప్రతిసారీ ఒక బిడ్డ పూర్తవుతుంది, init రికార్డు వాస్తవం మరియు అది / var / run / utmp మరియు / var / log / wtmp లో మరణించిన కారణం, ఈ ఫైళ్ళు ఉనికిలో ఉన్నాయి.

రన్లెవెల్స్ మార్చడం

ఇది పేర్కొన్న ప్రక్రియలన్నింటినీ అభివృద్ధి చేసిన తరువాత, దాని యొక్క వంశపారంపర్య ప్రక్రియల్లో ఒకటి చనిపోయేలా, పవర్ఫైల్ సిగ్నల్ను లేదా దాని యొక్క సిస్టమ్ రన్లెవల్ని మార్చడానికి టెలీనిట్ చేత సిగ్నల్ వరకు వేచి ఉంటుంది. పైన తెలిపిన మూడు షరతులలో ఒకటి సంభవించినప్పుడు / etc / inittab ఫైలు పునః పరిశీలన చేస్తుంది . క్రొత్త ఎంట్రీలు ఎప్పుడైనా ఈ ఫైల్కు జోడించబడతాయి. అయితే, init ఇప్పటికీ సంభవించే పైన మూడు పరిస్థితుల్లో ఒకటి కోసం వేచి. తక్షణ స్పందన కోసం, టెలీనిట్ Q లేదా q కమాండ్ / etc / inittab ఫైల్ను పునఃపరిశీలన చేయడానికి init ని మేల్కొడుతుంది .

Init ఒకే వినియోగదారు రీతిలో లేనట్లయితే మరియు పవర్ఫైల్ సిగ్నల్ (SIGPWR) ను అందుకుంటే, అది ఫైల్ / etc / powerstatus ను చదువుతుంది. అప్పుడు ఈ ఫైలు యొక్క విషయాల ఆధారంగా కమాండ్ను ప్రారంభిస్తుంది:

F (AIL)

శక్తి విఫలమైందని, UPS శక్తిని అందిస్తోంది. పవర్వైడ్ మరియు పవర్ఫైల్ ఎంట్రీలను అమలు చేయండి.

అలాగే)

శక్తి పునరుద్ధరించబడింది, పవర్కోవ్ట్ ఎంట్రీలను అమలు చేయండి.

L (OW)

శక్తి విఫలమైతే మరియు UPS తక్కువ బ్యాటరీని కలిగి ఉంటుంది. Powerfailnow ఎంట్రీలను అమలు చేయండి.

/ Etc / powerstatus ఉనికిలో లేనట్లయితే లేదా ఏదైనా ఉన్నట్లయితే అప్పుడు F , O లేదా L అక్షరాలను అక్షరం F.

SIGPWR యొక్క వినియోగం మరియు / etc / powerstatus నిరుత్సాహపరుస్తుంది. Init సంకర్షణ కోరుకునే ఎవరో / dev / initctl నియంత్రణ ఛానల్ వుపయోగించాలి - sysvinit ప్యాకేజీ యొక్క సోర్స్ కోడ్ను దీని గురించి మరింత సమాచారం కొరకు చూడండి.

రన్లెవల్ను మార్చటానికి init అభ్యర్ధించబడినప్పుడు, అది కొత్త రన్లెవల్ లో నిర్వచించబడని అన్ని ప్రాసెస్లకు హెచ్చరిక సిగ్నల్ SIGTERM పంపుతుంది. ఇది SIGKILL సిగ్నల్ ద్వారా ఈ ప్రక్రియలను బలవంతంగా రద్దు చేయడానికి 5 సెకన్లు వేచి ఉంటుంది. ఇసిట్ ఈ ప్రక్రియలు (మరియు వారి వారసులు) ఒకే రకమైన సమూహంలోనే ఉండిపోతున్నారని గమనించండి. ఏదైనా ప్రాసెస్ దాని సమూహ అనుబంధాన్ని మారుస్తుంటే అది ఈ సంకేతాలను స్వీకరించదు. ఇటువంటి ప్రక్రియలు విడివిడిగా తొలగించాల్సిన అవసరం ఉంది.

Telinit

/ sbin / telinit / sbin / init అనుసంధానించబడి ఉంది. ఇది తగిన చర్యను నిర్వహించడానికి ఒక-అక్షర వాదన మరియు సిగ్నల్ ఇన్టుని తీసుకుంటుంది. కింది వాదనలు telinit డైరెక్టివ్స్ సర్వ్:

0 , 1 , 2 , 3 , 4 , 5 లేదా 6

పేర్కొన్న రన్ స్థాయికి మారడానికి init చెప్పండి.

a , b , c

రన్వేల్ a , b లేదా c కలిగి ఉన్న ఆ / etc / inittab ఫైల్ ఎంట్రీలను మాత్రమే ప్రాసెస్ చెయ్యడానికి init చెప్పండి.

Q లేదా q

/ etc / inittab ఫైలును తిరిగి పరిశీలించుటకు init చెప్పండి.

S లేదా s

ఒక్క యూజర్ మోడ్కు మారడానికి init చెప్పండి.

U లేదా u

తిరిగి అమలు చేయడానికి init చెప్పండి (రాష్ట్రం కాపాడటం). / Etc / inittab ఫైలు యొక్క పునః-పరిశీలన ఏదీ జరుగుతుంది. రన్ స్థాయి Ss12345 లో ఒకటిగా ఉండాలి, లేకుంటే అభ్యర్థన నిశ్శబ్దంగా విస్మరించబడుతుంది.

టెలీనిట్ కూడా సిగ్మెట్రిమ్ మరియు SIGKILL సిగ్నల్స్ ప్రక్రియలను పంపడం మధ్య ఎంతకాలం వేచి ఉండాలో కూడా init కు తెలియజేయవచ్చు. డిఫాల్ట్ 5 సెకన్లు, కానీ ఈ -t సెకన్ ఐచ్చికంతో మార్చవచ్చు.

తగిన అధికారాలు కలిగిన వినియోగదారులచే టెలీనిట్ను మాత్రమే ఉపయోగించుకోవచ్చు.

Init ద్వియాంశ తనిఖీ దాని init id చూడటం ద్వారా init లేదా telinit ఉంటే తనిఖీలు; నిజ init యొక్క ప్రాసెస్ ఐడి ఎల్లప్పుడూ 1 . దీని నుండి టెల్నిట్ను పిలవటానికి బదులుగా ఒక సత్వరమార్గంగా బదులుగా init ను కూడా ఉపయోగించవచ్చు.