İSİM¶
init - süreç kontrol başlangıcı
telinit - çalışma seviyesini değiştirir
KULLANIM¶
/sbin/init [ -a ] [ -s ] [ -b ] [ -z xxx] [ 0123456Ss ]
/sbin/telinit [ -t saniye ] [ 0123456sSQqabcUu ]
AÇIKLAMA¶
init, bütün süreçlerin atasıdır.
init'in birincil görevi
/etc/inittab içinde saklı
betikten süreçler oluşturmaktır (ayrıntılar
için
inittab(5)'a bakınız). Bu dosyada,
init'in
çeşitli hatlar üzerinden kullanıcıların
bağlanmasını sağlamak üzere
getty(1)
süreçleri oluşturmasını sağlayan girdiler
vardır. Ayrıca belirli sistemler tarafından ihtiyaç
duyulan özerk süreçleri de kontrol eder.
ÇALIŞMA SEVİYELERݶ
Çalışma seviyesi, sistemde varolan süreçlerden
belirtilmiş olanların çalışmasını
sağlayan yazılım yapılandırmasına verilen
addır. Her bir çalışma seviyesi için,
init
tarafından başlatılan süreçler
/etc/inittab
dosyası içinde tanımlıdır.
init sekiz
değişik çalışma seviyesinden birinde olabilir:
0-6,
S veya
s. Çalışma seviyesi
telinit kullanılarak yetkili bir kullanıcı
tarafından,
init'e uygun bir sinyal gönderilerek
değiştirilir.
Çalışma seviyeleri
0,
1 ve
6
ayrılmış seviyelerdir.
0 sistemi durdurmak için,
6 tekrar başlatmak için ve
1 ise tek
kullanıcılı kipe döndürmek için
kullanılır.
S seviyesi doğrudan kullanıcı ile
alakalı değildir, daha çok çalışma seviyesi
1'e girerken çalıştırılan betikleri ifade
eder. Bu konuda daha fazla bilgi için
shutdown(8) ve
inittab(5)'a bakınız.
7-9 arası çalışma seviyeleri de geçerlidir ama bu
seviyeler hakkında belgelendirme yapılmamıştır.
Çünkü "geleneksel" Unix türevleri bu seviyeleri
kullanmazlar. Sırf merakınız gidermek için belirteyim ki
S ve
s aynıdır ve aynı çalışma
seviyesini belirtirler.
SİSTEM AÇILIŞI¶
Çekirdek açılış töreninin son halkası olarak
init çalıştırıldığı zaman,
içinde öntanımlı çalışma seviyesi girdisi
olup olmadığını kontrol etmek için
/etc/inittab dosyasına bakılır (bakınız
inittab(5)). Bu öntanımlı çalışma
seviyesi, sistem açılışı sonrası
düşülecek çalışma seviyesini belirtir. Bu
tür bir girdi yok ise veya
/etc/inittab dosyası yok ise,
konsoldan bir çalışma seviyesi girilmesi gerekir.
Çalışma seviyeleri
S veya
s, sistemi tek
kullanıcı kipe sokar ve
/etc/initab dosyasına
ihtiyaç duymazlar. Tek kullanıcılı kipte,
/dev/console üzerinde bir root kullanıcı kabuğu
açılır.
Tek kullanıcılı kipine girilince,
init konsolun
ioctl(2) durumunu
/etc/ioctl.save dosyasında okur.
Şayet bu dosya yok ise,
init hattı
9600 baud ve
CLOCAL ile ilklendirir.
init tek kullanıcılı kipi
terk ederken konsolun
ioctl ayarlarını bu dosyaya kaydeder.
Böylece tekrar tek kullanıcılı kipe geçildiği
zaman bu ayarları kullanabilir.
Çok kullanıcılı kipe ilk sefer girişte,
kullanıcılar bağlanmadan önce dosya sisteminin
bağlanmasını sağlayabilmek için
boot ve
bootwait girdileri
init tarafından
çalıştırılır. Daha sonra çalışma
seviyesi ile eşleşen bütün girdiler
çalıştırılır.
Yeni bir süreç başlatılırken,
init ilk olarak
/etc/initscript dosyasının var olup olmadığını
kontrol eder. Şayet var ise, bu dosyada bulunan betikler süreci
başlatmak için kullanılır.
Bir alt süreç her sonlandığında, bunun sebebi
init tarafından
/var/run/utmp ve
/var/log/wtmp
içine yazılır (bu dosyaların mevcut olup
olmadığı önce kontrol edilir).
ÇALIŞMA SEVİYELERİNİN
DEĞİŞTİRİLMESݶ
Belirtilen bütün süreçler
çalıştırıldıktan sonra
init; kendi
oluşturduğu bir sürecin sonlandırılmasını,
bir enerji kesme sinyalinin veya
telinit tarafından
gönderilen bir çalışma seviyesi değiştirme
sinyalinin gelmesini bekler. Bu üç durumdan biri
gerçekleşirse,
/etc/inittab dosyasını tekrar
kontrol eder. Bu dosyaya yeni girdiler eklenmiş olabilir. Bununla
birlikte,
init bunlardan birinin gerçekleşmesini bekler.
Durumlara anında tepki verebilmek için,
telinit'in
Q
veya
q komutu ile
init'in
/etc/inittab
dosyasını tekrar kontrol etmesi sağlanabilir. Şayet
init tek kullanıcılı kipte değilse ve bir enerji
kesme sinyali alırsa (SIGPWR), gidip
/etc/powerstatus
dosyasını okur. Daha sonra bu dosyanın içeriğine
bağlı olarak şu komutlardan birini uygular:
- F(AIL)
- Enerji KGK tarafından sağlanıyordur ve bir
süre sonra enerji kesilecektir. powerwait ve powerfail
girdileri çalıştırılır.
- O(K)
- Enerji tekrar gelmiştir. powerokwait girdisi
çalıştırılır.
- L(OW)
- KGK'nın akülerindeki enerji azalmaktadır ve
enerji kesilecektir. Powerfailnow girdisi
çalıştırılır.
Şayet /etc/powerstatus yok ise veya
F,
O veya
L
harflerinden farklı bir şey ihtiva ediyorsa,
init,
F
harfini okuduğunu kabul eder ve ona göre davranır.
SIGPWR ve
/etc/powerstatus kullanımı tavsiye edilmez.
init ile etkileşimli kipe geçmek isteyen birisinin
/dev/initctl'yi kullanması daha uygun olur. Bu konuda daha
ayrıntılı bilgi için
sysvinit paketinin kaynak
kodundaki belgelere bakınız. Çalışma seviyesi
değiştirme isteği
init'e iletilince;
init yeni
seviyede tanımlanmamış olan bütün süreçlere
SIGTERM sinyali gönderir. Daha sonra bu süreçleri
sonlandırmadan önce 5 saniye bekler. 5 saniye sonra
SIGKILL
sinyali gönderir. NOT:
init bütün süreçlerin
ve onların alt süreçlerinin aynı süreç grubu
içinde kaldığını varsayar. Şayet herhangi bir
süreç, süreç grubunu üyeliğini
değiştirmiş ise, o süreç bu sonlandırma
sinyalini almaz. Bu tür süreçlerin ayrıca
sonlandırılması gerekir.
TELINIT¶
/sbin/telinit, /sbin/init'e bir bağdır. Tek karakterlik
argümanlar ve sinyalleri kabul eder. Aşağıdaki
argümanlar
telinit'e talimat olarak verilebilir:
- 0,1,2,3,4,5 veya 6
- init'in, belirtilen çalışma
seviyesine geçmesi istenir.
- a,b veya c
- init'in, sadece a,b veya c
çalışma seviyesi için verilmiş olan
/etc/inittab dosyası girdilerini
çalıştırması istenir.
- Q veya q
- init'in, /etc/inittab dosyasını
tekrar kontrol etmesi istenir.
- S veya s
- init'in tek kullanıcılı kipe
geçmesi istenir.
- U veya u
- init'in, durumunu koruyarak, kendini tekrar
başlatması istenir. /etc/inittab dosyası tekrar
okunmaz. Çalışma seviyeleri Ss12345'den birisi
olmalıdır. Aksi taktirde istek sessizce yok sayılır.
Herhangi bir hata dönmez.
Ayrıca
telinit,
init'e SIGTERM ve SIGKILL sinyalleri
arasında ne kadar beklemesi gerektiğini de söyleyebilir.
Öntanımlı değer 5 saniyedir fakat
-t
seçeneği kullanılarak bu değer değiştirilebilir.
telinit, sadece uygun yetkiye sahip kullanıcılar
tarafından kullanılabilir.
init
çalıştırılabiliri, kendinin
init mi yoksa
telinit mi olduğunu anlamak için süreç
numarasını kontrol eder, gerçek
init'in süreç
numarası daima
1'dir. Buradan,
telinit kullanmak yerine,
init'in kısa yol olarak kullanılabileceği de ortaya
çıkar.
ORTAM DEĞİŞKENLERݶ
init, çalıştırdığı alt
süreçler için aşağıdaki ortam
değişkenlerini ayarlar:
- PATH
- /usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin
- INIT_VERSION
- init sürüm numarası. Bir betiğin
doğrudan init tarafından
çalıştırıp
çalıştırmadığını anlamak
açısından faydalıdır.
- RUNLEVEL
- Geçerli sistem çalışma seviyesi.
- PREVLEVEL
- Bir önceki sistem çalışma seviyesi.
Çalışma seviyesinin değiştirilmesi durumunda,
öncekini tespit etme açısından faydalıdır.
- CONSOLE
- Sistem konsolu. Gerçekte çekirdekten miras
alınır. Şayet bu seçenek ayarlanmaz ise, init
tarafından öntanımlı olarak /dev/console
kullanılır.
AÇILIŞ SEÇENEKLERݶ
Açılış esnasında
init'e seçenekler
girilebilir (LILO içinden).
init şu seçenekleri kabul
eder:
- -s, S, single
- Tek kullanıcı kipinde açılış.
Bu kipte /etc/inittab dosyası incelenir ve açılış
rc betikleri, tek kullanıcılı kip kabuğu
başlatılmadan önce
çalıştırılır.
- 1-5
- Açılış sonrası girilecek
çalışma seviyesini belirtir.
- -b, emergency
- Herhangi bir açılış betiğini
çalıştırmadan doğrudan tek
kullanıcılı kip kabuğuna düşer.
- -a, auto
- Çekirdek, kullanıcının
müdahalesine gerek kalmadan öntanımlı komut
satırı ile yüklenmişse, LILO önyükleyicisi
komut satırına "auto"
sözcüğünü ekler. Şayet bu bulunursa,
init AUTOBOOT ortam değişkenine "yes"
değerini atar. Bunu bir güvenlik ölçüsü
olarak kullanamayacağınızı unutmayın,
çünkü kullanıcı komut satırını
kendi de tanımlayabilir.
- -z xxx
- -z'ye verilen argüman yok sayılır. Bu
seçeneği komut satırını biraz daha
genişletmek için kullanabilirsiniz, böylece
yığıt içinde daha fazla yer kaplaması
sağlanmış olur. init komut satırını
büyük bir ustalıkla yönetir, böylece ps(1)
geçerli çalışma seviyesini gösterebilir.
ARAYÜZ¶
init iletiler için; /dev içindeki /dev/initctl fifosunu dinler.
Arayüz tam olarak bitmemiş ve belgeleme işlemleri de
bitirilmemiştir. İlgilenenler /src dizinindeki
init kaynak
kodlarının tar arşivindeki initreq.h dosyasına
bakabilirler.
SİNYALLER¶
init çeşitli sinyallere tepki verir:
- SIGHUP
- init /etc/initrunlvl ve /var/log/initrunlvl
dosyalarını arar. Şayet bu dosyalardan birisi var ise ve
bir ASCII çalışma seviyesi içeriyorsa, init bu
çalışma seviyesine geçer. Bu sadece geçmişe
uyum için konulmuştur. Normal durumlarda (dosyanın
olmadığı durumlarda) init, telinit'in
-q seçeneği ile
çalıştırıldığını kabul eder
ve buna göre davranır.
- SIGUSR1
- Bu sinyali alınca, init kendi denetim fifosu
olan /dev/initctl'u kapatır ve tekrar açar. /dev dizinin
tekrar bağlandığı zamanlarda,
açılış betikleri için oldukça
faydalıdır.
- SIGINT
- CTRL-ALT-DEL üçlemesine
basıldığı durumlarda, çekirdek init'e bu
sinyali gönderir. O da ctrlaltdel eylemini etkinleştirir.
- SIGWINCH
- KeyboardSignal tuşuna basıldığı
durumlarda, çekirdek init'e bu sinyali gönderir. O da
kbrequest eylemini etkinleştirir.
UYUM¶
init, System V init ile uyumludur. /etc/init.d ve
/etc/rc{çalışmaseviyesi}.d dizinleri içindeki betikler ile
birlikte uyum içinde çalışır. Eğer sisteminiz
geleneksel yapıya uyuyorsa, /etc/init.d içinde bu betiklerin
nasıl çalıştığını açıklayan
bir README dosyası bulacaksınız.
İLGİLİ DOSYALAR¶
/etc/inittab
/etc/initscript
/dev/console
/etc/ioctl.save
/var/run/utmp
/var/log/wtmp
/dev/initctl
UYARILAR¶
init, süreçlerin ve bu süreçlerin soyundan gelen
diğer süreçlerin orijinal süreç grupları
içinde kaldıklarını varsayar. Şayet bir
süreç, süreç grubunu değiştirirse,
init
bu süreci öldüremez ve aynı uçbirim hattında iki
süreç ile karşılaşabilirsiniz.
TANI KOYMA¶
Şayet bir girdi 2 dakika içinde 10 kereden fazla
çoğaltılıyorsa,
init, bu girdi satırında
bir hata olduğunu düşünecek, sistem konsolundan bir hata
iletisi verecek ve 5 dakika geçmeden veya bir sinyal almadan bu girdinin
tekrar çoğalmasına izin vermeyecektir. Buradaki amaç,
/etc/inittab içinde hatalı bir girdinin sistem
kaynaklarını yok etmesini önlemektir.
YAZAN¶
Miquel van Smoorenburg <miquels (at) cistron.nl> tarafından
yazılmıştır, ilk kılavuz sayfası Michael Haardt
<u31b3hs (at) pool.informatik.rwthaachen.de> tarafından
yazılmıştır.
İLGİLİ BELGELER¶
bash(1),
getty(1),
kill(1),
login(1),
initscript(5),
inittab(5),
utmp(5),
runlevel(8),
shutdown(8).
ÇEVİREN¶
Yalçın Kolukısa <yalcink01 (at) yahoo.com>, Şubat 2004