Kök olmayan kullanıcılar için neden 4096 max açık dosyayı geçemiyor?


12

Ben artırmak gibi olamaz nofilebu sorunla ilgili her Stack Exchange cevabı aşağıdaki rağmen Ubuntu 14.04 üzerinde kök olmayan kullanıcılar için sınırı. Şimdiye kadar var:

$ cat /etc/security/limits.d/custom.conf
@www-data hard nofile 50000
@www-data soft nofile 50000
# even tried specifying the username directly:
myuser hard nofile 50000
myuser soft nofile 50000

$ grep 'limits' /etc/pam.d/common-session*
/etc/pam.d/common-session:session required        pam_limits.so
/etc/pam.d/common-session-noninteractive:session required        pam_limits.so

$ cat /proc/sys/fs/file-max
101232

Yeniden başlatıldı, giriş yapıldı ve:

$ ulimit -n 4097
-bash: ulimit: open files: cannot modify limit: Operation not permitted

Bir şekilde hala root olmayan kullanıcılar için maksimum 4096 limit gibi görünüyor.


Ubuntu 16.10 masaüstünde de aynı sorunu yaşıyorum . Ne
denersem

Yanıtlar:


12

Ubuntu 14.04 kullanarak, tarif edilen zor limiti elde ettim:

user@notebook:~$ ulimit -Hn 4096  

Ulimit kullanarak düşürebilirim, ancak bunu açıklayamadığım gibi, arttırmayabilirim. Ulimit'in kılavuzunda açıklandığı gibi:

sadece root zor limiti artırabilir

Ben /etc/security/limits.confde bunun gibi daha yüksek bir limit koymaya çalıştım :

user hard nofile 9999 

ve yeni bir giriş ssh localhost -l useryapmam yeni limiti verdi:

user@notebook:~$ ulimit -Hn 9999

Umarım bu sizin için de işe yarar.


Teşekkürler TomTomTom. /Etc/security/limits.d/custom.conf adresinde zaten böyle bir değişiklik var. İstediğiniz gibi /etc/security/limits.conf dosyasına doğrudan girmeyi denedim ve hala "bash: ulimit: open files: limitini değiştiremiyorum: İşleme izin verilmedi" alıyorum.
Kafein Koma

Ben - sadece tahmin et - iki nedenden biri, neden senin için işe yaramıyor:
TomTomTom

1
Eksik yorumu düzenlemek çok uzun sürdü. İşte başlıyoruz: Ben - sadece tahmin - iki nedenden biri, bunun sizin için neden işe yaramadığını: 1. /etc/security/limits*giriş mekanizmanız tarafından okunamıyor - henüz bilinmeyen bir nedenden dolayı. 2. Sabit limitiniz başka bir yerde 4096'ya ayarlandı ve "sadece kök artabilir ...". Profillerinizi .bashrc(kabuğunuza bağlı olarak) gibi kontrol edebilir veya /etcsınırların belirlenebileceği diğer yerleri kontrol edebilirsiniz find /etc | grep -e ulimit -e 4096 -e nofile. BTW: ssh denedin mi? Ve: /etc/ssh/sshd.confnedense PAM’dan kaçınmak için değiştiniz mi?
TomTomTom

Evet, tüm girişler ssh ile yapılır. UsePAM'i devre dışı bıraktım-birkaç kılavuz bunu yalnızca ssh-key tabanlı girişlere izin vermenin bir parçası olarak tavsiye etti. Sadece sorun olup olmadığını görmek için geçici olarak açmayı deneyeceğim. Teşekkürler!
Kafein Coma

Afaik, PAM okumanız gereken şeydir /etc/security/limits*- bunu kontrol etmek için PAM'ı etkinleştirmeyi deneyebilirsiniz. PAM’in ne tür bir fark yarattığını ve sonuçları bildireceğini görmesini engellemeyi deneyeceğim. --- Evet! bu kadar! PAM devre dışı bırakıldığında limitim 4096'dır, ancak 9999 inç olarak ayarlanmıştır /etc/security/limits.conf.
TomTomTom

4

Bu makale , sanırım sorununuzu giderir.

Temelde mevcut kaynakları arttırmak için ulimit komutunu kullanmalısınız.

Örneğin:

Maksimum açık dosya tanımlayıcı sayısını görüntülemek için aşağıdaki komutu kullanın:

cat /proc/sys/fs/file-max

Sert ve yumuşak değerleri görmek için komutu aşağıdaki gibi verin:

# ulimit -Hn
# ulimit -Sn

Httpd veya oracle kullanıcısının sert ve yumuşak değerlerini görmek için komutu aşağıdaki gibi verin:

# su - username

Maksimum dosya sayısını sabitlemek için, çekirdek değişkeninde / proc / sys / fs / file-max değişkeninde yeni bir değer ayarlayarak (kök olarak oturum açın) maksimum açık dosya sayısını artırabilirsiniz:

# sysctl -w fs.file-max=100000

Yukarıdaki komut, sınırı 100000 dosyaya zorlar. /etc/sysctl.confDosyayı düzenlemeniz ve aşağıdaki satırı koymanız gerekir, böylece yeniden başlattıktan sonra ayar olduğu gibi kalır. Bunu yapmak için, aşağıdaki gibi bir config yönergesi ekleyin:

fs.file-max = 100000

Dosyayı kaydedin ve kapatın. Kullanıcıların değişikliklerin geçerli olması için çıkış yapıp tekrar giriş yapması veya yalnızca aşağıdaki komutu yazması gerekir:

# sysctl -p

Ayarlarınızı komutla doğrulayın:

# cat /proc/sys/fs/file-max

veya:

# sysctl fs.file-max

Yukarıdaki prosedür, sistem çapında dosya tanımlayıcıları (FD) limitlerini belirler, ancak dosyayı httpddüzenleyerek /etc/security/limits.confdosyayı düzenleyerek /etc/security/limits.confve limitleri aşağıdaki gibi ayarlayarak kullanıcıyı (veya diğer kullanıcıları) belirli limitlerle sınırlayabilirsiniz:

httpd soft nofile 4096
httpd hard nofile 10240

Sonra onları kontrol edin:

# su - httpd
$ ulimit -Hn
$ ulimit -Sn

Diğer Linux dağıtımlarında sorun yaşarsanız, kontrol edin /etc/pam.d/loginve pam_limits.soetkinleştirildiğinden emin olun , örneğin;

session required pam_limits.so

2
Merhaba Brooke. Ne yazık ki, o makalenin önerilerini zaten denedim. 'Ulimit -Hn' benim için yeniyken; çarpmaya devam ettiğim sınır olan 4096'yı basıyor.
Kafein Coma

0

Eğer bu bir Servis ise limiti /etc/systemd/system/{ServiceName}.serviceeklemeye ayarlamayı deneyebilirsiniz.LimitNOFILE=65536


Ubuntu 14.04 varsayılan olarak systemd kullanmıyor.
sayı5

Ubuntu 16.04, Tomcat 8 benim için çalıştı
Arjang
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.