Jak usunąć limit rozmiaru pliku zrzutu pamięci

11

Chciałbym zwiększyć maksymalny limit rozmiaru plików zrzutu pamięci jako zwykły użytkownik. Używając bash, mogę ustawić to w następujący sposób:

$ ulimit -c 100

co działa dobrze przy pierwszym ustawieniu. Jednak następnym razem, gdy użyję tego polecenia, mogę ustawić ten limit tylko na wartość nieprzekraczającą 100. Ogólnie rzecz biorąc, mogę ustawić go na dowolną wartość tylko przy pierwszym użyciu tego polecenia od momentu zalogowania. Następnym razem możliwe wartości są ograniczone od góry przez wstępnie ustawioną wartość.

Jak mogę zachować tę trwałość w przypadku wielu zastosowań polecenia?

Peter Bašista
źródło

Odpowiedzi:

9

Odpowiedź Per @Peter Bašista w swoim własnym pytaniu:

Na początku myślałem, że to błąd i dlatego zacząłem to pytanie. Okazało się jednak, że jest to po prostu idealnie poprawne zachowanie. Okazuje się, że obowiązuje tu także powiedzenie RTFM.

Jak man bashujawniono, ulimitwbudowane polecenie ma dodatkowe parametry: -Hdo ustawiania tak zwanych twardych limitów i -S do ustawiania tak zwanych miękkich limitów. Ponadto, jeśli nie podano żadnej z tych opcji, domyślnym zachowaniem jest ulimitpróba ustawienia jednocześnie miękkich i twardych limitów na tę samą wartość. I to był problem.

Teraz jest cytat ze strony podręcznika bash:

Twardy limit nie może zostać zwiększony przez użytkownika innego niż root po ustawieniu;

A więc zaczynamy. ulimitZawsze należy mieć to na uwadze prawidłowe użycie polecenia. Co najważniejsze, nigdy nie należy go używać bez opcji -Hani -Sopcji, chyba że na pewno wiesz, co robisz (czego w tamtym czasie oczywiście nie miałem).

Powinienem był zrobić coś takiego:

Po zalogowaniu: ulimit -H -c unlimited

Za każdym razem, gdy chcę zmienić maksymalny limit wielkości zrzutu rdzenia ulimit -S -c <new size>

To tyle. Mam nadzieję, że to może pomóc komuś, kto może zmagać się z podobnym problemem.

Kevin Bowen
źródło