ulimit: sert ve yumuşak sınırlar arasındaki fark


87

Ulimit'te sert ve yumuşak sınırlar arasındaki fark nedir?

Açık dosya sayısı için 1024 soft limitine ve 10240 hard limitine sahibim. 1024'ten fazla dosya açan programları çalıştırmak mümkündür. Yumuşak limit ne için?


4
Hakkında ulimit -nmı konuşuyorsun Çok düşük değerli bir kabuk çalıştırmayı deneyin ( bash -c 'ulimit -n 4; exec 3>a; exec 4>b; exec 5>c'). Çıktı nedir?
Gilles

Yanıtlar:


77

Sert bir sınır yalnızca kök tarafından yükseltilebilir (herhangi bir işlem onu ​​düşürebilir). Bu nedenle güvenlik açısından kullanışlıdır: kök dışı bir işlem zor bir sınırı geçemez. Ancak, root dışı bir sürecin çocuklarından daha düşük bir limite sahip olamaması sakıncalıdır.

İşlem tarafından herhangi bir zamanda yumuşak bir sınır değiştirilebilir. Bu yüzden, süreçler işbirliği içinde olduğu sürece uygundur, ancak güvenlik açısından iyi değildir.

Yumuşak sınırlar için tipik bir kullanım örneği ulimit -Sc 0, hata ayıkladığınız belirli bir işlem için bunları etkinleştirme seçeneğini korurken çekirdek dökümlerini ( ) devre dışı bırakmaktır ( (ulimit -Sc unlimited; myprocess)).

ulimitKabuk komut etrafında sarıcı setrlimitsistem çağrısı, bu yüzden kesin dokümanları bulabilirsiniz yer zaten.

Bazı sistemlerin tüm sınırları uygulamayabileceğini unutmayın. Spesifik olarak, bazı sistemler dosya tanımlayıcılarındaki işlem başına limitleri desteklemez (Linux yapar); sizinki değilse, shell komutu no-op olabilir.


6
Yumuşak limitler için +1 kullanım durumu. Yerleşik küme boyutu sınırı ( ulimit -m, RLIMIT_RSS), artık Linux üzerinde geçerli olmayan bir sınırlamaya bir örnektir. Sanal hafıza sınırı ( ulimit -v, RLIMIT_AS) yine de çalışıyor.
Adam Zalcman,

@Gilles, süreci yeniden başlatmadan mı demek istiyorsun, yumuşak sınırı değiştirdiğimizde hemen etki edebilir mi?
Ryan

1
@Ryan Evet, bir program istediği zaman kendi yumuşak sınırını çağırarak değiştirebilir setrlimit(elbette, kök olarak çalıştırılmadıkça, sabit sınırın izin verdiği ölçüde). Programların çoğunda kullanıcının bunu yapmasına izin veren bir komut yoktur, ancak programa bir hata ayıklayıcıyla iliştirmeyi ve bir setrlimitarama yapmasını deneyebilirsiniz , ya da Linux altında arayabilir prlimit(bunun için herhangi bir kabuk bilmiyorum) Yarar).
Gilles

1
Artık bir prlimitkabuk aracı var.
telcoM

0

Zor sınır güvenlik amaçlıdır. Kök olmayan bir kullanıcı için, sabit sınırı yalnızca o anda ayarlanan sabit sınırdan düşürebilir; Onu artıramaz. Sert sınırın arttırılması sadece kök kullanıcı tarafından yapılabilir (ya da bundan emin değilsiniz. Kök olmayan bir kullanıcının yapabileceği, süreçleri için [0, zor limit] aralığında olabilecek bir limit (yumuşak limit adı verilen) seçmektir. Süreçlerde görülen ve dikkate alınan yumuşak limit.

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.