web-dev-qa-db-fra.com

taille de fichier principale avec ulimit

Ma question ne concerne probablement pas Ubuntu en particulier, mais depuis que mon ordinateur de bureau utilise cet OS, je suis arrivé à ce forum.

J'essaie de modifier la taille du fichier principal à l'aide de la commande ulimit -c 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

Changer 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 changée. Cependant, lorsque j'ouvre un autre terminal et vérifie la valeur, je vois toujours la valeur zéro dans la taille du fichier principal.

Des questions:

  1. Les modifications effectuées à l’aide de la commande ulimit n’affectent-elles que le processus en cours, c’est-à-dire, dans ce cas, bash?
  2. Je lance un programme à partir de Shell en tant que processus préalable. Est-ce que la modification ulimit s'applique à un nouveau processus?
  3. Comment puis-je faire en sorte que tous les processus utilisateur soient affectés par cette configuration?
9
maximb

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 permanentes ou pour tous les processus, éditez /etc/security/limits.conf et redémarrez. Les exemples dans la page de manuel sont assez bons. Vous devez juste ajouter quelque chose comme:

username - core unlimited
8
muru