erfordern Änderungen in /etc/security/limits.conf einen Neustart?

144

Benötigen Änderungen /etc/security/limits.confeinen Neustart, bevor sie wirksam werden?

Wenn ich beispielsweise ein Skript habe, in dem die folgenden Grenzwerte festgelegt sind /etc/security/limits.conf, muss das System neu gestartet werden, damit diese Grenzwerte wirksam werden?

* hard nofile 94000
* soft nofile 94000
* hard nproc 64000
* soft nproc 64000
Alexej Magura
quelle
2
Logout sollte reichen
UVV
Bearbeiten Sie die Datei /etc/security/limits.d/90-nproc.conf und starten Sie Ihr System neu

Antworten:

108

Nein, aber Sie sollten alle aktiven Sitzungsfenster schließen. Sie erinnern sich noch an die alten Werte. Mit anderen Worten, melden Sie sich ab und wieder an. Jede neue Remotesitzung oder eine lokale sichere Shell wirkt sich auf die Änderungen der Grenzwerte aus .

Slyx
quelle
17
Was ist, wenn ich die Grenzwerte für einen Benutzer festlegen möchte, der keine Anmeldung hat, beispielsweise, wenn ich die nofileGrenzwerte 94000für den mongodbBenutzer festlegen möchte ? Wie mache ich das ohne Neustart? Muss ich den mongodbDienst nur neu starten ?
Alexej Magura
2
@AlexejMagura Mit dem prlimitBefehl können Sie die Einschränkungen für die Ausführung von Prozessen ändern .
Bratchley
7
@ Gilles, danke für die Genauigkeit, ich habe meine Antwort bearbeitet, um Mehrdeutigkeiten zu vermeiden. Das Starten eines neuen Dienstes mit sudo service mongodb restartgenügt jedoch, um den Dienst mit den neuen Grenzwerten laufen zu lassen.
Slyx
6
Wenn Sie Ubuntu verwenden und Mongodb durch einen Neustart gestartet wird, hat das Ändern dieser Grenzwerte keine Auswirkungen auf Mongodb. Da upstart/ etc / security config nicht gelesen wird , müssen Sie die Zeilengruppe in der Konfigurationsdatei für den Start festlegen limit.
HVNSweeting
5
Es ist ein anderes Problem. upstartVom Design her werden die in festgelegten Grenzwerte ignoriert /etc/security/limits.conf.
Slyx,
35

Wenden Sie die Änderungen direkt auf einen laufenden Prozess an, wenn Sie prlimit installiert haben (im Lieferumfang von util-linux-2.21 enthalten).

prlimit --pid <pid> --<limit>=<soft>:<hard>

zum Beispiel

prlimit --pid 12345 --nofile=1024:2048

Hier beziehen

RAM
quelle
29

So legen Sie vorübergehend das Limit für offene Dateien für den Benutzer fest, unter dem Sie gerade angemeldet sind (z. B. 'root'): Sie können den ulimitBefehl auch verwenden , um die Werte in Ihrer aktuellen Shell zu ändern. Harte Limits können jedoch nur nach unten angepasst werden, es sei denn, Sie sind root.

Beispiel:

# ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 62449
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 1024
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

So ändern Sie den Wertnofile auf 94000 :

ulimit -n 94000
Boogy
quelle
15

Limits werden von einem übergeordneten Prozess an seine untergeordneten Prozesse vererbt. Prozesse, die als Root ausgeführt werden, können die Grenzwerte beliebig ändern. andere Prozesse können die harten Grenzen nicht erhöhen. Somit wirken sich die durch den Anmeldeprozess festgelegten harten Grenzen auf alle Prozesse in einer Sitzung aus.

Wenn Sie Änderungen /etc/security/limits.confvornehmen, wirkt sich dies auf alle neuen Sitzungen und Prozesse in diesen neuen Sitzungen aus. Es hat keine Auswirkungen auf bereits ausgeführte Prozesse oder auf Prozesse, die von bereits ausgeführten Prozessen gestartet wurden.

Wenn Sie also einige Limits erhöhen müssen, müssen Sie sich entweder abmelden und wieder anmelden oder eine andere Sitzung starten (z. B. mit ssh localhostoder auf einer anderen Konsole).

Gilles
quelle
4

Um die Antwort von @ Tombart zu zitieren

Diese Grenzwerte werden nach dem Neustart angewendet.

Wenn Sie die Änderungen ohne Neustart übernehmen möchten, /etc/pam.d/common-sessionfügen Sie am Ende der Datei die folgende Zeile hinzu:

session required pam_limits.so
serv-inc
quelle