tamaño del archivo central con ulimit


12

Mi pregunta probablemente no esté relacionada con Ubuntu en particular, pero desde mi escritorio con este sistema operativo, vine a este foro.

Estoy tratando de cambiar el tamaño del archivo principal usando el ulimit -ccomando de la siguiente manera:

$ 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

Cambiar la limitación:

$ ulimit -c unlimited

Observando el resultado:

$ 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

De hecho, el límite ha cambiado. Sin embargo, cuando abro otro terminal y verifico el valor, todavía veo un valor cero en el tamaño del archivo central.

Preguntas:

  1. ¿Los cambios realizados con el ulimitcomando afectan solo al proceso actual, es decir, en este caso el bash?
  2. Lanzo un programa desde shell como un proceso anterior o posterior. ¿Se ulimitaplica el cambio a un nuevo proceso?
  3. ¿Cómo puedo hacer que todos los procesos del usuario se vean afectados con esta configuración?

Respuestas:


10

ulimit es un shell integrado y, por lo tanto, solo afecta al shell actual y a los procesos iniciados por ese 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.

Entonces, sí, los procesos secundarios se ven afectados.

Para establecer límites de forma permanente o para todos los procesos, edite /etc/security/limits.confy reinicie. Los ejemplos en la página de manual son bastante buenos. Solo necesita agregar algo como:

username - core unlimited

Gracias. Por manpages.ubuntu.com/manpages/bionic/man1/ulimit.1posix.html , ¿es ulimittambién un comando externo además de ser un comando bash incorporado?
Tim

@Tim citando la página a la que se vinculó: "Dado que ulimit afecta el entorno de ejecución de shell actual, siempre se proporciona como un shell integrado normal".
muru
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.