taille du fichier principal avec ulimit

12

Ma question n'est probablement pas liée à Ubuntu en particulier, mais depuis mon bureau exécutant ce système d'exploitation, je suis venu sur ce forum.

J'essaie de changer la taille du fichier principal à l'aide de la ulimit -ccommande comme suit:

$ 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

Modification de la limitation:

$ ulimit -c unlimited

Observer le résultat:

$ 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

En effet la limite est modifiée. Cependant, lorsque j'ouvre un autre terminal et vérifie la valeur, je vois toujours une valeur nulle dans la taille du fichier principal.

Des questions:

  1. Les modifications effectuées à l'aide de la ulimitcommande affectent-elles uniquement le processus en cours, c'est-à-dire dans ce cas le bash?
  2. Je lance un programme à partir du shell comme processus d'avant-plan. Le ulimitchangement s'applique-t-il à un nouveau processus?
  3. Comment puis-je m'assurer que tous les processus utilisateur sont affectés par cette configuration?
maximb
la source
1
L'avez-vous recherché avant de le demander? serverfault.com/questions/637212/increasing-ulimit-on-centos
kenn

Réponses:

10

ulimit est un shell intégré, et n'affecte donc que le shell actuel, et les processus démarrés par ce shell:

$ type ulimit
ulimit is a shell builtin

De 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.

Donc, oui, les processus enfants sont affectés.

Pour définir des limites de façon permanente ou pour tous les processus, modifiez /etc/security/limits.confet redémarrez. Les exemples de la page de manuel sont assez bons. Vous avez juste besoin d'ajouter quelque chose comme:

username - core unlimited
muru
la source
Merci. Par manpages.ubuntu.com/manpages/bionic/man1/ulimit.1posix.html , est-ce ulimitaussi une commande externe en plus d'être une commande bash intégrée?
Tim
@Tim citant la page à laquelle vous avez lié: "Puisque ulimit affecte l'environnement d'exécution du shell actuel, il est toujours fourni en tant que shell standard intégré."
muru