Ok, finalmente l'ho capito. I limiti che stavo impostando in /etc/security/limits.conf
venivano applicati, ma non venivano applicati al login grafico. Questo può essere verificato in questo modo da una finestra di terminale:
$ ulimit -n
4096
$ su mkasberg
Password:
$ ulimit -n
65535
Ulteriori ricerche mi hanno portato a questa segnalazione di bug, che mi ha indirizzato nella giusta direzione. Per modificare il limite utilizzato dalla shell di login, dobbiamo aggiungere la seguente riga a /etc/systemd/user.conf
:
DefaultLimitNOFILE=65535
Questa modifica funziona, ma influisce solo sul limite flessibile. (Lasciandoci ancora con un limite rigido di 4096.) Per influenzare anche il limite rigido, dobbiamo modificare /etc/systemd/system.conf
con la stessa modifica.
Le modifiche apportate in /etc/pam.d
non erano necessari. Almeno su Ubuntu, funziona già. Inoltre, non è stato necessario modificare le impostazioni per root
e *
in limits.conf. Modifica dei limiti per mkasberg
era sufficiente, almeno per il mio caso d'uso.
In sintesi
Se vuoi aumentare il limite mostrato da ulimit -n
, dovresti:
-
Modifica
/etc/systemd/user.conf
e/etc/systemd/system.conf
con la riga seguente (questa si occupa del login grafico):DefaultLimitNOFILE=65535
-
Modifica
/etc/security/limits.conf
con le seguenti righe (questo si prende cura del login non-GUI):mkasberg hard nofile 65535 mkasberg soft nofile 65535
-
Riavvia il computer per rendere effettive le modifiche.
Non è necessario modificare nulla nel /etc/security/limits.conf
file, viene ignorato se si utilizza systemd.
(riproduce una risposta modificata a un'altra domanda sulla rete...)
Un'alternativa per coloro che preferiscono non modificare il /etc/systemd/system.conf
predefinito e /etc/systemd/user/conf
file:
-
crea un nuovo file
/etc/systemd/system.conf.d/limits.conf
con questi contenuti:[Manager] DefaultLimitNOFILE=65535
-
eseguire
systemctl daemon-reexec
come root -
disconnettiti e accedi di nuovo
-
controlla il tuo nuovo limite con
ulimit -n
.
Fare riferimento al systemd-system.conf
manpage per i dettagli.
TL;DRI ha sentito il bisogno di concentrare le risposte, quindi sono più facili da trovare. Mi ci sono voluti anni per mettere insieme tutti i pezzi per farlo funzionare correttamente...
Ci sono 2 posizioni da considerare.
-
Sessione GUI
$ grep DefaultLimitNOFILE /etc/systemd/system.conf DefaultLimitNOFILE=65535
o meglio qui:
$ grep NOFILE /etc/systemd/system.conf.d/limits.conf DefaultLimitNOFILE=65535
-
ambiente shell
$ grep nofile /etc/security/limits.conf user soft nofile 65535 user hard nofile 65535`
o meglio qui:
$ grep nofile /etc/security/limits.d/user.conf user soft nofile 65535 user hard nofile 65535
-
Dopo aver modificato le impostazioni nei file precedenti, riavvia e poi controlla i limiti con:
ulimit -n -Hn -Sn