EnderUNIX Team.


EnderUNIX İpucu

Arkadaşıma gönder , Ana Sayfa

[ FreeBSD ]

"rc.d Dizinini Kullanarak Servislerin Baslama Sirasini Degistirme" - Bedreddin SAHBAZ - (2005-09-21 00:48:54)   [2416]

Merhabalar,

Bu bilgiyi Apache ile ilgili yasadigim bir sorun sonrasinda edindim. Ben sorunu Apache ile ilgili yasadim, siz baska servislerde yasayabilirsiniz. Olay kisaca soyle. Sunucumda Apache, djbdns, daemontools yazilimlari yuklu. Sistemi ne zaman reboot etsem dmesg -a ciktilarina su hata mesajlari dusuyordu;

[Tue Sep 20 16:07:28 2005] [error] (EAI 8)hostname nor servname provided, or not known: Cannot resolve host name www.sahbaz.name.tr --- ignoring!

ve bu hataya yol acan problem nedeni ile sistem acilsa bile httpd sureclerinin calismasini beklemek sinir bozacak sureler aliyordu. Biraz arastirma ile sorunun kaynagina ulastim. Apache baslama sirasinda httpd.conf dosyasinda tanimlanan domainleri resolve etmeye calisiyor, ancak tinydns henuz baslamadigi ve isteklere cevap vermedigi icin bunu basaramiyordu. Bu durumda islem zaman asimina ugrayana kadar uzun bekleyisler sonucunda httpd surecleri baslatiliyordu. Tek bir domain var iken cok dikkatimi cekmeyen bu olay birkac domain daha eklememden sonra ister istemez gozume batirdi kendini.

Bu sorunu asmak icin yapmam gereken seyin sistemin acilisi sirasinda once svscan servisinin daha sonra apache'nin baslatilmasi oldugunu dusundum. Bunun nasil yapilabilecegi ile ilgili bilgiyi ise FreeBSD kitabimizin 147. sayfasinda buldum. rc.d dizini bu sorunu cozmek icin gerekli araclari bize sagliyor.

Dilerseniz oncelikle bu dizinle ilgili birkac bilgiye yer verelim. rc.d dizininin tam yolu /usr/local/etc dizini altinda. Bu dizin FreeBSD'nin ana servisleri disinda, daha sonradan sisteme yuklenmis olan programlarin acilista baslatilip kapanista sonlandirilmasini saglayan betikleri iceriyor. Hatta sistem yoneticisi sistemin acilisi sirasinda calistirmak istedigi komutlar varsa diledigi komut dosyalarini bu dizine ekleyerek acilista bu komutlarin calismasini da saglayabilir.

Bu dizinde bulunan betiklerin calisma mantigi ise soyle;

Bu dizinde sadece uzantisi .sh olan dosyalar calistirilir. Sistemin acilisi sirasinda betiklere start parametresi, kapanista ise stop parametresi verilir. Dizinde bulunan betikler alfabetik siraya gore calistirilir. Iste isimizi gorecek bilgi burada :) Eger betiklerin calisma sirasini kendimiz belirlemek istersek dosya isimlerinin onune sayı ekleyerek calisma sirasina mudahalede bulunabiliriz. Ornegin benim yasadigim sorunu ele alalim. Sorun yaratan rc.d dizin icerigi su sekilde idi;

zeytin /usr/local/etc/rc.d# ll
total 20
-r-xr-xr-x 1 root wheel 3509 31 Tem 00:09 apache2.sh
-rwxr-xr-x 1 root wheel 2258 19 Tem 18:32 svscan.sh

Not: rc.d nin tum icerigini buraya yazmadim.

Bu durumda acilista alfabetik sira gozonunde bulundurulacagina gore once apache2.sh betigi calistirilmaya calisilacaktir. Ancak svscan calismadigi ve tinydns'i calistirmaya baslamadigi icin Apache httpd.conf dosyasinda gordugu domainlerin cozumlerini yapamayacak ve sizi sinir hastasi edecektir. rc.d dizinimizin icerigini su sekilde degistirirsek;

zeytin /usr/local/etc/rc.d# ll
total 20
-rwxr-xr-x 1 root wheel 2258 19 Tem 18:32 10.svscan.sh

-r-xr-xr-x 1 root wheel 3509 31 Tem 00:09 20.apache2.sh

once svscan.sh betigi calisacak daha sonra apache2.sh betigi calisacak ve sorun olmadan bu servisler baslatilacaktir.

Bazi servisler diger servislere bagimli calisiyor olabilir (Apache orneginde oldugu gibi). Bu gibi durumlarda gerekli siralamayi tespit edip, rc.d dizininde gerekli duzenlemeleri yaparak probleminizi cozebilirsiniz.

Umarim benim gibi sikinti cekenlere bu ipucu yardimci olur.

Saygilarimla..

Arkadaşıma gönder , Ana Sayfa