Bien..
$ ulimit -s
8192
$ sudo ulimit -s 16384
$ ulimit -s
8192
¿Por qué ulimitme falta el respeto de una manera tan bárbara?
Bien..
$ ulimit -s
8192
$ sudo ulimit -s 16384
$ ulimit -s
8192
¿Por qué ulimitme falta el respeto de una manera tan bárbara?
Respuestas:
ulimites shell / proceso específico. Sáltate el sudo.
$ ulimit -s
8192
$ ulimit -s 16384
$ ulimit -s
16384
sudoque no haya dado un error al pasar ulimit; Por lo general, necesita un binario externo, pero ulimites un shell incorporado.
which ulimit. Nada sorprendente al respecto.
La respuesta de Daniel Beck no dice toda la verdad (de hecho es un juego de manos), y no ayuda a las personas que realmente necesitan hacer "sudo ulimit".
El problema es ese
El ejemplo de Daniel solo funciona en una situación muy específica (que afortunadamente es la predeterminada).
Contraejemplo:
$ ulimit -s 8191 # set both hard and soft limits
$ ulimit -s # show current soft limit
8191
$ ulimit -s 16384 # set both hard and soft limits
-bash: ulimit: stack size: cannot modify limit: Operation not permitted
Entonces, estableciste el límite con ulimit -s, y eso fue y estableciste límites suaves y duros. Ahora está bloqueado para configurarlo más alto.
En este punto, puede pensar en intentarlo sudo; pero no funcionará, por lo que escribió Daniel.
$ sudo ulimit -s 16384 # maybe with sudo?
$ ulimit -s
8191
$
Lo que sucedió aquí es que sudocomenzó un nuevo shell, donde se ejecutó ulimit; y en ESA shell, se estableció el nuevo ulimit. Pero entonces ese caparazón terminó su trabajo, fue derribado, y ahora estás de vuelta en tu caparazón anterior con su ulimit anterior.
Prueba:
$ ulimit -s 8191
$ ulimit -s
8191
$ sudo bash
# ulimit -s
8191
# ulimit -s 16384
# ulimit -s # It worked!
16384
# exit
exit
$ ulimit -s # ... but now we're back to the old ulimit.
8191
$
Entonces, ¿por qué funcionó exactamente el ejemplo de Daniel? Debido a los límites duros y blandos predeterminados de ulimit, podría empujar el límite blando al duro. Podemos hacerlo en cámara lenta para mostrar el truco:
$ ulimit -Ss # show the Soft limit
8192
$ ulimit -Hs # show the Hard limit
65532
$ ulimit -s # by default, shows the Soft limit
8192
$ ulimit -s 16384 # set both the Soft and Hard limit
$ ulimit -s # shows the Soft limit
16384
$ ulimit -Hs # but, gotcha! the Hard limit has also been set
16384
$ ulimit -s 16385 # so now we can't go higher
-bash: ulimit: stack size: cannot modify limit: Operation not permitted
$
En resumen: si establece su límite estricto y desea subirlo, no tiene suerte en ese shell , ... a menos que permanezca como superusuario o use algún encantamiento para eliminar privilegios después.
cd.