Jestem zaskoczony, sudoże nie dał błędu, gdy został zaliczony ulimit; zwykle potrzebuje zewnętrznego pliku binarnego, ale ulimitjest wbudowaną powłoką.
amfetamachina
@amphetamachine Sprawdź which ulimit. Nic w tym dziwnego.
Daniel Beck
Ta odpowiedź jest strasznie myląca i nieprzydatna, nawet jeśli opiera się na ziarnku prawdy.
Hmijail opłakuje powrót
3
Odpowiedź Daniela Becka nie mówi całej prawdy (w rzeczywistości jest to sztuczka zręczna) i nie pomaga ludziom, którzy muszą robić „sudo ulimit”.
Problemem jest
ulimit ma miękkie i twarde ograniczenia
po ustawieniu twardego limitu musisz być superużytkownikiem, aby ustawić go z powrotem na wyższym poziomie
sudo uruchamia nową powłokę; kiedy z niego wyjdziesz, wrócisz do swojej starej ulimit!
Szczegółowe wyjaśnienie
Przykład Daniela działa tylko w bardzo specyficznej sytuacji (która na szczęście jest domyślna).
Przeciwprzykład:
$ 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
Więc ustawiasz limit za pomocą ulimit -s, i to poszło i ustawiasz zarówno miękkie, jak i twarde ograniczenia. Teraz nie możesz ustawić go wyżej.
W tym momencie możesz spróbować sudo; ale to nie zadziała z powodu tego, co napisał Daniel.
Stało się tutaj to, że sudouruchomiono nową powłokę, w której działała ulimit; i w tej powłoce ustawiono nowy ulimit. Ale potem ta skorupa zakończyła pracę, została zburzona, a teraz wróciłeś do poprzedniej powłoki z poprzednią ulimit.
Dowód:
$ 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
$
Dlaczego więc dokładnie działał przykład Daniela? Z powodu domyślnych twardych i miękkich limitów ulimita mógł przesunąć miękki limit na twardy. Możemy to zrobić w zwolnionym tempie, aby pokazać sztuczkę:
$ 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
$
Podsumowując: jeśli ustawisz swój twardy limit i chcesz go podnieść, nie masz szczęścia w tej powłoce , ... chyba że pozostaniesz superużytkownikiem lub użyjesz zaklęcia, aby później upuścić uprawnienia.
cd
.Odpowiedzi:
ulimit
jest specyficzny dla powłoki / procesu. Pomińsudo
.źródło
sudo
że nie dał błędu, gdy został zaliczonyulimit
; zwykle potrzebuje zewnętrznego pliku binarnego, aleulimit
jest wbudowaną powłoką.which ulimit
. Nic w tym dziwnego.Odpowiedź Daniela Becka nie mówi całej prawdy (w rzeczywistości jest to sztuczka zręczna) i nie pomaga ludziom, którzy muszą robić „sudo ulimit”.
Problemem jest
Szczegółowe wyjaśnienie
Przykład Daniela działa tylko w bardzo specyficznej sytuacji (która na szczęście jest domyślna).
Przeciwprzykład:
Więc ustawiasz limit za pomocą
ulimit -s
, i to poszło i ustawiasz zarówno miękkie, jak i twarde ograniczenia. Teraz nie możesz ustawić go wyżej.W tym momencie możesz spróbować
sudo
; ale to nie zadziała z powodu tego, co napisał Daniel.Stało się tutaj to, że
sudo
uruchomiono nową powłokę, w której działałaulimit
; i w tej powłoce ustawiono nowy ulimit. Ale potem ta skorupa zakończyła pracę, została zburzona, a teraz wróciłeś do poprzedniej powłoki z poprzednią ulimit.Dowód:
Dlaczego więc dokładnie działał przykład Daniela? Z powodu domyślnych twardych i miękkich limitów ulimita mógł przesunąć miękki limit na twardy. Możemy to zrobić w zwolnionym tempie, aby pokazać sztuczkę:
Podsumowując: jeśli ustawisz swój twardy limit i chcesz go podnieść, nie masz szczęścia w tej powłoce , ... chyba że pozostaniesz superużytkownikiem lub użyjesz zaklęcia, aby później upuścić uprawnienia.
źródło