Sistem Parametreleri
Önceki XXX. Oylum - Sistem Yönetimi Sonraki
Sistem Parametreleri
Bu bölümde çeşitli sistem parametrelerinin okunması ve belirtilmesi için kullanılan sysctl işlevinden bahsedilecektir.
Bu kısımdaki semboller sysctl.h dosyasında bildirilmiştir.
int sysctl
(int    *isimler,
 int     isim_uzunluğu,
 void   *eski_değer,
 size_t *eski_değer_uzn,
 void   *yeni_değer,
 size_t  yeni_değer_uzn)
işlev
sysctl işlevi belirtilen sistem parametresini ya okur ya da belirler. Bu parametreler o kadar çoktur ki, burada hepsinin listelenmesi pratik olmayacaktır. Fakat bazı örnekler verilebilir:
  • ağ alan adları
  • sayfalama parametreleri
  • Ağ adres çözümleme protokolü (ARP) zaman aşımı
  • açılabilecek dosyalarını azami sayısı
  • kök dosya sistemi aygıtı
  • çekirdeğin derleme zamanı
Kullanılabilir parametrelerin tamamı çekirdek yapılandırmasına bağlıdır ve sistem çalışırken yüklenebilir modüllerin yüklenmesi ve kaldırılması ile kısmi olarak değiştirilebilir.
sysctl ile ilgili sistem parametreleri bir hiyerarşik dosya sistemindeki gibi bir hiyerarşik yapıda düzenlenmiştir. Belli bir parametreyi belirtmek için, bir dosyanın dosya yolu ile belirtilmesine benzer şekilde parametreyi yapı üzerinde bir yol ile belirtebilirsiniz. Yolu oluşuran her eleman bir tamsayı ile belirtilir ve bu tamsayıların her biri için sysctl.h dosyasında bir makro tanımlanmıştır. isimler bir tamsayılar dizisi şeklinde bir yol belirtir. Yolu oluşturan her bir eleman sırasıyla dizideki bir elemandır. isim_uzunluğu ile dizideki bu elemanların sayısı belirtilir.
Örneğin, tüm sayfalama parametreleri için yolun ilk elemanı CTL_VM değeridir. Serbest sayfa eşikleri için yolun ikinci elemanı VM_FREEPG değeridir. Bu durumda serbest sayfa eşiklerini almak için isimler dizisini CTL_VM ve VM_FREEPG elemanlarını içeren bir dizi olarak belirtip, isim_uzunluğu = 2 yapılır.
Bir parametre değerinin biçimi parametreye bağlıdır. Kimi zaman bir tamsayı, kimi zaman bir ASCII dizge, kimi zaman özenle oluşturulmuş bir yapıdır. Yukarıdaki örnekte görüldüğü gibi serbest sayfa eşiklerinin kullanıldığı durumda parametre değeri çeşitli tamsayılar içeren bir yapıdır.
Her durumda, dönen parametrenin değerinin adresi için eski_değer argümanını kullanabilir ve bu tamponun boyutunu *eski_değer_uzn ile belirtebilirsiniz. *eski_değer_uzn çift görevlidir, çünkü ayrıca dönen değerin gerçek uzunluğu da burada döndürülür.
Eğer parametre değerinin dönmesini istemiyorsanız eski_değer için boş gösterici belirtebilirsiniz.
Bir parametreye değer atamak isterseniz yeni değerin adresini ve uzunluğu yeni_değer ve yeni_değer_uzn ile belirtin. Bunu istemiyorsanız yeni_değer için boş göserici belirtin.
Bir parametrenin o anki değerini okuyup yeni bir değer atamak için aynı sysctl çağrısını kullanabilirsiniz.
Her sistem parametresi için bir dosyanın izinlerine benzeyen erişim izinleri vardır ve bunlar bir paramatrenin okunması ve değiştirilmesi ile ilgili izinlerdir. Amaca uygun olarak her parametrenin sahibinin süper kullanıcı ve grubunun 0 olduğu kabul edilir. Böylece bu etkin kullanıcı ya da grup kimliğine sahip süreçler sistem parametrelerinde daha yüksek erişim iznine sahip olur. Dosyalardaki durumun tersine süper kullanıcı bütün sistem parametrelerinde tam yetkili değildir, çünkü bazı parametre değerleri asla değiştirilemeyecek biçimce tasarlanmıştır.
sysctl başarılı olursa sıfır ile döner. Aksi takdirde -1 ile döner ve errno değişkenine hata durumu atanır. Tüm sistem çağrılarına uygulanan hata durumlarına ek olarak aşağıdaki errno kodları olası diğer hataları belirtir:
EPERM
Sürecin, sistem parametresinin yolu üzerindeki elemanlardan birine erişim yetkisi yok ya da sistem parametresinin kendisine istenen yolla (okuma ya da yazma) erişim izni yok
ENOTDIR
isim'in karşılığı olan bir sistem parametresi yok
EFAULT
eski_değer bir boş gösterici değil ama eski_değer_uzn sıfır belirtilmiş, dolayısyla değer döndürecek yer yok
EINVAL
  • Sürecin belirttiği değer parametre için uygun değil
  • Sistem parametresinin dönüş değeri için ayrılan yer yetersiz
ENOMEM
Bu değer sistem parametresini dönüş değeri için ayrılan yerin çok küçük olması durumunda EINVAL hata durumundan daha doğru bir hata durumu belirtir.
Linux çekirdekli ve proc dosya sistemli bir sisteminiz varsa çoğu sistem parametresine proc dosya sisteminin sys dizinindeki dosyaları okuyarak ya da onlara yazarak erişebilirsiniz. sys dizini, parametre yapısıyla aynı hiyerarşiye sahiptir. Örneğin serbest sayfa eşiklerini göstermek için komut satırında şu komutu verin:
# cat /proc/sys/vm/freepages
Bazı sistem parametrelerini okumak veya belirtmek için kullanılan biraz daha geleneksel ve daha geniş kullanım alanı bulan ama pek genel amaçlı olmayan bazı GNU C kütüphanesi işlevleri:
Önceki Üst Ana Başlık Sonraki
Bağlama, Ayırma, Yeniden Bağlama Başlangıç XXXI. Oylum - Sistem Yapılandırma Parametreleri
Bir Linux Kitaplığı Sayfası