Sysctl varsayılan değerlerini öğrenmek? (yeniden başlatmadan)


10

Ben değerini değiştirdiyseniz net.core.rmem_maxile sysctlve şimdi varsayılan değerine geri ayarlamak istiyorum.

Yeniden başlatırsam, net.core.rmem_maxvarsayılan değerine geri döner (çünkü geçersiz kılınmaz /etc/sysctl.conf), ancak yeniden başlatmadan bu değeri bilebilir miyim?

İdeal olarak sysctl net.core.rmem_maxdeğiştirmeden önce değeri okumak için koşmalıydım, ama unuttum ...

Yanıtlar:


4

Bu genel olarak mümkün değildir: çekirdek orijinal değerleri korumaz (en azından Linux altında değil ve bu muhtemelen diğer unix varyantları için de geçerlidir). Ayarın değeri bir değişkende saklanır; ayarı değiştirdiğinizde, değişkeni içeren bellek geri döndürülemez şekilde güncellenir.

Çoğu ayar için, değişkenin başlangıç ​​değeri derleme zamanında belirlenen ve çekirdek ikili dosyasında depolanan bir sabittir. Böylece, prensip olarak, varsayılan değeri bulmak için çekirdek ikilinizi kontrol edebilirsiniz. İlgilendiğiniz ayara karşılık gelen sembolü bulmanız ve çekirdek sembolündeki bu simgenin adresini izlemeniz gerekir. Çekirdeğinizi sanal bir makinede başlatmak daha az işe yarar.

Çoğu ayar için çekirdek kaynağına kernel/sysctl.cve diğer dosyalara bakabilirsiniz . Gibi tanımları göreceksiniz

    {
            .procname       = "rmem_max",
            .data           = &sysctl_rmem_max,
            …
    },

(in net/core/sysctl_net_core.c) ile sysctl_rmem_maxdeğişkenin başlangıç ​​durumunu izleyebilirsiniz . Bu bir sabitten başlatılırken, genişletmek için C kodunu okumak biraz zaman alır.


0

OpenBSD makinemde, /etc/sysctl.conf varsayılan sysctl değerlerinin bir demetini listeler, ancak bu liste ayrıntılı değildir.

Muhtemelen en iyi yol, sysctl kodunu okumak veya aynı işletim sistemini çalıştıran bir arkadaşınıza değerleri için sormaktır :)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.