it-swarm.com.de

Fix ulimit: Dateien öffnen: Limit kann nicht geändert werden: Operation nicht erlaubt

Ich habe dies auf verschiedenen GNU/Linux-Installationen getestet:

Perl -e 'while(1){open($a{$b++}, "<" ,"/dev/null") or die $b;print " $b"}'

System A und D

Das erste Limit, das ich erreicht habe, ist 1024. Es kann leicht angehoben werden, indem dies in /etc/security/limits.conf eingefügt wird:

*                hard    nofile          1048576

und dann ausführen:

ulimit -n 1048576
echo 99999999 | Sudo tee /proc/sys/fs/file-max

Jetzt geht der Test zu 1048576.

Es scheint jedoch, dass ich es nicht über 1048576 erhöhen kann. Wenn ich 1048577 in limit.conf setze, wird es einfach ignoriert.

Was verursacht das?

System B

Auf System B kann ich nicht einmal 1048576 erreichen:

echo 99999999 | Sudo tee /proc/sys/fs/file-max

/etc/security/limits.conf:

*                hard    nofile          1048576

Hier bekomme ich:

$ ulimit -n 65537
bash: ulimit: open files: cannot modify limit: Operation not permitted
$ ulimit -n 65536
#OK

Woher kam diese Grenze?

System C

Dieses System hat auch das Limit 1048576 in limit.conf und 99999999 in/proc/sys/fs/file-max.

Aber hier ist die Grenze 4096:

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

Wie erhöhe ich das auf (mindestens) 1048576?

(Hinweis für sich selbst: Nicht tun: echo 18446744073709551616 | Sudo tee /proc/sys/fs/file-max)

12
Ole Tange

Prüfe das /etc/ssh/sshd_config enthält:

UsePAM=yes

und das /etc/pam.d/sshd enthält:

session    required   pam_limits.so

Immer noch keine Antwort darauf, warum 1048576 max.

Der 1048576 scheint pro Prozess zu sein. Durch mehrere Prozesse kann diese Grenze überwunden werden.

5
Ole Tange