લિનક્સમાં Init કમાન્ડ કેવી રીતે વાપરવું

Init એ બધી પ્રક્રિયાઓના પિતૃ છે તેની પ્રાથમિક ભૂમિકા ફાઇલ / etc / inittab માં સંગ્રહિત સ્ક્રિપ્ટમાંથી પ્રક્રિયાઓ બનાવવાનું છે (જુઓ inittab (5)). આ ફાઇલમાં સામાન્ય રીતે એન્ટ્રીઓ હોય છે જે વપરાશકર્તાઓને પ્રવેશી શકે તેવી પ્રત્યેક લીટી પર init s નો ઉપયોગ કરે છે. તે કોઈ પણ વિશિષ્ટ સિસ્ટમ દ્વારા જરૂરી સ્વાયત્ત પ્રક્રિયાઓને પણ નિયંત્રિત કરે છે.

રનલેવલ્સ

રનલેવલ એ સિસ્ટમનું સોફ્ટવેર રૂપરેખાંકન છે કે જે માત્ર એક જ પસંદ કરેલ જૂથને અસ્તિત્વમાં છે. દરેક રનલેવલો માટે init દ્દારા પેદા થયેલ પ્રક્રિયાઓ / etc / inittab ફાઈલમાં વ્યાખ્યાયિત થયેલ છે. Init એ આઠ રનલેવલો પૈકી એક હોઈ શકે છે: 0-6 અને S અથવા s . રનલેવલ એ વિશેષાધિકૃત વપરાશકર્તા રન ટેલિિનિટ દ્વારા બદલાયેલ છે, જે init ને યોગ્ય સિગ્નલો મોકલે છે, જે તે રનલેવલને બદલવા માટે કહે છે.

રનલેવલ 0 , 1 , અને 6 આરક્ષિત છે. સિસ્ટમ બંધ કરવા માટે રનલેવલ 0 નો ઉપયોગ થાય છે, રનલેવલ 6 એ સિસ્ટમ રીબુટ કરવા માટે વપરાય છે, અને રનલેવલ 1 સિસ્ટમને સિંગલ યુઝર મોડમાં મેળવવા માટે વપરાય છે. રનલેવલ એસ એ વાસ્તવમાં સીધી રીતે વાપરવું નથી, પરંતુ રનલેવલ 1 માં દાખલ કરતી વખતે ચલાવવામાં આવતી સ્ક્રિપ્ટ્સ માટે વધુ છે. આના પર વધુ માહિતી માટે, શટડાઉન (8) અને ઈનટૅબ (5) માટેના મેનપૅજસ જુઓ.

રનલેવલ્સ 7-9 પણ માન્ય છે, જોકે ખરેખર દસ્તાવેજીકૃત નથી. કારણ કે "પરંપરાગત" યુનિક્સ ચલો તેનો ઉપયોગ કરતા નથી. જો તમે વિચિત્ર છો, રનલેવલ્સ એસ અને હકીકતમાં સમાન છે. આંતરિક તે જ રનલેવલ માટે ઉપનામો છે

બુટીંગ

Init ને કર્નલ બુટ શ્રેણીના છેલ્લી પગલા તરીકે બોલાવવામાં આવે પછી, તે ફાઇલ / etc / inittab ને જુએ છે તે જોવા માટે કે ત્યાં initdefault પ્રકારનો પ્રવેશ છે (જુઓ inittab (5)). Initdefault પ્રવેશ સિસ્ટમના પ્રારંભિક રનલેવલને નક્કી કરે છે. જો આવી કોઈ એન્ટ્રી (અથવા કોઈ / etc / inittab બધામાં) ન હોય તો, સિસ્ટમ કન્સોલમાં રનલેવલ દાખલ થયેલ હોવું જ જોઈએ.

રનલેવલ એસ અથવા સિસ્ટમને સિંગલ વપરાશકર્તા સ્થિતિમાં લાવે છે અને / etc / inittab ફાઈલની જરૂર નથી. એક વપરાશકર્તા સ્થિતિમાં, / dev / console પર રુટ શેલ ખોલવામાં આવે છે.

