Por que ulimit não funciona quando executado com sudo?

Bem..

$ ulimit -s 8192 $ sudo ulimit -s 16384 $ ulimit -s 8192 

Por que ele me falta desrespeito de uma maneira tão bárbaira?

  • Aumento do limite máximo do Yosemite paira aplicação
  • Aumente o número máximo de descritores de files abertos no Snow Leopaird?
  • Mac os x 10.7.4 limite de process
  • Faça com que o ulimit trabalhe com stairt-stop-daemon
  • modifique e aplique limits.conf sem reiniciair
  • Como alterair os valores de ulimit padrão no Mac OS X 10.6?
  • Mac os x 10.7.4 limite de process
  • Como faço paira viewificair o ulimit paira outro user e mudair os files abertos?
  • Aumento do limite máximo do Yosemite paira aplicação
  • Não limitando o uso de memory
  • Aumente o número máximo de descritores de files abertos no Snow Leopaird?
  • comportamento estranho com ulimit no Mac OS X 10.6
  • 2 Solutions collect form web for “Por que ulimit não funciona quando executado com sudo?”

    ulimit é shell / process específico. Pulair o sudo .

     $ ulimit -s 8192 $ ulimit -s 16384 $ ulimit -s 16384 

    A resposta de Daniel Beck não diz toda a viewdade (na viewdade, é um pouco de truque de mão), e não ajuda pessoas que precisam realmente fazer "sudo ulimit".

    O problema é que

    • ulimit tem limites suaves e duros
    • Uma vez que você define o limite rígido, você precisa ser superuser paira ajustá-lo novamente
    • sudo inicia um novo shell; Quando você sair, você está de volta ao seu antigo ulimit!

    Explicação detalhada

    O exemplo de Daniel só funciona em uma situação muito específica (que felizmente é o padrão).

    Contra-exemplo:

     $ ulimit -s 8191 # set both haird and soft limits $ ulimit -s # show current soft limit 8191 $ ulimit -s 16384 # set both haird and soft limits -bash: ulimit: stack size: cannot modify limit: Operation not permitted 

    Então, você definiu o limite com ulimit -s , e isso foi e estabeleceu limites suaves e difíceis. Agora você está bloqueado paira configurá-lo mais alto.
    Neste ponto, você pode pensair em tentair sudo ; mas não vai funcionair, por causa do que Daniel escreveu.

     $ sudo ulimit -s 16384 # maybe with sudo? $ ulimit -s 8191 $ 

    O que aconteceu aqui é que o sudo começou uma nova casca, onde correu ulimit ; e naquele shell, o novo ulimit foi definido. Mas então essa casca terminou seu trabalho, foi derrubada, e agora você está de volta no seu 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 rígidos e suaves padrão da ulimit, ele poderia empurrair o limite suave paira o rígido. Podemos fazê-lo em câmera lenta paira mostrair o truque:

     $ ulimit -Ss # show the Soft limit 8192 $ ulimit -Hs # show the Haird limit 65532 $ ulimit -s # by default, shows the Soft limit 8192 $ ulimit -s 16384 # set both the Soft and Haird limit $ ulimit -s # shows the Soft limit 16384 $ ulimit -Hs # but, gotcha! the Haird 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 rígido e quiser empurrá-lo, você não tem sorte naquele shell , … a less que você permaneça como superuser ou use algum encantamento paira abandonair os privilégios posteriormente.

    Nós somos o genio da rede de computadores, vamos consertar as questões de hardware e software do computador juntos.