man/system_admin
man · Sistem Yönetimi

$ sysctl

Bölüm 8 · Sistem Yönetimi

çekirdek durumunu al veya ayarla

Sözdizimi

     sysctl [-bdeFhilNnotqWx] [-B bufsize] [-f filename] name[=value[,value]] ...
     sysctl [-bdeFhlNnotqWx] [-B bufsize] -a

Açıklama

sysctl aracı, çekirdek durumunu alır ve uygun yetkiye sahip süreçlerin çekirdek durumunu ayarlamasına izin verir. Alınacak veya ayarlanacak durum, nokta ile ayrılmış bileşenler kümesi olarak tanımlanan bir “Yönetim Bilgi Tabanı” (“Management Information Base” - “MIB”) stili ad kullanılarak belirtilir.

Aşağıdaki seçenekler mevcuttur:

  • -A: -o -a seçeneğine eşdeğerdir (uyumluluk için).

  • -a: CTLFLAG_SKIP bayrağı aracılığıyla listelenmesi engellenen veya opak olanlar dışındaki tüm mevcut değerleri listeler. Komut satırında bir veya daha fazla değişken adı belirtilmişse bu seçenek yoksayılır.

  • -b: Değişkenlerin değerini ham, ikili (binary) formatta çıktı vermeye zorlar. Değişken adları yazdırılmaz ve sonlandırıcı yeni satır karakterleri çıktıya eklenmez. Bu seçenek çoğunlukla tek bir değişkenle kullanımda yararlıdır.

-B bufsize sysctl'den okunacak tampon bellek boyutunu bufsize olarak ayarlar. Bu durum, değişken uzunluğa sahip olan ve 0 test (probe) değerinin geçerli bir uzunluk olduğu sysctl değişkenleri için gereklidir.

  • -d: Değişkenin değeri yerine açıklamasını yazdırır.

  • -e: Değişkenlerin adı ve değerini ‘=’ ile ayırır. Bu, tekrar sysctl aracına girdi olarak beslenebilecek bir çıktı üretmek için kullanışlıdır. -N veya -n seçeneklerinden biri belirtilmişse ya da bir değişken ayarlanıyorsa bu seçenek yoksayılır.

-f dosya_adı Her satırında bir ad ve değer çifti içeren bir dosya belirtir. sysctl öncelikle belirtilen dosyayı okuyup işler ve ardından komut satırı argümanındaki ad ve değer çiftlerini işler.

  • -F: Değişkenin biçimini yazdırır. Bu, değişkenin türünü tanımlayan ek bir bilgidir ve en çok clockinfo, timeval ve loadavg gibi struct (yapı) türleri ile kullanışlıdır.

  • -h: Çıktıyı makine yerine insan tarafından okunabilecek şekilde biçimlendirir.

  • -i: Bilinmeyen OID'leri yoksayar. Amaç, sysctl'in farklı makinelerden (hepsi mutlaka tam olarak aynı yazılımı çalıştırmıyor olabilir) veri toplamak için kullanımını kolaylaştırmaktır.

  • -l: Değişkenlerin değerleriyle birlikte uzunluklarını da gösterir. Bu seçenek -N seçeneğiyle birleştirilemez.

  • -N: Değerleri değil, yalnızca değişken adlarını gösterir. Bu, özellikle programlanabilir tamamlama sunan kabuklar (shells) için kullanışlıdır. Değişken adlarının zsh(1) (ports/shells/zsh) kabuğunda tamamlanmasını etkinleştirmek için aşağıdaki kodu kullanın:

listsysctls () { set -A reply $(sysctl -AN ${1%.*}) } compctl -K listsysctls sysctl

Değişken adlarının tcsh(1) kabuğunda tamamlanmasını etkinleştirmek için şunu kullanın:

complete sysctl 'n/*/sysctl -Na/'

  • -n: Değişken adlarını göstermez. Bu seçenek, kabuk değişkenlerini ayarlamak için kullanışlıdır. Örneğin, sayfa boyutunu (pagesize) psize değişkenine kaydetmek için şunu kullanın:

set psize=sysctl -n hw.pagesize

  • -o: Opak değişkenleri gösterir (normalde gizlenirler). Değerin ilk on altı baytının hex dökümünün yanı sıra biçimi ve uzunluğu da yazdırılır.

  • -q: sysctl tarafından standart hataya (stderr) gönderilen bazı uyarıları bastırır.

  • -t: Değişkenin türünü yazdırır.

  • -W: Yalnızca yazılabilir değişkenleri görüntüler. Çalışma zamanında ayarlanabilir (tunable) sysctl değişkenleri kümesini belirlemek için kullanışlıdır.

  • -X: -x -a seçeneğine eşdeğerdir (uyumluluk için).

  • -x: -o seçeneği gibidir, ancak yalnızca ilk birkaç baytı yerine tüm değerin hex dökümünü yazdırır.

