Linux'daki Init Command'ı necə istifadə etməli

Init bütün proseslərin valideynidir. Onun əsas rolu / etc / inittab faylında saxlanılan bir skriptdən proseslər yaratmaqdır ( inittab (5) bax)). Bu fayl adətən istifadəçilərin daxil oluna biləcəyi hər bir satırda getty s silməyə səbəb olan girişlərə malikdir və həmçinin hər hansı bir sistem tərəfindən tələb olunan muxtar prosesləri nəzarət edir.

Runlevels

Bir runlevel yalnız seçilmiş bir qrup prosesin mövcud olmasına imkan verən sistemin proqram konfiqurasiyasidir. Bu əməliyyat səviyyələrinin hər biri üçün init tərəfindən spawned olan proseslər / etc / inittab faylında müəyyən edilir. Init səkkiz səviyyədə bir sıra ola bilər: 0-6S və ya s . Runlevel , imtiyazlı bir istifadəçi telinitə keçid ilə dəyişdirilir və bu, init səviyyəsinə dəyişdirməyi bildirən müvafiq siqnalları göndərir.

İşlevsellik 0 , 16 qorunur. Sistemin dayandırılması üçün Runlevel 0 istifadə olunur, sistemin yenidən işlədilməsi üçün 6 səviyyəsi istifadə olunur və sistemin 1 istifadəçi sistemi tək istifadəçi rejiminə keçmək üçün istifadə olunur. Runlevel S həqiqətən birbaşa istifadə edilmək istəmir, lakin daha çox işlədilən səviyyəyə daxil edildikdə yerinə yetirilən skriptlər üçün daha çoxdur. Bu barədə daha ətraflı məlumat üçün, shutdown (8) və inittab (5) üçün manpages baxın.

7-9 səviyyələri də etibarlıdır, baxmayaraq ki, həqiqətən sənədləşdirilmir. Çünki "ənənəvi" Unix variantları onları istifadə etmir. Merak etdiyiniz halda, Ss istifadə səviyyəsi əslində eynidır. Daxili olaraq eyni işləmə səviyyəsi üçün takma ad verilir.

Boot

Init'in çekirdek önyükleme sırasının son adımı olaraq çağrıldıktan sonra, inittefault türünün bir girişinin olub olmadığını görmek üçün / etc / inittab faylını arar (bkz inittab (5)). Initdefault giriş sistemi sisteminin başlanğıc səviyyəsini təyin edir. Belə bir giriş yoxdursa (və ya heç bir / etc / inittab deyilsə ), sistem konsolunda bir runlevel daxil edilməlidir.

Runlevel S və ya s sistemi bir istifadəçi rejiminə gətirir və / etc / inittab faylına ehtiyac yoxdur. Bir istifadəçi rejimində kök qabığı / dev / konsolda açılır.

Bir istifadəçi rejimi daxil edərkən, init /etc/ioctl.save dan konsolun ioctl (2) vəziyyətlərini oxuyur . Bu fayl mövcud deyilsə, init 9600 baud-daCLOCAL parametrləri ilə başlayır . Bir istifadəçi bir istifadəçi rejimini tərk etdikdə, bu faylda konsolun ioctl parametrlərini saxlayır, belə ki, növbəti tək istifadəçi seansı üçün yenidən istifadə edə bilər.

Bir çox istifadəçi rejimi ilk dəfə daxil edərkən, init sistemləri istifadəçilər daxil ola bilmədən əvvəl fayl sistemlərinin quraşdırılmasına icazə vermək üçün önyüklemeönyükleme girişlərini həyata keçirir. Sonra, işlənmə səviyyəsinə uyğun olan bütün girişlər işlənir.

Yeni bir prosesə başlayan zaman, init / fayl / etc / initscript faylının mövcud olub olmadığını yoxlayır. Əgər bu prosesə başlamaq üçün bu skriptdən istifadə edir.

Uşaqlar hər dəfə sona çatdıqda, init bu faylları mövcud olması şərtilə / var / run / utmp/ var / log / wtmp fayllarında vəfat etdiyini və səbəbini yazır.

Hərəkət səviyyəsinin dəyişdirilməsi

