Bien..
$ ulimit -s
8192
$ sudo ulimit -s 16384
$ ulimit -s
8192
¿Por qué ulimit
me falta el respeto de una manera tan bárbara?
Bien..
$ ulimit -s
8192
$ sudo ulimit -s 16384
$ ulimit -s
8192
¿Por qué ulimit
me falta el respeto de una manera tan bárbara?
Respuestas:
ulimit
es shell / proceso específico. Sáltate el sudo
.
$ ulimit -s
8192
$ ulimit -s 16384
$ ulimit -s
16384
sudo
que no haya dado un error al pasar ulimit
; Por lo general, necesita un binario externo, pero ulimit
es 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 sudo
comenzó 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
.