એક વપરાશકર્તા સ્થિતિમાં દાખલ થવા પર, init કન્સોલની ioctl (2) /etc/ioctl.save માંથી જણાવે છે . જો આ ફાઇલ અસ્તિત્વમાં નથી, તો ઇનિટ 9600 baud પર અને CLOCAL સેટિંગ્સ સાથે લાઇનને પ્રારંભ કરે છે. જ્યારે init સિંગલ વપરાશકર્તા મોડને છોડે છે, ત્યારે તે આ ફાઈલમાં કન્સોલની ioctl સુયોજનોને સંગ્રહ કરે છે તેથી તે આગામી એક-વપરાશકર્તા સત્ર માટે ફરીથી ઉપયોગ કરી શકે છે.

પ્રથમ વખત મલ્ટિ-યુઝર મોડને દાખલ કરતી વખતે, init બૂટ અને bootwait એન્ટ્રીઓ કરે છે કે જે વપરાશકર્તાઓને પ્રવેશી શકે તે પહેલા ફાઇલ સિસ્ટમોને માઉન્ટ કરવા માટે પરવાનગી આપે છે. પછી રનલેવલ સાથે મેળ ખાતી બધી એન્ટ્રીઓ પર પ્રક્રિયા કરવામાં આવે છે.

નવી પ્રક્રિયા શરૂ કરતી વખતે, init પ્રથમ ચકાસે છે કે શું ફાઇલ / etc / initscript અસ્તિત્વમાં છે. જો તે કરે, તો આ પ્રક્રિયાને શરૂ કરવા માટે આ સ્ક્રિપ્ટનો ઉપયોગ કરે છે.

દર વખતે બાળ સમાપ્ત થાય છે, init એ હકીકતને રેકોર્ડ કરે છે અને તેનું કારણ તે / var / run / utmp અને / var / log / wtmp માં મૃત્યુ પામે છે , બાય પૂરી પાડવામાં આવેલ છે કે આ ફાઈલો અસ્તિત્વમાં છે.

રનલેવલ્સ બદલવાનું

તેના દ્વારા સ્પષ્ટ થયેલ બધી પ્રક્રિયાઓ થયા પછી, init તેની વંશજ પ્રક્રિયાઓ માટે મૃત્યુ પામે છે, એક પાવરફેલ સંકેતની રાહ જુએ છે, અથવા જ્યાં સુધી તે સિસ્ટમના રનલેવલને બદલવા માટે ટેલીનિટ દ્વારા સહી કરે ત્યાં સુધી રાહ જુએ છે. જ્યારે ઉપરોક્ત ત્રણ શરતોમાંનો એક થાય છે, તે / etc / inittab ફાઈલની ફરીથી તપાસ કરે છે. કોઈપણ સમયે આ ફાઇલમાં નવી એન્ટ્રીઝ ઉમેરી શકાય છે. જો કે, init હજી પણ ઉપરોક્ત ત્રણ પરિસ્થિતિઓમાંથી એક થવાની રાહ જુએ છે. તાત્કાલિક પ્રતિસાદ આપવા માટે, telinit Q અથવા q આદેશ / etc / inittab ફાઇલને ફરીથી ચકાસવા માટે init જાગે છે.

જો init એક જ વપરાશકર્તા સ્થિતિમાં નથી અને પાવરફેલ સંકેત (SIGPWR) મેળવે છે, તો તે ફાઈલ / etc / powerstatus વાંચે છે. તે પછી આ ફાઇલના સમાવિષ્ટો પર આધારિત આદેશ શરૂ કરે છે:

F (AIL)

પાવર નિષ્ફળ રહ્યું છે, યુપીએસ પાવર પૂરી પાડે છે. પાવરવેઇટ અને પાવરફેલ એન્ટ્રીઓ ચલાવો.

ઠીક છે)

પાવર પુનઃસ્થાપિત કરવામાં આવી છે, પાવરવોવાઈટ એન્ટ્રીઝ ચલાવો.

એલ (OW)

વીજળી નિષ્ફળ રહી છે અને યુપીએસની બેટરી ઓછી છે. પાવરફેલનો પ્રવેશો ચલાવો