Göstərilən bütün prosedurlardan sonra, init öz nəsli proseslərindən birinin ölümü, bir güc siqnalını və ya sistemin səviyyəsini dəyişdirmək üçün telinit tərəfindən işarələnməsinə qədər gözləyir. Yuxarıdakı üç şərtdən biri meydana gəldikdə, / etc / inittab faylını yenidən nəzərdən keçirir. Hər hansı bir zamanda bu faylya yeni girişlər əlavə edilə bilər. Buna baxmayaraq, init hələ də yuxarıda göstərilən üç şərtdən birini gözləyir. Anında cavab vermək üçün, telinit Q və ya q komutu / etc / inittab faylını yenidən yoxlamaq üçün init'i oyatmaq mümkündür .

Init bir istifadəçi rejimində deyilsə və bir powerfail siqnalını (SIGPWR) alırsa, / etc / powerstatus faylını oxuyur. Daha sonra bu faylın məzmununa əsaslanan bir əmr başlayır:

F (AIL)

Güc güclənir, UPS güc təmin edir. Powerwaitpowerfail girişlərini yerinə yetirin .

TAMAM)

Güc bərpa edildi, powerokwait girişlərini icra etdi.

L (OW)

Gücü uğursuz və UPS aşağı batareyaya malikdir. Powerfailnow girişlərini icra et.

Əgər / etc / powerstatus mövcud deyilsə və ya başqa bir şey varsa, hərf F , O və ya L , init F hərfini oxumuş kimi davranacaq.

SIGPWR/ etc / powerstatusun istifadəsi cəlbedicidir. Init ilə əlaqə yaratmaq istəyən kimsə, / dev / initctl nəzarət kanalını istifadə etməlidir - bu barədə daha ətraflı məlumat üçün sysvinit paketinin mənbə koduna baxın .

Start səviyyəsini dəyişdirmək üçün tələb olunduqda, SIGTERM xəbərdarlıq siqnunu yeni işləmə səviyyəsində müəyyən edilməyən bütün proseslərə göndərir. Daha sonra bu prosesləri SIGKILL sinyali vasitəsilə zorla sonlandırmadan 5 saniyə gözləyir. Qeyd edək ki, bütün bu proseslər (və onların nəslindən olanlar) əvvəllər özləri üçün yaratdıqları eyni proses qrupunda qalır. Hər hansı proses proses qrupuna mənsubiyyətini dəyişdirsə, bu siqnalları qəbul etməyəcəkdir. Belə proseslər ayrı-ayrı hallarda ləğv edilməlidir.

Telinit

/ sbin / telinit / sbin / init ilə əlaqələndirilir. Bir xarakterli arqument qəbul edir və müvafiq hərəkəti yerinə yetirmək üçün init'i siqnal verir. Aşağıdakı arqumentlər telinit üçün direktivlərdir:

0 , 1 , 2 , 3 , 4 , 5 və ya 6

müəyyən edilmiş run səviyyəsinə keçmək üçün init deyəcəklər.

a , b , c

Yalnız, a , b və ya c səviyyələrinə malik olan / etc / inittab fayl girişlərini işləməyə təşəbbüs göstərin .

Q və ya q

/ etc / inittab faylını yenidən araşdırmaq üçün init deyəcəklər .

Ss

tək istifadəçi rejiminə keçmək üçün init'i demək.

U və ya u

özünü təkrar icra etməyə təşviq etmə (dövlətin qorunması). / Etc / inittab faylının yenidən yoxlanışı baş vermir. Run səviyyəsi Ss12345-dən biri olmalıdır, əks halda tələb səssizcə nəzərə alınmayacaqdır.

telinit , SIGTERM və SIGKILL sinyallerinin göndərilməsi prosesləri arasında nə qədər vaxt gözləmək lazım olduğunu təşəbbüs göstərə bilər. Varsayılan 5 saniyedir, ancaq -t sec seçimi ilə dəyişdirilə bilər.

telinit yalnız müvafiq imtiyazları olan istifadəçilər tərəfindən çağırılmalıdır.

Init ikili yoxlama prosesi ID'sinə baxaraq init və ya telinit olub olmadığını yoxlayır; real init prosesinin kimliyi hər zaman 1dir . Bundan sonra telinitə zəng etmək əvəzinə, qısa istifadə etmək üçün yalnız init istifadə edə bilərsiniz.