Linuxdagi Init komandasini qanday ishlatish kerak

Init barcha jarayonlarning ota-onasi hisoblanadi. Uning asosiy vazifasi / etc / inittab faylida saqlangan skriptdan jarayonlarni yaratishdir (qarang inittab (5)). Ushbu fayl odatda foydalanuvchilarning kirishi mumkin bo'lgan har bir satrda init ga ega bo'lishiga sabab bo'lgan yozuvlarga ega. Bundan tashqari, muayyan tizim tomonidan talab qilinadigan avtonom jarayonlarni nazorat qiladi.

Ishlash darajalari

Ishlash darajasi - bu tanlangan guruhlar mavjud bo'lishiga imkon beruvchi tizimning dasturiy konfiguratsiyasi. Ushbu ishga tushirish darajalarining har biri uchun init bilan ochilgan jarayonlar / etc / inittab faylida tavsiflanadi. Init sakkiz darajali ish sathidan birida bo'lishi mumkin: 0-6 va S yoki s . Ishlash darajasi o'zgaruvchan foydalanuvchi tomonidan telinitning ishlashi bilan o'zgaradi , bu esa init ga mos signallarni yuboradi va bu qanday ishlash darajasini o'zgartirish kerakligini bildiradi.

0 , 1 va 6 ishlov darajalari himoyalangan. Runlevel 0 tizimni to'xtatib turish uchun ishlatiladi, 6-darajali tizim tizimni qayta ishga tushirish uchun ishlatiladi va tizimning 1-darajali tizimi yagona foydalanuvchi rejimiga o'tish uchun ishlatiladi. Runlevel S , albatta, to'g'ridan-to'g'ri ishlatilishi kerak emas, lekin operatsiya darajasi 1 ga kirganda amalga oshiriladigan buyruq fayllari uchun ko'proq. Bu haqda qo'shimcha ma'lumot olish uchun o'chirish (8) va inittab (5) uchun manpages bo'limiga qarang.

7-9-darajali ishlash darajalari ham haqiqiydir, lekin haqiqatan ham hujjatlashtirilmagan. Buning sababi, "an'anaviy" Unix variantlari ularni ishlatmaydi. Siz qiziqqansiz, S va S ishlash darajalari aslida bir xil. Ichki sifatida ular bir xil ishlov darajasida takrorlanadigan nomlardir.

O'rnatish

Init boshlang'ich yadro yuklash tartibining so'nggi bosqichi sifatida chaqirilgandan so'ng, inittefault (yoki inittab (5)) turini ko'rish uchun / etc / inittab faylini qidiradi. Initdefault usuli tizimning dastlabki ish darajasini belgilaydi. Agar bunday yozuv mavjud bo'lmasa (yoki hech qanday / etc / inittab yo'q bo'lsa) tizimning konsolida ishlash darajasini kiritish kerak.

Runlevel S yoki s tizimi bitta foydalanuvchi rejimiga keltiradi va / etc / inittab faylini talab qilmaydi. Bitta foydalanuvchi rejimida ildiz qobig'i / dev / konsolida ochiladi.

Bitta foydalanuvchi rejimi kiritilganda, init /etc/ioctl.save dan konsolning ioctl (2) holatini o'qiydi . Ushbu fayl mavjud bo'lmasa, init 9600 baud va CLOCAL parametrlari bilan liniyani ishga tushiradi. Init bir foydalanuvchi rejimini tark etganda, konsolning ioctl sozlamalarini ushbu faylda saqlaydi, shuning uchun ularni bir martalik foydalanuvchi seansiga qayta ishlatish mumkin.

Ko'p foydalanuvchi rejimi birinchi marta kiritilganda, init sistemasi foydalanuvchilarning tizimga kirishidan oldin fayl tizimlarini o'rnatishga ruxsat berish uchun yuklash va bootwait yozuvlarini bajaradi. Keyin bajariladigan darajaga mos keladigan barcha yozuvlar qayta ishlanadi.

Yangi operatsiyani boshlashda, init / files / initscript faylining mavjudligini tekshiradi. Agar shunday bo'lsa, bu jarayonni boshlash uchun ushbu skriptni ishlatadi.

Bolaning har biri tugatilganda, init ushbu fayllar mavjud bo'lishi sharti bilan / var / run / utmp va / var / log / wtmp da vafot etgan haqiqatni va sababini qayd qiladi.

Ishlash darajasini o'zgartirish

