Kerndateigröße mit ulimit

12

Meine Frage bezieht sich wahrscheinlich nicht speziell auf Ubuntu, aber da auf meinem Desktop dieses Betriebssystem ausgeführt wird, bin ich zu diesem Forum gekommen.

Ich versuche, die Größe der Kerndatei mit dem folgenden ulimit -cBefehl zu ändern :

$ 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) 7959
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) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 1024
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

Ändern der Einschränkung:

$ ulimit -c unlimited

Ergebnis beobachten:

$ ulimit -a
core file size          (blocks, -c) unlimited
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 7959
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) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 1024
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

In der Tat wird das Limit geändert. Wenn ich jedoch ein anderes Terminal öffne und den Wert überprüfe, wird in der Größe der Kerndatei immer noch der Wert Null angezeigt.

Fragen:

  1. Werden Änderungen, die mit dem ulimitBefehl vorgenommen wurden, nur auf den aktuellen Prozess angewendet, dh in diesem Fall auf den bash?
  2. Ich starte ein Programm aus der Shell als Vor- oder Hintergrundprozess. Gilt die ulimitÄnderung für einen neuen Prozess?
  3. Wie kann ich sicherstellen, dass alle Benutzerprozesse von dieser Konfiguration betroffen sind?
maximb
quelle
1
Haben Sie danach gesucht, bevor Sie gefragt haben? serverfault.com/questions/637212/increasing-ulimit-on-centos
kenn

Antworten:

10

ulimit ist eine eingebaute Shell und wirkt sich daher nur auf die aktuelle Shell und die von dieser Shell gestarteten Prozesse aus:

$ type ulimit
ulimit is a shell builtin

Von man ulimit:

The  ulimit  utility  shall  set  or report the file-size writing limit
imposed on files written by the shell and its child processes (files of
any  size  may be read). Only a process with appropriate privileges can
increase the limit.

Ja, untergeordnete Prozesse sind betroffen.

Bearbeiten /etc/security/limits.confund starten Sie den Computer neu, um dauerhaft oder für alle Prozesse Grenzwerte festzulegen. Die Beispiele auf der Manpage sind ziemlich gut. Sie müssen nur Folgendes hinzufügen:

username - core unlimited
muru
quelle
Vielen Dank. Durch manpages.ubuntu.com/manpages/bionic/man1/ulimit.1posix.html , ist ulimitauch ein externer Befehl nicht nur ein bash eingebauten Befehl zu sein?
Tim
@Tim zitiert die Seite, auf die Sie verlinkt haben: "Da ulimit die aktuelle Shell-Ausführungsumgebung beeinflusst, wird es immer als reguläre integrierte Shell bereitgestellt."
Muru