sysctl'den elde edilebilecek bilgiler tam sayılar (integers), dizeler (strings) ve opak (opaque) türlerden oluşur. sysctl aracı yalnızca birkaç opak türü tanır ve geri kalanı için hex dökümlerine başvurur. Opak bilgiler, ps(1), systat(1) ve netstat(1) gibi özel amaçlı programlar tarafından alındığında çok daha kullanışlıdır.

Dize ve tam sayı bilgileri aşağıda özetlenmiştir. Bu değişkenlerin ayrıntılı bir açıklaması için sysctl(3) sayfasına bakın.

Değiştirilebilir (changeable) sütunu, uygun yetkiye sahip bir sürecin değeri değiştirip değiştiremeyeceğini belirtir. Dize ve tam sayı değerleri sysctl kullanılarak ayarlanabilir.

Ad Tür Değiştirilebilir hw.activecpu integer hayır hw.busfrequency integer hayır hw.busfrequency_max integer hayır hw.busfrequency_min integer hayır hw.byteorder integer hayır hw.cacheconfig struct hayır hw.cachelinesize integer hayır hw.cachesize struct hayır hw.cpu64bit_capable integer hayır hw.cpufamily integer hayır hw.cpufrequency integer hayır hw.cpufrequency_max integer hayır hw.cpufrequency_min integer hayır hw.cpusubtype integer hayır hw.cputhreadtype integer hayır hw.cputype integer hayır hw.l1dcachesize integer hayır hw.l1icachesize integer hayır hw.l2cachesize integer hayır hw.l3cachesize integer hayır hw.logicalcpu integer hayır hw.logicalcpu_max integer hayır hw.memsize integer hayır hw.ncpu integer hayır hw.packages integer hayır hw.pagesize integer hayır hw.physicalcpu integer hayır hw.physicalcpu_max integer hayır hw.tbfrequency integer hayır kern.argmax integer hayır kern.bootargs string hayır kern.boottime struct hayır kern.clockrate struct hayır kern.coredump integer evet kern.corefile string evet kern.flush_cache_on_write integer evet kern.hostid integer evet kern.hostname string evet kern.job_control integer hayır kern.maxfiles integer evet kern.maxfilesperproc integer evet kern.maxnbuf integer evet kern.maxproc integer evet kern.maxprocperuid integer evet kern.maxvnodes integer evet kern.msgbuf integer evet kern.nbuf integer hayır kern.netboot integer hayır kern.ngroups integer hayır kern.nisdomainname string evet kern.num_files integer hayır kern.num_tasks integer hayır kern.num_taskthreads integer hayır kern.num_threads integer hayır kern.num_vnodes integer hayır kern.nx integer evet kern.osrelease string hayır kern.osrevision integer hayır kern.ostype string hayır kern.osversion string evet kern.posix1version integer hayır kern.procname string evet kern.safeboot integer hayır kern.saved_ids integer hayır kern.secure_kernel integer hayır kern.securelevel integer evet kern.singleuser integer hayır kern.sleeptime struct hayır kern.slide integer hayır kern.stack_depth_max integer hayır kern.stack_size integer hayır kern.sugid_coredump integer evet kern.sugid_scripts integer evet kern.symfile string hayır kern.usrstack integer hayır kern.usrstack64 integer hayır kern.uuid string hayır kern.version string hayır kern.waketime struct hayır machdep.cpu.address_bits.physical integer hayır machdep.cpu.address_bits.virtual integer hayır machdep.cpu.brand integer hayır machdep.cpu.brand_string string hayır machdep.cpu.cache.L2_associativity integer hayır machdep.cpu.cache.linesize integer hayır machdep.cpu.cache.size integer hayır machdep.cpu.core_count integer hayır machdep.cpu.cores_per_package integer hayır machdep.cpu.extfamily integer hayır machdep.cpu.extfeature_bits integer hayır machdep.cpu.extfeatures string hayır machdep.cpu.extmodel integer hayır machdep.cpu.family integer hayır machdep.cpu.feature_bits integer hayır machdep.cpu.features string hayır machdep.cpu.leaf7_feature_bits integer hayır machdep.cpu.leaf7_features string hayır machdep.cpu.logical_per_package integer hayır machdep.cpu.max_basic integer hayır machdep.cpu.max_ext integer hayır machdep.cpu.microcode_version integer hayır machdep.cpu.model integer hayır machdep.cpu.processor_flag integer hayır machdep.cpu.signature integer hayır machdep.cpu.stepping integer hayır machdep.cpu.thread_count integer hayır machdep.cpu.tlb.data.large integer hayır machdep.cpu.tlb.data.large_level1 integer hayır machdep.cpu.tlb.data.small integer hayır machdep.cpu.tlb.data.small_level1 integer hayır machdep.cpu.tlb.inst.large integer hayır machdep.cpu.tlb.inst.small integer hayır machdep.cpu.tlb.shared integer hayır machdep.cpu.ucupdate integer evet machdep.cpu.vendor string hayır machdep.cpu.xsave.extended_state integer hayır machdep.tsc.deep_idle_rebase integer evet machdep.tsc.frequency integer hayır machdep.tsc.nanotime.generation integer hayır machdep.tsc.nanotime.shift integer hayır net.inet.ip.forwarding integer evet net.inet.ip.portrange.first integer evet net.inet.ip.portrange.hifirst integer evet net.inet.ip.portrange.hilast integer evet net.inet.ip.portrange.last integer evet net.inet.ip.portrange.lowfirst integer evet net.inet.ip.portrange.lowlast integer evet net.inet.ip.redirect integer evet net.inet.ip.ttl integer evet net.inet.udp.checksum integer evet net.inet.udp.maxdgram integer evet vm.loadavg struct hayır vm.swapusage struct hayır user.bc_base_max integer hayır user.bc_dim_max integer hayır user.bc_scale_max integer hayır user.bc_string_max integer hayır user.coll_weights_max integer hayır user.cs_path string hayır user.expr_nest_max integer hayır user.line_max integer hayır user.posix2_c_bind integer hayır user.posix2_c_dev integer hayır user.posix2_char_term integer hayır user.posix2_fort_dev integer hayır user.posix2_fort_run integer hayır user.posix2_localedef integer hayır user.posix2_sw_dev integer hayır user.posix2_upe integer hayır user.posix2_version integer hayır user.re_dup_max integer hayır user.stream_max integer hayır user.tzname_max integer hayır