જો / etc / powerstatus અસ્તિત્વમાં નથી અથવા અન્ય કંઈપણ સમાવે છે તો અક્ષરો એફ , અથવા એલ , init વર્તે છે જેમ કે તે અક્ષર એફ વાંચી છે.

SIGPWR અને / etc / powerstatus નો ઉપયોગ નિરુત્સાહિત છે. Init સાથે ક્રિયાપ્રતિક્રિયા કરવા માંગતા કોઇએ / dev / initctl નિયંત્રણ ચૅનલનો ઉપયોગ કરવો જોઈએ - આ વિશે વધુ દસ્તાવેજો માટે sysvinit પેકેજનું સ્રોત કોડ જુઓ.

જ્યારે init ને રનલેવલ બદલવાની વિનંતી કરવામાં આવે, ત્યારે તે બધી પ્રક્રિયાઓ માટે ચેતવણી સંકેત SIGTERM મોકલે છે કે જે નવા રનલેવલમાં અવ્યાખ્યાયિત છે. તે પછી SIGKILL સંકેત દ્વારા આ પ્રક્રિયાઓને બળજબરીથી બંધ કરતા પહેલા 5 સેકન્ડ રાહ જુએ છે. નોંધ લો કે init ધારે છે કે આ બધી પ્રક્રિયાઓ (અને તેમના વંશજો) તે જ પ્રક્રિયા જૂથમાં રહે છે જે મૂળરૂપે તેમના માટે બનાવવામાં આવેલ છે. જો કોઈ પ્રક્રિયા તેની પ્રક્રિયા જૂથ જોડાણને બદલે છે, તો તે આ સંકેતો પ્રાપ્ત કરશે નહીં. આવા પ્રક્રિયાઓને અલગથી સમાપ્ત કરવાની જરૂર છે.

ટેલિિનિટ

/ sbin / telinit / sbin / init સાથે કડી થયેલ છે યોગ્ય ક્રિયા કરવા માટે તે એક-અક્ષરની દલીલ અને સંકેતો ઇનિટ લે છે. નીચેની દલીલો ટેલિિનિટના નિર્દેશો તરીકે સેવા આપે છે:

0 , 1 , 2 , 3 , 4 , 5 અથવા 6

સ્પષ્ટ રન સ્તર પર સ્વિચ કરવા માટે init કહો

, બી , સી

માત્ર / etc / inittab ફાઇલ એન્ટ્રીઓને રનલેવલ, b અથવા c પર પ્રક્રિયા કરવા માટે init ને કહો

ક્યૂ અથવા q

/ etc / inittab ફાઇલને પુન: તપાસવા માટે init ને કહો

એસ અથવા

સિંગલ યુઝર મોડ પર સ્વિચ કરવા માટે init ને કહો

યુ અથવા યુ

પોતાની જાતને ફરીથી અમલમાં મૂકવા માટે (રાજ્ય સાચવીને) init કહો / Etc / inittab ફાઇલનું પુનઃ-પરિક્ષણ નહીં થાય. રન લેવલ એસએસ 12345 પૈકી એક હોવો જોઈએ, નહીં તો વિનંતીને ચુપચાપ અવગણવામાં આવશે.

telinit પણ init ને કહી શકે છે કે તે પ્રક્રિયાઓ SIGTERM અને SIGKILL સંકેતો મોકલવા વચ્ચે કેટલી રાહ જોવી જોઈએ. ડિફૉલ્ટ 5 સેકંડ છે, પરંતુ આ -t સેકન્ડ વિકલ્પ સાથે બદલી શકાય છે.

માત્ર યોગ્ય વિશેષાધિકારો ધરાવતા વપરાશકર્તાઓ દ્વારા telinit ને લાગુ કરી શકાય છે.

Init દ્વિસંગી ચકાસણીઓ જો તે તેની પ્રક્રિયા ID ને જોઈને init અથવા telinit હોય ; વાસ્તવિક init માતાનો પ્રક્રિયા આઈડી હંમેશા 1 છે . આમાંથી તે અનુસરે છે કે જે ટેલિિનિટ કૉલ કરવાને બદલે એક પણ ફક્ત શૉર્ટકટ તરીકે init ઉપયોગ કરી શકે છે.