ulimit
é específico do shell / do processo. Ignore o sudo
.
$ ulimit -s
8192
$ ulimit -s 16384
$ ulimit -s
16384
Bem ..
$ ulimit -s
8192
$ sudo ulimit -s 16384
$ ulimit -s
8192
Por que o ulimit
me desrespeita de maneira tão bárbara?
A resposta de Daniel Beck não diz toda a verdade (na verdade, é uma espécie de truque) e não ajuda as pessoas que precisam realmente fazer "sudo ulimit".
O problema é que
O exemplo de Daniel só funciona em uma situação muito específica (que por sorte é a padrão).
Contra-exemplo:
$ 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
Então, você define o limite com ulimit -s
, e isso ajusta os limites de hardware e disco rígido. Agora você está impedido de configurá-lo mais alto.
Neste ponto, você pode pensar em experimentar sudo
; mas não vai funcionar, por causa do que Daniel escreveu.
$ sudo ulimit -s 16384 # maybe with sudo?
$ ulimit -s
8191
$
O que aconteceu aqui é que sudo
iniciou um novo shell, no qual correu ulimit
; e nesse shell, o novo ulimit foi definido. Mas então esse shell terminou seu trabalho, foi demolido e agora você está de volta ao shell anterior com o ulimit anterior.
Prova:
$ 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
$
Então por que exatamente o exemplo de Daniel funcionou? Por causa dos limites hard e soft padrão do ulimit, ele poderia empurrar o limite suave para o hard. Podemos fazer isso em câmera lenta para mostrar o truque:
$ 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
$
Em resumo: se você definir seu limite máximo e quiser aumentá-lo, você está sem sorte nesse shell , ... a menos que você permaneça como superusuário ou use algum encantamento para soltar privilégios depois.
Tags ulimit