Я удивлен sudo, не дал ошибку, когда прошло ulimit; обычно требуется внешний двоичный файл, но ulimitэто встроенная оболочка.
амфетахин
@amphetamachine Проверьте which ulimit. Ничего удивительного в этом нет.
Даниэль Бек
Этот ответ ужасно вводит в заблуждение и бесполезен, даже если основан на зерне правды.
hmijail скорбит по отставке
3
Ответ Даниэля Бека не говорит всей правды (на самом деле это своего рода ловкость рук) и не помогает людям, которым действительно нужно делать «sudo ulimit».
Проблема в том, что
Улимит имеет мягкие и жесткие ограничения
как только вы установите жесткий предел, вы должны быть суперпользователем, чтобы установить его выше
sudo запускает новую оболочку; когда вы выходите из него, вы возвращаетесь к своему старому ulimit!
Детальное объяснение
Пример Даниэля работает только в очень специфической ситуации (к счастью, по умолчанию).
контрпример:
$ 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
Итак, вы установили лимит с помощью ulimit -s, и это пошло и установить и мягкие и жесткие ограничения. Теперь вы заблокированы от установки выше.
В этот момент вы можете подумать попробовать sudo; но это не сработает из-за того, что написал Даниил.
Здесь произошло то, что sudoзапустило новую оболочку, где она работала ulimit; и в этой оболочке был установлен новый ulimit. Но затем эта оболочка закончила свою работу, была разрушена, и теперь вы вернулись в предыдущую оболочку с ее предыдущим ulimit.
Доказательство:
$ 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
$
Так почему именно пример Даниила сработал? Из-за стандартных и жестких ограничений ulimit по умолчанию он может перенести мягкий предел на жесткий. Мы можем сделать это в замедленном темпе, чтобы показать хитрость:
$ 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
$
В итоге: если вы установили свой жесткий лимит и хотите его увеличить, вам не повезло в этой оболочке , ... если только вы не останетесь суперпользователем или не воспользуетесь каким-либо заклинанием, чтобы впоследствии отбросить привилегии.
cd
.Ответы:
ulimit
является специфичным для оболочки / процесса. Пропуститьsudo
.источник
sudo
, не дал ошибку, когда прошлоulimit
; обычно требуется внешний двоичный файл, ноulimit
это встроенная оболочка.which ulimit
. Ничего удивительного в этом нет.Ответ Даниэля Бека не говорит всей правды (на самом деле это своего рода ловкость рук) и не помогает людям, которым действительно нужно делать «sudo ulimit».
Проблема в том, что
Детальное объяснение
Пример Даниэля работает только в очень специфической ситуации (к счастью, по умолчанию).
контрпример:
Итак, вы установили лимит с помощью
ulimit -s
, и это пошло и установить и мягкие и жесткие ограничения. Теперь вы заблокированы от установки выше.В этот момент вы можете подумать попробовать
sudo
; но это не сработает из-за того, что написал Даниил.Здесь произошло то, что
sudo
запустило новую оболочку, где она работалаulimit
; и в этой оболочке был установлен новый ulimit. Но затем эта оболочка закончила свою работу, была разрушена, и теперь вы вернулись в предыдущую оболочку с ее предыдущим ulimit.Доказательство:
Так почему именно пример Даниила сработал? Из-за стандартных и жестких ограничений ulimit по умолчанию он может перенести мягкий предел на жесткий. Мы можем сделать это в замедленном темпе, чтобы показать хитрость:
В итоге: если вы установили свой жесткий лимит и хотите его увеличить, вам не повезло в этой оболочке , ... если только вы не останетесь суперпользователем или не воспользуетесь каким-либо заклинанием, чтобы впоследствии отбросить привилегии.
источник