hw.ncpu özniteliğinin kullanımdan kaldırıldığını ve bunun yerine daha spesifik MIB'lerden biri olan hw.logicalcpu, hw.logicalcpu_max, hw.physicalcpu veya hw.physicalcpu_max özniteliklerinin kullanılması gerektiğini unutmayın.

Dosyalar

<sys/sysctl.h> üst düzey tanımlayıcılar, ikinci düzey çekirdek ve donanım tanımlayıcıları ve kullanıcı düzeyindeki tanımlayıcılar için tanımlamalar <sys/socket.h> ikinci düzey ağ tanımlayıcıları için tanımlamalar <sys/gmon.h> üçüncü düzey profil oluşturma tanımlayıcıları için tanımlamalar <vm/vm_param.h> ikinci düzey sanal bellek tanımlayıcıları için tanımlamalar <netinet/in.h> üçüncü düzey İnternet tanımlayıcıları ve dördüncü düzey IP tanımlayıcıları için tanımlamalar <netinet/icmp_var.h> dördüncü düzey ICMP tanımlayıcıları için tanımlamalar <netinet/udp_var.h> dördüncü düzey UDP tanımlayıcıları için tanımlamalar

Çıkış Durumu

sysctl aracı başarı durumunda 0 ile, bir hata oluştuğunda ise >0 değeriyle sonlanır.

Örnekler

     Örneğin, sistemde izin verilen maksimum süreç sayısını öğrenmek için aşağıdaki istek
     kullanılır:

	   sysctl kern.maxproc

     UID başına izin verilen maksimum süreç sayısını 1000 olarak ayarlamak için aşağıdaki istek
     kullanılır:

	   sysctl kern.maxprocperuid=1000

     Sistem saat hızı (clock rate) hakkında bilgi şu şekilde alınabilir:

	   sysctl kern.clockrate

     Yük ortalaması (load average) geçmişi hakkında bilgi şu şekilde alınabilir:

	   sysctl vm.loadavg

     Bunlardan çok daha fazla değişken mevcuttur ve bunların daha derin anlamlarını aramak için
     en iyi ve muhtemelen tek yer şüphesiz tanımlandıkları kaynak kodlardır.

Uyumluluk

-w seçeneği kullanımdan kaldırılmıştır ve sessizce yoksayılır.

Ayrıca Bakınız

sysctl(3), sysctl.conf(5)

Geçmiş

sysctl aracı ilk olarak 4.4BSD ile ortaya çıkmıştır.

FreeBSD 2.2 sürümünde sysctl önemli ölçüde yeniden düzenlenmiştir.