Belgilangan barcha jarayonlarni tugatganidan so'ng, init o'zining avlodi jarayonlaridan birini kutadi, kuch-quvvat signalini yoki tizimning ish darajasini o'zgartirish uchun telinit tomonidan signal yuborilguniga qadar kutadi . Yuqoridagi uchta shartdan biri sodir bo'lganda, / etc / inittab faylini qayta tekshiradi. Ushbu faylga istalgan vaqtda yangi yozuvlar qo'shilishi mumkin. Biroq, init hali ham yuqoridagi uch shartlardan biri uchun kutishmoqda. Bir lahzali javobni ta'minlash uchun telinit Q yoki q buyrug'i / etc / inittab faylini qayta tekshirish uchun initni uyg'otishi mumkin.

Agar init faqat foydalanuvchi rejimida bo'lmasa va quvvatli signalni qabul qilsa (SIGPWR), u / etc / powerstatus faylini o'qiydi. Keyin ushbu faylning mazmuniga asoslangan buyruqni ishga tushiradi:

F (AIL)

Quvvat kuchsiz, UPS quvvatni ta'minlaydi. Powerwait va powerfail yozuvlarini bajaring .

OK)

Quvvat tiklandi, powerokwait yozuvlarini ishga tushirdi .

L (OW)

Quvvat kuchsiz va UPS kam batareyaga ega. Powerfailnow yozuvlarini bajaring.

Agar / etc / powerstatus mavjud bo'lmasa yoki boshqa biror narsa bo'lsa, unda F , O yoki L harfi harflarini o'qib, F harfi o'qiganday harakat qiladi.

SIGPWR va / etc / powerstatus dasturlarini ishlatish ma'qul emas . Init bilan ishlashni istagan kishi, / dev / initctl nazorat kanalini ishlatishi kerak - bu haqda qo'shimcha hujjatlarni olish uchun sysvinit to'plamining manba kodini ko'ring.

Ishlatish darajasini o'zgartirish uchun init so'ralganda, SIGTERM ogohlantirish signalini yangi ish darajasida aniqlanmagan barcha jarayonlarga yuboradi. Keyin SIGKILL signali orqali ushbu jarayonlarni majburan bekor qilishdan oldin 5 soniya kutadi. Init barcha bu jarayonlarning (va ularning avlodlari) dastlab ular uchun yaratilgan bir xil jarayon guruhida bo'lishini ta'kidlaydi. Har qanday jarayon jarayon guruhiga bog'liqligini o'zgartirsa, bu signallarni qabul qilmaydi. Bunday jarayonlarni alohida-alohida to'xtatish kerak.

Telinit

/ sbin / telinit / sbin / init bilan bog'langan. U bitta belgilar argumentini oladi va tegishli ishni bajarish uchun init ni signal qiladi. Quyidagi argumentlar telinitga ko'rsatma bo'lib xizmat qiladi:

0 , 1 , 2 , 3 , 4 , 5 yoki 6 ga qarang

init'in ko'rsatilgan ish darajasiga o'tishini ayting.

a , b , c

init , a , b yoki c darajalariga ega bo'lgan / etc / inittab fayllaridagi yozuvlarni qayta ishlashga init ni ayting.

Q yoki q

init / etc / inittab faylini qayta tekshirishni ayting.

S yoki b

Initsni yagona foydalanuvchi rejimiga o'tishni ayting.

U yoki u

Inittsiyani qayta tiklashni (davlatni saqlab qolish) ayting. / Etc / inittab faylini qayta tekshirib bo'lmaydi. Ishlash darajasi Ss12345dan biri bo'lishi kerak, aks holda so'rovi jimgina e'tiborsiz qolishi kerak.

telinit shuningdek, SIGTERM va SIGKILL signallarini jo'natish jarayonlari orasida kutish kerakligini aytishi mumkin. Asl qiymati 5 soniya, lekin bu -t soniya parametr bilan o'zgartirilishi mumkin.

telinit faqat tegishli imtiyozlarga ega bo'lgan foydalanuvchilar tomonidan chaqirilishi mumkin.

Init ikkilik, uni init yoki telinit tekshirish jarayonining idiga qarab tekshiradi; haqiqiy init jarayoni kimligi har doim 1 . Shundan kelib chiqadiki, telinitni chaqirishning o'rniga, buning o'rniga, qisqa usul sifatida init ni ishlatish mumkin.